legacy
sh123 2022-07-24 14:29:15 +03:00
rodzic e2fccd300e
commit f9ec484593
3 zmienionych plików z 33 dodań i 28 usunięć

Wyświetl plik

@ -33,6 +33,14 @@ public class LogItemActivity extends AppCompatActivity {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) actionBar.setDisplayHomeAsUpEnabled(true);
// get group name to decide if filtering should be enabled
Bundle bundle = getIntent().getExtras();
_groupName = null;
if (bundle != null) {
_groupName = (String)bundle.get("groupName");
}
// view models
_logItemViewModel = new ViewModelProvider(this).get(LogItemViewModel.class);
_positionItemViewModel = new ViewModelProvider(this).get(PositionItemViewModel.class);
@ -40,16 +48,8 @@ public class LogItemActivity extends AppCompatActivity {
RecyclerView logItemRecyclerView = findViewById(R.id.log_item_recyclerview);
logItemRecyclerView.setHasFixedSize(true);
final LogItemAdapter adapter = new LogItemAdapter(new LogItemAdapter.LogItemDiff());
adapter.setClickListener(v -> {
if (_groupName == null) {
TextView itemView = v.findViewById(R.id.log_view_item_title);
_groupName = itemView.getText().toString();
Intent logItemIntent = new Intent(v.getContext(), LogItemActivity.class);
logItemIntent.putExtra("groupName", _groupName);
v.getContext().startActivity(logItemIntent);
}
});
// log lines list adapter
final LogItemAdapter adapter = new LogItemAdapter(new LogItemAdapter.LogItemDiff(), _groupName == null);
logItemRecyclerView.setAdapter(adapter);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
logItemRecyclerView.setLayoutManager(linearLayoutManager);
@ -59,6 +59,7 @@ public class LogItemActivity extends AppCompatActivity {
RecyclerView logItemGroupRecyclerView = findViewById(R.id.log_item_group_recyclerview);
logItemGroupRecyclerView.setHasFixedSize(true);
// groups adapter
final LogItemGroupAdapter adapterGroup = new LogItemGroupAdapter(new LogItemGroupAdapter.LogItemGroupDiff());
adapterGroup.setClickListener(v -> {
TextView itemView = v.findViewById(R.id.log_view_group_item_title);
@ -74,11 +75,6 @@ public class LogItemActivity extends AppCompatActivity {
_logItemViewModel.getGroups().observe(this, adapterGroup::submitList);
// launch with filter if group name is provided
Bundle bundle = getIntent().getExtras();
_groupName = null;
if (bundle != null) {
_groupName = (String)bundle.get("groupName");
}
if (_groupName == null) {
logItemGroupRecyclerView.setVisibility(View.GONE);
findViewById(R.id.log_item_textview).setVisibility(View.GONE);

Wyświetl plik

@ -1,6 +1,5 @@
package com.radio.codec2talkie.storage.log;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
@ -9,26 +8,22 @@ import androidx.recyclerview.widget.ListAdapter;
public class LogItemAdapter extends ListAdapter<LogItem, LogItemHolder> {
private View.OnClickListener _clickListener;
private final boolean _isClickable;
public LogItemAdapter(@NonNull DiffUtil.ItemCallback<LogItem> diffCallback) {
public LogItemAdapter(@NonNull DiffUtil.ItemCallback<LogItem> diffCallback, boolean isClickable) {
super(diffCallback);
}
public void setClickListener(View.OnClickListener clickListener) {
_clickListener = clickListener;
_isClickable = isClickable;
}
@NonNull
@Override
public LogItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return LogItemHolder.create(parent);
return LogItemHolder.create(parent, _isClickable);
}
@Override
public void onBindViewHolder(LogItemHolder holder, int position) {
LogItem current = getItem(position);
holder.itemView.setOnClickListener(_clickListener);
holder.bind(current.getTimestampEpoch(), current.getSrcCallsign(), current.getLogLine(), current.getIsTransmit());
}

Wyświetl plik

@ -1,5 +1,6 @@
package com.radio.codec2talkie.storage.log;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -11,18 +12,23 @@ import com.radio.codec2talkie.R;
import com.radio.codec2talkie.tools.DateTools;
import com.radio.codec2talkie.tools.TextTools;
public class LogItemHolder extends RecyclerView.ViewHolder {
public class LogItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private final TextView _logItemViewTitle;
private final TextView _logItemViewMessage;
private String _srcCallsign;
private final boolean _isClickable;
private LogItemHolder(View itemView) {
private LogItemHolder(View itemView, boolean isClickable) {
super(itemView);
_logItemViewTitle = itemView.findViewById(R.id.log_view_item_title);
_logItemViewMessage = itemView.findViewById(R.id.log_view_item_message);
_isClickable = isClickable;
itemView.setOnClickListener(this);
}
public void bind(long timestamp, String srcCallsign, String text, boolean isTransmitting) {
_srcCallsign = srcCallsign;
_logItemViewTitle.setText(String.format("%s %s %s",
DateTools.epochToIso8601(timestamp),
isTransmitting ? "→" : "←",
@ -30,9 +36,17 @@ public class LogItemHolder extends RecyclerView.ViewHolder {
_logItemViewMessage.setText(TextTools.addZeroWidthSpaces(text));
}
static LogItemHolder create(ViewGroup parent) {
static LogItemHolder create(ViewGroup parent, boolean isClickable) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.activity_log_view_item, parent, false);
return new LogItemHolder(view);
return new LogItemHolder(view, isClickable);
}
@Override
public void onClick(View v) {
if (!_isClickable) return;
Intent logItemIntent = new Intent(v.getContext(), LogItemActivity.class);
logItemIntent.putExtra("groupName", _srcCallsign);
v.getContext().startActivity(logItemIntent);
}
}