diff --git a/app/src/main/java/eu/faircode/netguard/ActivityMain.java b/app/src/main/java/eu/faircode/netguard/ActivityMain.java index d2191c11..f4051e58 100644 --- a/app/src/main/java/eu/faircode/netguard/ActivityMain.java +++ b/app/src/main/java/eu/faircode/netguard/ActivityMain.java @@ -120,25 +120,35 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + + MenuItem wifiItem = menu.findItem(R.id.menu_wifi); + MenuItem otherItem = menu.findItem(R.id.menu_other); + wifiItem.setIcon(prefs.getBoolean("wifi", true) ? R.drawable.ic_network_wifi_white_24dp : R.drawable.ic_signal_wifi_off_white_24dp); + otherItem.setIcon(prefs.getBoolean("other", true) ? R.drawable.ic_network_cell_white_24dp : R.drawable.ic_signal_cellular_off_white_24dp); + MenuItem searchItem = menu.findItem(R.id.menu_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { - applyFilter(query); + if (adapter != null) + adapter.getFilter().filter(query); return true; } @Override public boolean onQueryTextChange(String newText) { - applyFilter(newText); + if (adapter != null) + adapter.getFilter().filter(newText); return true; } }); searchView.setOnCloseListener(new SearchView.OnCloseListener() { @Override public boolean onClose() { - applyFilter(null); + if (adapter != null) + adapter.getFilter().filter(null); return true; } }); @@ -146,15 +156,27 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences return true; } - private void applyFilter(String query) { - if (adapter != null) - adapter.getFilter().filter(query); - } - @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); switch (item.getItemId()) { + case R.id.menu_wifi: + boolean wifi = !prefs.getBoolean("wifi", true); + prefs.edit().putBoolean("wifi", wifi).apply(); + if (adapter != null) + adapter.set("wifi", wifi, this); + invalidateOptionsMenu(); + return true; + + case R.id.menu_other: + boolean other = !prefs.getBoolean("other", true); + prefs.edit().putBoolean("other", other).apply(); + if (adapter != null) + adapter.set("other", other, this); + invalidateOptionsMenu(); + return true; + case R.id.menu_vpn_settings: Intent intent = new Intent("android.net.vpn.SETTINGS"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/app/src/main/java/eu/faircode/netguard/BlackHoleService.java b/app/src/main/java/eu/faircode/netguard/BlackHoleService.java index 1811a9e8..5820d39b 100644 --- a/app/src/main/java/eu/faircode/netguard/BlackHoleService.java +++ b/app/src/main/java/eu/faircode/netguard/BlackHoleService.java @@ -115,7 +115,7 @@ public class BlackHoleService extends VpnService implements Runnable { builder.setSession("BlackHoleService"); builder.addAddress("10.1.10.1", 32); builder.addRoute("0.0.0.0", 0); - builder.setBlocking(true); + builder.setBlocking(false); // Add list of allowed applications for (Rule rule : Rule.getRules(this)) @@ -135,7 +135,11 @@ public class BlackHoleService extends VpnService implements Runnable { Log.i(TAG, "Loop start thread=" + Thread.currentThread()); FileInputStream in = new FileInputStream(pfd.getFileDescriptor()); while (!Thread.currentThread().isInterrupted() && pfd.getFileDescriptor().valid()) - in.skip(32768); + if (in.skip(32768) < 0) + try { + Thread.sleep(1000); + } catch (InterruptedException ignored) { + } Log.i(TAG, "Loop exit thread=" + Thread.currentThread()); } catch (Throwable ex) { diff --git a/app/src/main/java/eu/faircode/netguard/Rule.java b/app/src/main/java/eu/faircode/netguard/Rule.java index b39b104c..85e985eb 100644 --- a/app/src/main/java/eu/faircode/netguard/Rule.java +++ b/app/src/main/java/eu/faircode/netguard/Rule.java @@ -30,7 +30,7 @@ public class Rule implements Comparable { for (PackageInfo info : context.getPackageManager().getInstalledPackages(0)) listRules.add(new Rule( info, - wifi.getBoolean(info.packageName, false), + wifi.getBoolean(info.packageName, true), other.getBoolean(info.packageName, true), context )); diff --git a/app/src/main/java/eu/faircode/netguard/RuleAdapter.java b/app/src/main/java/eu/faircode/netguard/RuleAdapter.java index 66e0e86d..15b15914 100644 --- a/app/src/main/java/eu/faircode/netguard/RuleAdapter.java +++ b/app/src/main/java/eu/faircode/netguard/RuleAdapter.java @@ -124,6 +124,24 @@ public class RuleAdapter extends RecyclerView.Adapter im }; } + public void set(String name, boolean blocked, Context context) { + SharedPreferences.Editor editor = context.getSharedPreferences(name, Context.MODE_PRIVATE).edit(); + for (Rule rule : listSelected) { + if ("wifi".equals(name)) + rule.wifi_blocked = blocked; + else + rule.other_blocked = blocked; + editor.putBoolean(rule.info.packageName, blocked); + } + editor.apply(); + + Intent intent = new Intent(context, BlackHoleService.class); + intent.putExtra(BlackHoleService.EXTRA_COMMAND, BlackHoleService.Command.reload); + context.startService(intent); + + notifyDataSetChanged(); + } + @Override public RuleAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.rule, parent, false)); diff --git a/app/src/main/res/drawable-hdpi/ic_network_cell_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_network_cell_black_24dp.png deleted file mode 100644 index fdba6a9a..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_network_cell_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_network_cell_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_network_cell_white_24dp.png new file mode 100644 index 00000000..8bee424e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_network_cell_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_network_wifi_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_network_wifi_black_24dp.png deleted file mode 100644 index bb2383fc..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_network_wifi_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_network_wifi_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_network_wifi_white_24dp.png new file mode 100644 index 00000000..8df91f23 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_network_wifi_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_signal_cellular_off_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_signal_cellular_off_black_24dp.png deleted file mode 100644 index 1fce6de6..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_signal_cellular_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_signal_cellular_off_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_signal_cellular_off_white_24dp.png new file mode 100644 index 00000000..12704b3c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_signal_cellular_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_signal_wifi_off_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_signal_wifi_off_black_24dp.png deleted file mode 100644 index 71938268..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_signal_wifi_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_signal_wifi_off_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_signal_wifi_off_white_24dp.png new file mode 100644 index 00000000..996d8a34 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_signal_wifi_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_network_cell_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_network_cell_black_24dp.png deleted file mode 100644 index b50d4a5c..00000000 Binary files a/app/src/main/res/drawable-mdpi/ic_network_cell_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_network_cell_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_network_cell_white_24dp.png new file mode 100644 index 00000000..a2045c33 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_network_cell_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_network_wifi_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_network_wifi_black_24dp.png deleted file mode 100644 index 618b47ab..00000000 Binary files a/app/src/main/res/drawable-mdpi/ic_network_wifi_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_network_wifi_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_network_wifi_white_24dp.png new file mode 100644 index 00000000..1c3e8b98 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_network_wifi_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_signal_cellular_off_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_signal_cellular_off_black_24dp.png deleted file mode 100644 index d9721f58..00000000 Binary files a/app/src/main/res/drawable-mdpi/ic_signal_cellular_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_signal_cellular_off_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_signal_cellular_off_white_24dp.png new file mode 100644 index 00000000..eaaa180b Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_signal_cellular_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_signal_wifi_off_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_signal_wifi_off_black_24dp.png deleted file mode 100644 index a5f56879..00000000 Binary files a/app/src/main/res/drawable-mdpi/ic_signal_wifi_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_signal_wifi_off_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_signal_wifi_off_white_24dp.png new file mode 100644 index 00000000..5295ecd5 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_signal_wifi_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_network_cell_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_network_cell_black_24dp.png deleted file mode 100644 index 3423a2fd..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_network_cell_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_network_cell_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_network_cell_white_24dp.png new file mode 100644 index 00000000..1ccc9770 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_network_cell_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_network_wifi_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_network_wifi_black_24dp.png deleted file mode 100644 index 7234a0cc..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_network_wifi_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_network_wifi_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_network_wifi_white_24dp.png new file mode 100644 index 00000000..ca927f3d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_network_wifi_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_signal_cellular_off_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_signal_cellular_off_black_24dp.png deleted file mode 100644 index c11e5962..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_signal_cellular_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_signal_cellular_off_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_signal_cellular_off_white_24dp.png new file mode 100644 index 00000000..8ed814e1 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_signal_cellular_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_signal_wifi_off_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_signal_wifi_off_black_24dp.png deleted file mode 100644 index 78b1b226..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_signal_wifi_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_signal_wifi_off_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_signal_wifi_off_white_24dp.png new file mode 100644 index 00000000..480145c0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_signal_wifi_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_network_cell_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_network_cell_black_24dp.png deleted file mode 100644 index 233d58d7..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_network_cell_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_network_cell_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_network_cell_white_24dp.png new file mode 100644 index 00000000..a93e6166 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_network_cell_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_network_wifi_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_network_wifi_black_24dp.png deleted file mode 100644 index d031b3ed..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_network_wifi_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_network_wifi_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_network_wifi_white_24dp.png new file mode 100644 index 00000000..75469cd8 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_network_wifi_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_signal_cellular_off_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_signal_cellular_off_black_24dp.png deleted file mode 100644 index ce41f10c..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_signal_cellular_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_signal_cellular_off_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_signal_cellular_off_white_24dp.png new file mode 100644 index 00000000..dedee393 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_signal_cellular_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_signal_wifi_off_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_signal_wifi_off_black_24dp.png deleted file mode 100644 index 8aedc1db..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_signal_wifi_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_signal_wifi_off_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_signal_wifi_off_white_24dp.png new file mode 100644 index 00000000..f2023bf8 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_signal_wifi_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_network_cell_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_network_cell_black_24dp.png deleted file mode 100644 index 10a2595d..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_network_cell_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_network_cell_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_network_cell_white_24dp.png new file mode 100644 index 00000000..706da320 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_network_cell_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_network_wifi_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_network_wifi_black_24dp.png deleted file mode 100644 index c0780f31..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_network_wifi_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_network_wifi_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_network_wifi_white_24dp.png new file mode 100644 index 00000000..eb284e38 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_network_wifi_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_signal_cellular_off_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_signal_cellular_off_black_24dp.png deleted file mode 100644 index ce05a60b..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_signal_cellular_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_signal_cellular_off_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_signal_cellular_off_white_24dp.png new file mode 100644 index 00000000..b6adb4e0 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_signal_cellular_off_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_off_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_off_black_24dp.png deleted file mode 100644 index 51b56c28..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_off_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_off_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_off_white_24dp.png new file mode 100644 index 00000000..6df209eb Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_off_white_24dp.png differ diff --git a/app/src/main/res/drawable/other_off.xml b/app/src/main/res/drawable/other_off.xml index bebb5d98..64c74383 100644 --- a/app/src/main/res/drawable/other_off.xml +++ b/app/src/main/res/drawable/other_off.xml @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/app/src/main/res/drawable/other_on.xml b/app/src/main/res/drawable/other_on.xml index 9ed2259d..f0449b39 100644 --- a/app/src/main/res/drawable/other_on.xml +++ b/app/src/main/res/drawable/other_on.xml @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/app/src/main/res/drawable/wifi_off.xml b/app/src/main/res/drawable/wifi_off.xml index d78270be..f99d5c82 100644 --- a/app/src/main/res/drawable/wifi_off.xml +++ b/app/src/main/res/drawable/wifi_off.xml @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/app/src/main/res/drawable/wifi_on.xml b/app/src/main/res/drawable/wifi_on.xml index 6969c9d3..3aa2389b 100644 --- a/app/src/main/res/drawable/wifi_on.xml +++ b/app/src/main/res/drawable/wifi_on.xml @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/app/src/main/res/layout/actionbar.xml b/app/src/main/res/layout/actionbar.xml index c4b6599d..e822886f 100644 --- a/app/src/main/res/layout/actionbar.xml +++ b/app/src/main/res/layout/actionbar.xml @@ -1,11 +1,12 @@ - + android:background="@color/colorPrimary" + android:orientation="horizontal"> - \ No newline at end of file + android:layout_marginLeft="12dp" /> + \ No newline at end of file diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml index 45da71b8..286b200a 100644 --- a/app/src/main/res/menu/main.xml +++ b/app/src/main/res/menu/main.xml @@ -6,7 +6,17 @@ android:icon="@drawable/ic_search_white_24dp" android:title="@string/menu_search" netguard:actionViewClass="android.support.v7.widget.SearchView" - netguard:showAsAction="ifRoom|collapseActionView" /> + netguard:showAsAction="always|collapseActionView" /> + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c67414dd..2ad61bca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,6 +2,8 @@ NetGuard Copyright \u00A9 2015 by M. Bokhorst (M66B) Search + Toggle Wi-Fi + Toggle other VPN settings About