kopia lustrzana https://github.com/sh123/codec2_talkie
Refactor log item group to station
rodzic
ec2ac02d84
commit
60bab818f0
|
@ -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(),
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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(); }
|
||||
|
||||
|
|
|
@ -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;
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
Ładowanie…
Reference in New Issue