master
sh123 2022-09-03 14:23:15 +03:00
rodzic b5ed6a011f
commit 5cee15769f
7 zmienionych plików z 35 dodań i 32 usunięć

Wyświetl plik

@ -27,8 +27,10 @@ import com.radio.codec2talkie.R;
import com.radio.codec2talkie.protocol.aprs.tools.AprsSymbolTable;
import com.radio.codec2talkie.protocol.position.Position;
import com.radio.codec2talkie.settings.PreferenceKeys;
import com.radio.codec2talkie.storage.log.LogItemViewModel;
import com.radio.codec2talkie.storage.position.PositionItem;
import com.radio.codec2talkie.storage.position.PositionItemViewModel;
import com.radio.codec2talkie.storage.station.StationItem;
import com.radio.codec2talkie.storage.station.StationItemViewModel;
import com.radio.codec2talkie.tools.DateTools;
import com.radio.codec2talkie.tools.UnitTools;
@ -60,14 +62,15 @@ public class MapActivity extends AppCompatActivity {
private final HashMap<String, Marker> _objectOverlayItems = new HashMap<>();
private final HashMap<String, Polygon> _objectOverlayRangeCircles = new HashMap<>();
private LogItemViewModel _logItemViewModel;
private StationItemViewModel _stationItemViewModel;
private PositionItemViewModel _positionItemViewModel;
private AprsSymbolTable _aprsSymbolTable;
private String _mySymbolCode;
private boolean _rotateMap = false;
private boolean _showCircles = false;
private LiveData<List<StationItem>> _stationTrack;
private LiveData<List<PositionItem>> _stationTrack;
List<GeoPoint> _stationTrackPoints = new ArrayList<>();
Polyline _stationTrackLine = new Polyline(); //see note below!
@ -124,17 +127,20 @@ public class MapActivity extends AppCompatActivity {
}));
_map.getOverlays().add(_myLocationNewOverlay);
// add data listener
_logItemViewModel = new ViewModelProvider(this).get(LogItemViewModel.class);
_logItemViewModel.getLastPositions().observe(this, lastPositions -> {
for (StationItem lastPosition : lastPositions) {
Log.i(TAG, "new position " + lastPosition.getLatitude() + " " + lastPosition.getLongitude());
// position items
_positionItemViewModel = new ViewModelProvider(this).get(PositionItemViewModel.class);
// station items, add data listener
_stationItemViewModel = new ViewModelProvider(this).get(StationItemViewModel.class);
_stationItemViewModel.getAllStationItems().observe(this, allStations -> {
for (StationItem station : allStations) {
Log.i(TAG, "new position " + station.getLatitude() + " " + station.getLongitude());
// do not add items without coordinate
if (lastPosition.getMaidenHead() == null) continue;
if (addStationPositionIcon(lastPosition)) {
addRangeCircle(lastPosition);
if (station.getMaidenHead() == null) continue;
if (addStationPositionIcon(station)) {
addRangeCircle(station);
} else {
Log.e(TAG, "Failed to add APRS icon for " + lastPosition.getSrcCallsign() + ", " + lastPosition.getSymbolCode());
Log.e(TAG, "Failed to add APRS icon for " + station.getSrcCallsign() + ", " + station.getSymbolCode());
}
}
});
@ -187,8 +193,8 @@ public class MapActivity extends AppCompatActivity {
polygon.setPoints(circlePoints);
}
private void addTrack(List<StationItem> positions) {
for (StationItem trackPoint : positions) {
private void addTrack(List<PositionItem> positions) {
for (PositionItem trackPoint : positions) {
Log.i(TAG, "addPoint " + trackPoint.getLatitude() + " " + trackPoint.getLongitude());
_stationTrackPoints.add(new GeoPoint(trackPoint.getLatitude(), trackPoint.getLongitude()));
}
@ -275,7 +281,7 @@ public class MapActivity extends AppCompatActivity {
_stationTrackPoints.clear();
_stationTrackLine.setPoints(_stationTrackPoints);
_map.getOverlays().add(_stationTrackLine);
_stationTrack = _logItemViewModel.getLastPositions(monitoredMarker.getId());
_stationTrack = _positionItemViewModel.getPositionItems(monitoredMarker.getId());
_stationTrack.observe(this, this::addTrack);
return false;
});

Wyświetl plik

@ -5,7 +5,6 @@ import android.app.Application;
import androidx.lifecycle.LiveData;
import com.radio.codec2talkie.storage.AppDatabase;
import com.radio.codec2talkie.storage.station.StationItem;
import com.radio.codec2talkie.tools.DateTools;
import java.util.List;
@ -14,26 +13,17 @@ public class LogItemRepository {
private final LogItemDao _logItemDao;
private final LiveData<List<LogItem>> _logItemLiveData;
private LiveData<List<LogItem>> _logItemGroupLiveData;
private final LiveData<List<StationItem>> _lastPositions;
public LogItemRepository(Application application) {
AppDatabase appDatabase = AppDatabase.getDatabase(application);
_logItemDao = appDatabase.logItemDao();
_logItemLiveData = _logItemDao.getAllLogItems();
_lastPositions = _logItemDao.getLastPositions();
}
public LiveData<List<LogItem>> getAllLogItems() {
return _logItemLiveData;
}
public LiveData<List<StationItem>> getLastPositions() { return _lastPositions; }
public LiveData<List<StationItem>> getStationPositions(String srcCallsign) {
return _logItemDao.getStationPositions(srcCallsign);
}
public LiveData<List<LogItem>> getLogItems(String groupName) {
return _logItemDao.getLogItems(groupName);
}

Wyświetl plik

@ -14,13 +14,11 @@ public class LogItemViewModel extends AndroidViewModel {
private final LogItemRepository _logItemRepository;
private final LiveData<List<LogItem>> _logItemLiveData;
private final LiveData<List<StationItem>> _lastPositions;
public LogItemViewModel(@NonNull Application application) {
super(application);
_logItemRepository = new LogItemRepository(application);
_logItemLiveData = _logItemRepository.getAllLogItems();
_lastPositions = _logItemRepository.getLastPositions();
}
public LiveData<List<LogItem>> getAllData() {
@ -31,10 +29,6 @@ public class LogItemViewModel extends AndroidViewModel {
return _logItemRepository.getLogItems(groupName);
}
public LiveData<List<StationItem>> getLastPositions() { return _lastPositions; }
public LiveData<List<StationItem>> getLastPositions(String callsign) { return _logItemRepository.getStationPositions(callsign); }
public void deleteAllLogItems() { _logItemRepository.deleteAllLogItems(); }
public void deleteLogItems(String groupName) {

Wyświetl plik

@ -29,7 +29,7 @@ public interface PositionItemDao {
@Query("SELECT * FROM PositionItem ORDER by timestampEpoch DESC")
LiveData<List<PositionItem>> getAllPositionItems();
@Query("SELECT * FROM PositionItem WHERE srcCallsign = :srcCallsign ORDER BY timestampEpoch DESC")
@Query("SELECT * FROM PositionItem WHERE srcCallsign = :srcCallsign ORDER BY timestampEpoch ASC")
LiveData<List<PositionItem>> getPositionItems(String srcCallsign);
@Query("DELETE FROM PositionItem WHERE srcCallsign = :srcCallsign")

Wyświetl plik

@ -38,6 +38,10 @@ public class PositionItemRepository {
});
}
public LiveData<List<PositionItem>> getPositionItems(String srcCallsign) {
return _positionItemDao.getPositionItems(srcCallsign);
}
public void deleteAllPositionItems() {
AppDatabase.getDatabaseExecutor().execute(_positionItemDao::deleteAllPositionItems);
}

Wyświetl plik

@ -4,9 +4,12 @@ import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import com.radio.codec2talkie.tools.DateTools;
import java.util.List;
public class PositionItemViewModel extends AndroidViewModel {
private final PositionItemRepository _positionItemRepository;
@ -16,6 +19,10 @@ public class PositionItemViewModel extends AndroidViewModel {
_positionItemRepository = new PositionItemRepository(application);
}
public LiveData<List<PositionItem>> getPositionItems(String srcCallsign) {
return _positionItemRepository.getPositionItems(srcCallsign);
}
public void deleteAllPositionItems() { _positionItemRepository.deleteAllPositionItems(); }
public void deletePositionItems(String srcCallsign) {

Wyświetl plik

@ -28,8 +28,10 @@ public class StationItemRepository {
if (oldStationItem != null) {
oldStationItem.updateFrom(stationItem);
_stationItemDao.updateStationItem(oldStationItem);
Log.i(TAG, "UPDATE " + oldStationItem.getSrcCallsign());
} else {
_stationItemDao.insertStationItem(stationItem);
Log.i(TAG, "INSERT " + stationItem.getSrcCallsign());
}
});
}