mirror of
https://github.com/M66B/NetGuard.git
synced 2025-02-25 15:42:53 +00:00
parent
8c624fe0c0
commit
caf0ca574d
3 changed files with 66 additions and 2 deletions
|
@ -28,7 +28,9 @@ import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.support.v4.view.MenuItemCompat;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.SearchView;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
|
@ -36,6 +38,7 @@ import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
|
import android.widget.FilterQueryProvider;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.PopupMenu;
|
import android.widget.PopupMenu;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
@ -54,6 +57,8 @@ public class ActivityLog extends AppCompatActivity {
|
||||||
|
|
||||||
private ListView lvLog;
|
private ListView lvLog;
|
||||||
private LogAdapter adapter;
|
private LogAdapter adapter;
|
||||||
|
private MenuItem menuSearch = null;
|
||||||
|
|
||||||
private DatabaseHelper dh;
|
private DatabaseHelper dh;
|
||||||
private boolean live;
|
private boolean live;
|
||||||
private boolean resolve;
|
private boolean resolve;
|
||||||
|
@ -68,7 +73,13 @@ public class ActivityLog extends AppCompatActivity {
|
||||||
runOnUiThread(new Runnable() {
|
runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
adapter.changeCursor(dh.getLog());
|
if (adapter != null) {
|
||||||
|
adapter.changeCursor(dh.getLog());
|
||||||
|
if (menuSearch != null && menuSearch.isActionViewExpanded()) {
|
||||||
|
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuSearch);
|
||||||
|
adapter.getFilter().filter(searchView.getQuery().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -90,6 +101,12 @@ public class ActivityLog extends AppCompatActivity {
|
||||||
|
|
||||||
dh = new DatabaseHelper(this);
|
dh = new DatabaseHelper(this);
|
||||||
adapter = new LogAdapter(this, dh.getLog(), resolve);
|
adapter = new LogAdapter(this, dh.getLog(), resolve);
|
||||||
|
adapter.setFilterQueryProvider(new FilterQueryProvider() {
|
||||||
|
public Cursor runQuery(CharSequence constraint) {
|
||||||
|
return dh.searchLog(constraint.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
lvLog.setAdapter(adapter);
|
lvLog.setAdapter(adapter);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -209,6 +226,33 @@ public class ActivityLog extends AppCompatActivity {
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
inflater.inflate(R.menu.log, menu);
|
inflater.inflate(R.menu.log, menu);
|
||||||
|
|
||||||
|
menuSearch = menu.findItem(R.id.menu_search);
|
||||||
|
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuSearch);
|
||||||
|
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onQueryTextSubmit(String query) {
|
||||||
|
if (adapter != null)
|
||||||
|
adapter.getFilter().filter(query);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onQueryTextChange(String newText) {
|
||||||
|
if (adapter != null)
|
||||||
|
adapter.getFilter().filter(newText);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onClose() {
|
||||||
|
if (adapter != null)
|
||||||
|
adapter.getFilter().filter(null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,6 +303,11 @@ public class ActivityLog extends AppCompatActivity {
|
||||||
resolve = item.isChecked();
|
resolve = item.isChecked();
|
||||||
prefs.edit().putBoolean("resolve", resolve).apply();
|
prefs.edit().putBoolean("resolve", resolve).apply();
|
||||||
adapter = new LogAdapter(this, dh.getLog(), resolve);
|
adapter = new LogAdapter(this, dh.getLog(), resolve);
|
||||||
|
adapter.setFilterQueryProvider(new FilterQueryProvider() {
|
||||||
|
public Cursor runQuery(CharSequence constraint) {
|
||||||
|
return dh.searchLog(constraint.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
lvLog.setAdapter(adapter);
|
lvLog.setAdapter(adapter);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,14 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||||
return db.rawQuery(query, new String[]{});
|
return db.rawQuery(query, new String[]{});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Cursor searchLog(String find) {
|
||||||
|
SQLiteDatabase db = this.getReadableDatabase();
|
||||||
|
String query = "SELECT ID AS _id, * FROM log";
|
||||||
|
query += " WHERE saddr LIKE ? OR daddr LIKE ? OR uid LIKE ?";
|
||||||
|
query += " ORDER BY time DESC";
|
||||||
|
return db.rawQuery(query, new String[]{"%" + find + "%", "%" + find + "%", "%" + find + "%"});
|
||||||
|
}
|
||||||
|
|
||||||
public static void addLogChangedListener(LogChangedListener listener) {
|
public static void addLogChangedListener(LogChangedListener listener) {
|
||||||
logChangedListeners.add(listener);
|
logChangedListeners.add(listener);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:netguard="http://schemas.android.com/apk/res-auto">
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_search"
|
||||||
|
android:icon="@drawable/ic_search_white_24dp"
|
||||||
|
android:title="@string/menu_search"
|
||||||
|
netguard:actionViewClass="android.support.v7.widget.SearchView"
|
||||||
|
netguard:showAsAction="always|collapseActionView" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_log_enabled"
|
android:id="@+id/menu_log_enabled"
|
||||||
android:checkable="true"
|
android:checkable="true"
|
||||||
|
|
Loading…
Reference in a new issue