Refactor log item group to station

master
sh123 2022-09-03 12:01:45 +03:00
rodzic ec2ac02d84
commit 60bab818f0
8 zmienionych plików z 36 dodań i 39 usunięć

Wyświetl plik

@ -16,11 +16,9 @@ import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintSet;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;
@ -30,7 +28,7 @@ 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.log.group.LogItemGroup;
import com.radio.codec2talkie.storage.log.group.Station;
import com.radio.codec2talkie.tools.DateTools;
import com.radio.codec2talkie.tools.UnitTools;
@ -69,7 +67,7 @@ public class MapActivity extends AppCompatActivity {
private boolean _rotateMap = false;
private boolean _showCircles = false;
private LiveData<List<LogItemGroup>> _stationTrack;
private LiveData<List<Station>> _stationTrack;
List<GeoPoint> _stationTrackPoints = new ArrayList<>();
Polyline _stationTrackLine = new Polyline(); //see note below!
@ -129,7 +127,7 @@ public class MapActivity extends AppCompatActivity {
// add data listener
_logItemViewModel = new ViewModelProvider(this).get(LogItemViewModel.class);
_logItemViewModel.getLastPositions().observe(this, lastPositions -> {
for (LogItemGroup lastPosition : lastPositions) {
for (Station lastPosition : lastPositions) {
Log.i(TAG, "new position " + lastPosition.getLatitude() + " " + lastPosition.getLongitude());
// do not add items without coordinate
if (lastPosition.getMaidenHead() == null) continue;
@ -162,7 +160,7 @@ public class MapActivity extends AppCompatActivity {
}
}
private void addRangeCircle(LogItemGroup group) {
private void addRangeCircle(Station group) {
if (group.getRangeMiles() == 0) return;
String callsign = group.getSrcCallsign();
Polygon polygon = null;
@ -189,15 +187,15 @@ public class MapActivity extends AppCompatActivity {
polygon.setPoints(circlePoints);
}
private void addTrack(List<LogItemGroup> positions) {
for (LogItemGroup trackPoint : positions) {
private void addTrack(List<Station> positions) {
for (Station trackPoint : positions) {
Log.i(TAG, "addPoint " + trackPoint.getLatitude() + " " + trackPoint.getLongitude());
_stationTrackPoints.add(new GeoPoint(trackPoint.getLatitude(), trackPoint.getLongitude()));
}
_stationTrackLine.setPoints(_stationTrackPoints);
}
private boolean addStationPositionIcon(LogItemGroup group) {
private boolean addStationPositionIcon(Station group) {
String callsign = group.getSrcCallsign();
Marker marker = null;
@ -291,7 +289,7 @@ public class MapActivity extends AppCompatActivity {
return true;
}
private String getStatus(LogItemGroup group) {
private String getStatus(Station group) {
double range = UnitTools.milesToKilometers(group.getRangeMiles());
return String.format(Locale.US, "%s %f %f<br>%03d° %03dkm/h %04dm %.2fkm<br>%s %s",
group.getMaidenHead(),

Wyświetl plik

@ -18,7 +18,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.radio.codec2talkie.R;
import com.radio.codec2talkie.storage.log.group.LogItemGroupAdapter;
import com.radio.codec2talkie.storage.log.group.StationAdapter;
import com.radio.codec2talkie.storage.position.PositionItemViewModel;
import java.util.List;
@ -68,7 +68,7 @@ public class LogItemActivity extends AppCompatActivity {
logItemGroupRecyclerView.setHasFixedSize(true);
// groups adapter
final LogItemGroupAdapter adapterGroup = new LogItemGroupAdapter(new LogItemGroupAdapter.LogItemGroupDiff());
final StationAdapter adapterGroup = new StationAdapter(new StationAdapter.LogItemGroupDiff());
adapterGroup.setClickListener(v -> {
TextView itemView = v.findViewById(R.id.log_view_group_item_title);
_logItemLiveData.removeObservers(this);

Wyświetl plik

@ -6,7 +6,7 @@ import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import com.radio.codec2talkie.storage.log.group.LogItemGroup;
import com.radio.codec2talkie.storage.log.group.Station;
import java.util.List;
@ -58,7 +58,7 @@ public interface LogItemDao {
"LEFT OUTER JOIN LogItem log ON (log.srcCallsign = pos.srcCallsign) " +
"GROUP BY pos.srcCallsign " +
"ORDER BY srcCallsign ASC")
LiveData<List<LogItemGroup>> getLastPositions();
LiveData<List<Station>> getLastPositions();
@Query("SELECT pos.timestampEpoch AS timestampEpoch, " +
"pos.srcCallsign AS srcCallsign, " +
@ -77,7 +77,7 @@ public interface LogItemDao {
"pos.directivityDeg AS directivityDeg " +
"FROM PositionItem AS pos WHERE pos.srcCallsign = :srcCallsign " +
"ORDER BY pos.timestampEpoch DESC")
LiveData<List<LogItemGroup>> getStationPositions(String srcCallsign);
LiveData<List<Station>> getStationPositions(String srcCallsign);
@Query("SELECT * FROM LogItem ORDER by timestampEpoch ASC")
LiveData<List<LogItem>> getAllLogItems();

Wyświetl plik

@ -3,10 +3,9 @@ package com.radio.codec2talkie.storage.log;
import android.app.Application;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.Transformations;
import com.radio.codec2talkie.storage.AppDatabase;
import com.radio.codec2talkie.storage.log.group.LogItemGroup;
import com.radio.codec2talkie.storage.log.group.Station;
import com.radio.codec2talkie.tools.DateTools;
import java.util.List;
@ -16,7 +15,7 @@ public class LogItemRepository {
private final LogItemDao _logItemDao;
private final LiveData<List<LogItem>> _logItemLiveData;
private LiveData<List<LogItem>> _logItemGroupLiveData;
private final LiveData<List<LogItemGroup>> _lastPositions;
private final LiveData<List<Station>> _lastPositions;
public LogItemRepository(Application application) {
AppDatabase appDatabase = AppDatabase.getDatabase(application);
@ -29,9 +28,9 @@ public class LogItemRepository {
return _logItemLiveData;
}
public LiveData<List<LogItemGroup>> getLastPositions() { return _lastPositions; }
public LiveData<List<Station>> getLastPositions() { return _lastPositions; }
public LiveData<List<LogItemGroup>> getStationPositions(String srcCallsign) {
public LiveData<List<Station>> getStationPositions(String srcCallsign) {
return _logItemDao.getStationPositions(srcCallsign);
}

Wyświetl plik

@ -6,7 +6,7 @@ import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import com.radio.codec2talkie.storage.log.group.LogItemGroup;
import com.radio.codec2talkie.storage.log.group.Station;
import java.util.List;
@ -15,7 +15,7 @@ public class LogItemViewModel extends AndroidViewModel {
private final LogItemRepository _logItemRepository;
private final LiveData<List<LogItem>> _logItemLiveData;
private LiveData<List<LogItem>> _logItemGroupLiveData;
private final LiveData<List<LogItemGroup>> _lastPositions;
private final LiveData<List<Station>> _lastPositions;
public LogItemViewModel(@NonNull Application application) {
super(application);
@ -32,9 +32,9 @@ public class LogItemViewModel extends AndroidViewModel {
return _logItemRepository.getLogItems(groupName);
}
public LiveData<List<LogItemGroup>> getLastPositions() { return _lastPositions; }
public LiveData<List<Station>> getLastPositions() { return _lastPositions; }
public LiveData<List<LogItemGroup>> getLastPositions(String callsign) { return _logItemRepository.getStationPositions(callsign); }
public LiveData<List<Station>> getLastPositions(String callsign) { return _logItemRepository.getStationPositions(callsign); }
public void deleteAllLogItems() { _logItemRepository.deleteAllLogItems(); }

Wyświetl plik

@ -1,6 +1,6 @@
package com.radio.codec2talkie.storage.log.group;
public class LogItemGroup {
public class Station {
private long timestampEpoch;
private String srcCallsign;
public String dstCallsign;

Wyświetl plik

@ -7,11 +7,11 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListAdapter;
public class LogItemGroupAdapter extends ListAdapter<LogItemGroup, LogItemGroupHolder> {
public class StationAdapter extends ListAdapter<Station, StationHolder> {
private View.OnClickListener _clickListener;
public LogItemGroupAdapter(@NonNull DiffUtil.ItemCallback<LogItemGroup> diffCallback) {
public StationAdapter(@NonNull DiffUtil.ItemCallback<Station> diffCallback) {
super(diffCallback);
}
@ -21,26 +21,26 @@ public class LogItemGroupAdapter extends ListAdapter<LogItemGroup, LogItemGroupH
@NonNull
@Override
public LogItemGroupHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return LogItemGroupHolder.create(parent);
public StationHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return StationHolder.create(parent);
}
@Override
public void onBindViewHolder(LogItemGroupHolder holder, int position) {
LogItemGroup current = getItem(position);
public void onBindViewHolder(StationHolder holder, int position) {
Station current = getItem(position);
holder.itemView.setOnClickListener(_clickListener);
holder.bind(current);
}
public static class LogItemGroupDiff extends DiffUtil.ItemCallback<LogItemGroup> {
public static class LogItemGroupDiff extends DiffUtil.ItemCallback<Station> {
@Override
public boolean areItemsTheSame(@NonNull LogItemGroup oldItem, @NonNull LogItemGroup newItem) {
public boolean areItemsTheSame(@NonNull Station oldItem, @NonNull Station newItem) {
return oldItem.getSrcCallsign().equals(newItem.getSrcCallsign());
}
@Override
public boolean areContentsTheSame(@NonNull LogItemGroup oldItem, @NonNull LogItemGroup newItem) {
public boolean areContentsTheSame(@NonNull Station oldItem, @NonNull Station newItem) {
return oldItem.getSrcCallsign().equals(newItem.getSrcCallsign());
}
}

Wyświetl plik

@ -21,7 +21,7 @@ import com.radio.codec2talkie.tools.UnitTools;
import java.util.Locale;
public class LogItemGroupHolder extends RecyclerView.ViewHolder {
public class StationHolder extends RecyclerView.ViewHolder {
private static final String TAG = RecyclerView.class.getSimpleName();
@ -32,7 +32,7 @@ public class LogItemGroupHolder extends RecyclerView.ViewHolder {
private final LocationManager _locationManager;
private final AprsSymbolTable _symbolTable;
private LogItemGroupHolder(View itemView) {
private StationHolder(View itemView) {
super(itemView);
_logItemViewTitle = itemView.findViewById(R.id.log_view_group_item_title);
_logItemViewDistance = itemView.findViewById(R.id.log_view_group_item_distance);
@ -42,7 +42,7 @@ public class LogItemGroupHolder extends RecyclerView.ViewHolder {
_locationManager = (LocationManager) itemView.getContext().getSystemService(Context.LOCATION_SERVICE);
}
public void bind(LogItemGroup group) {
public void bind(Station group) {
@SuppressLint("MissingPermission") Location loc = _locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc == null) {
_logItemViewDistance.setText("");
@ -73,9 +73,9 @@ public class LogItemGroupHolder extends RecyclerView.ViewHolder {
}
}
static LogItemGroupHolder create(ViewGroup parent) {
static StationHolder create(ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.activity_log_view_group_item, parent, false);
return new LogItemGroupHolder(view);
return new StationHolder(view);
}
}