kopia lustrzana https://github.com/sh123/codec2_talkie
Refactoring
rodzic
b5ed6a011f
commit
5cee15769f
|
@ -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;
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue