I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit b5b2692c authored by zzz's avatar zzz
Browse files

log update handler

parent cadb6e8c
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ package net.i2p.android.router.activity; ...@@ -3,6 +3,7 @@ package net.i2p.android.router.activity;
import android.app.ListActivity; import android.app.ListActivity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
...@@ -18,8 +19,13 @@ import net.i2p.android.router.R; ...@@ -18,8 +19,13 @@ import net.i2p.android.router.R;
public class LogActivity extends ListActivity { public class LogActivity extends ListActivity {
boolean errorsOnly; boolean errorsOnly;
private Handler _handler;
private Runnable _updater;
private ArrayAdapter<String> _adap;
private TextView _headerView;
final static String ERRORS_ONLY = "errors_only"; final static String ERRORS_ONLY = "errors_only";
private static final int MAX = 250;
@Override @Override
public void onCreate(Bundle savedInstanceState) public void onCreate(Bundle savedInstanceState)
...@@ -54,17 +60,85 @@ public class LogActivity extends ListActivity { ...@@ -54,17 +60,85 @@ public class LogActivity extends ListActivity {
} }
// set the header // set the header
TextView tv = (TextView) getLayoutInflater().inflate(R.layout.logs_header, null); _headerView = (TextView) getLayoutInflater().inflate(R.layout.logs_header, null);
tv.setText(header); _headerView.setText(header);
ListView lv = getListView(); ListView lv = getListView();
lv.addHeaderView(tv, "", false); lv.addHeaderView(_headerView, "", false);
setListAdapter(new ArrayAdapter<String>(this, R.layout.logs_list_item, msgs)); _adap = new ArrayAdapter<String>(this, R.layout.logs_list_item, msgs);
setListAdapter(_adap);
/***
// set the callback // set the callback
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view, int pos, long id) { public void onItemClick(AdapterView parent, View view, int pos, long id) {
// make it bigger or something // make it bigger or something
} }
}); });
***/
_handler = new Handler();
_updater = new Updater();
}
@Override
public void onStart() {
super.onStart();
_handler.removeCallbacks(_updater);
_handler.postDelayed(_updater, 2500);
}
@Override
public void onStop() {
super.onStop();
_handler.removeCallbacks(_updater);
} }
private class Updater implements Runnable {
private int counter;
public void run() {
I2PAppContext ctx = I2PAppContext.getCurrentContext();
if (ctx != null) {
List<String> msgs;
if (errorsOnly) {
msgs = ctx.logManager().getBuffer().getMostRecentCriticalMessages();
} else {
msgs = ctx.logManager().getBuffer().getMostRecentMessages();
}
int sz = msgs.size();
if (sz > 0) {
Collections.reverse(msgs);
String oldNewest = _adap.getCount() > 0 ? _adap.getItem(0) : null;
boolean changed = false;
for (int i = 0; i < sz; i++) {
String newItem = msgs.get(i);
if (newItem.equals(oldNewest))
break;
_adap.insert(newItem, i);
changed = true;
}
int newSz = _adap.getCount();
for (int i = newSz - 1; i > MAX; i--) {
_adap.remove(_adap.getItem(i));
}
if (changed) {
// fixme update header
newSz = _adap.getCount();
String header;
if (newSz == 0) {
header = "No messages";
} else if (newSz == 1) {
header = "1 message";
} else {
header = sz + " messages, newest first";
}
_headerView.setText(header);
_adap.notifyDataSetChanged();
}
}
}
_handler.postDelayed(this, 1500);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment