Configure logging/filtering from app details

This commit is contained in:
M66B 2017-03-05 22:12:15 +01:00
parent 0a37866c91
commit f1dbe2ea2c
4 changed files with 212 additions and 86 deletions

View File

@ -23,6 +23,7 @@ import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
@ -39,6 +40,7 @@ import android.support.v4.app.NotificationManagerCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.widget.CompoundButtonCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.RecyclerView;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
@ -133,8 +135,8 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> im
public ImageButton btnClear;
public ImageView ivLive;
public TextView tvNoLog;
public TextView tvNoFilter;
public TextView tvLogging;
public Button btnLogging;
public ListView lvAccess;
public ImageButton btnClearAccess;
@ -187,8 +189,8 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> im
btnClear = (ImageButton) itemView.findViewById(R.id.btnClear);
ivLive = (ImageView) itemView.findViewById(R.id.ivLive);
tvNoLog = (TextView) itemView.findViewById(R.id.tvNoLog);
tvNoFilter = (TextView) itemView.findViewById(R.id.tvNoFilter);
tvLogging = (TextView) itemView.findViewById(R.id.tvLogging);
btnLogging = (Button) itemView.findViewById(R.id.btnLogging);
lvAccess = (ListView) itemView.findViewById(R.id.lvAccess);
btnClearAccess = (ImageButton) itemView.findViewById(R.id.btnClearAccess);
@ -294,7 +296,7 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> im
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
// Get rule
final Rule rule = listFiltered.get(position);
@ -562,23 +564,49 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> im
}
});
// Show logging is disabled
boolean log_app = prefs.getBoolean("log_app", false);
holder.tvNoLog.setVisibility(log_app ? View.GONE : View.VISIBLE);
holder.tvNoLog.setOnClickListener(new View.OnClickListener() {
// Show logging/filtering is disabled
final boolean log_app = prefs.getBoolean("log_app", false);
final boolean filter = prefs.getBoolean("filter", false);
holder.tvLogging.setText(log_app && filter ? R.string.title_logging_enabled : R.string.title_logging_disabled);
holder.btnLogging.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
context.startActivity(new Intent(context, ActivitySettings.class));
}
});
public void onClick(View v) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.enable, null, false);
// Show filtering is disabled
boolean filter = prefs.getBoolean("filter", false);
holder.tvNoFilter.setVisibility(filter ? View.GONE : View.VISIBLE);
holder.tvNoFilter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
context.startActivity(new Intent(context, ActivitySettings.class));
final CheckBox cbLogging = (CheckBox) view.findViewById(R.id.cbLogging);
final CheckBox cbFiltering = (CheckBox) view.findViewById(R.id.cbFiltering);
TextView tvFilter4 = (TextView) view.findViewById(R.id.tvFilter4);
cbLogging.setChecked(log_app);
cbFiltering.setChecked(filter);
cbFiltering.setEnabled(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
tvFilter4.setVisibility(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? View.GONE : View.VISIBLE);
cbLogging.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("log_app", checked).apply();
AdapterRule.this.notifyDataSetChanged();
}
});
cbFiltering.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
if (checked)
cbLogging.setChecked(true);
prefs.edit().putBoolean("filter", checked).apply();
ServiceSinkhole.reload("changed filter", context);
AdapterRule.this.notifyDataSetChanged();
}
});
AlertDialog dialog = new AlertDialog.Builder(context)
.setView(view)
.setCancelable(true)
.create();
dialog.show();
}
});

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:text="@string/app_name"
android:textAppearance="@style/TextLarge"
android:textStyle="bold"/>
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<CheckBox
android:id="@+id/cbLogging"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_enable_logging"
android:textAppearance="@style/TextMedium"/>
<CheckBox
android:id="@+id/cbFiltering"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/title_enable_filtering"
android:textAppearance="@style/TextMedium"/>
<TextView
android:id="@+id/tvFilter4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/msg_filter4"
android:textAppearance="@style/TextMedium"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/title_enable_help1"
android:textAppearance="@style/TextMedium"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/title_enable_help2"
android:textAppearance="@style/TextMedium"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/msg_filter"
android:textAppearance="@style/TextMedium"/>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:paddingEnd="4dp"
android:paddingRight="4dp"
android:paddingTop="8dp">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:paddingEnd="4dp"
android:paddingRight="4dp"
android:paddingTop="8dp">
<LinearLayout
android:layout_width="match_parent"
@ -27,13 +27,13 @@
android:layout_height="32dp"
android:layout_gravity="center_vertical|center_horizontal"
android:alpha="0.5"
android:src="?attr/expander" />
android:src="?attr/expander"/>
<ImageView
android:id="@+id/ivIcon"
android:layout_width="?android:attr/listPreferredItemHeightSmall"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:layout_gravity="center_vertical" />
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/tvName"
@ -44,7 +44,7 @@
android:gravity="center_vertical"
android:paddingLeft="8dp"
android:paddingStart="8dp"
android:textAppearance="@style/TextMedium" />
android:textAppearance="@style/TextMedium"/>
</LinearLayout>
<TextView
@ -55,7 +55,7 @@
android:layout_marginLeft="4dp"
android:layout_marginStart="4dp"
android:textAppearance="@style/TextSmall"
android:textSize="12sp" />
android:textSize="12sp"/>
<LinearLayout
android:layout_width="wrap_content"
@ -73,7 +73,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:button="@drawable/wifi" />
android:button="@drawable/wifi"/>
</RelativeLayout>
<LinearLayout
@ -87,13 +87,13 @@
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/screen" />
android:src="@drawable/screen"/>
<View
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_horizontal"
android:visibility="invisible" />
android:visibility="invisible"/>
</LinearLayout>
</LinearLayout>
@ -113,7 +113,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:button="@drawable/other" />
android:button="@drawable/other"/>
</RelativeLayout>
<LinearLayout
@ -127,7 +127,7 @@
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/screen" />
android:src="@drawable/screen"/>
<TextView
android:id="@+id/tvRoaming"
@ -138,7 +138,7 @@
android:text="@string/title_roaming_symbol"
android:textAppearance="@style/TextSmall"
android:textColor="?attr/colorOff"
android:textSize="14sp" />
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
@ -158,7 +158,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textAppearance="@style/TextSmall" />
android:textAppearance="@style/TextSmall"/>
<TextView
android:id="@+id/tvPackage"
@ -166,14 +166,14 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textAppearance="@style/TextSmall"
android:textIsSelectable="true" />
android:textIsSelectable="true"/>
<TextView
android:id="@+id/tvVersion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textAppearance="@style/TextSmall" />
android:textAppearance="@style/TextSmall"/>
<TextView
android:id="@+id/tvDescription"
@ -182,7 +182,7 @@
android:layout_marginTop="4dp"
android:textAppearance="@style/TextSmall"
android:textStyle="italic"
android:visibility="gone" />
android:visibility="gone"/>
<TextView
android:id="@+id/tvInternet"
@ -192,7 +192,7 @@
android:text="@string/title_internet"
android:textAppearance="@style/TextSmall"
android:textStyle="italic"
android:visibility="gone" />
android:visibility="gone"/>
<TextView
android:id="@+id/tvDisabled"
@ -202,14 +202,14 @@
android:text="@string/title_disabled"
android:textAppearance="@style/TextSmall"
android:textStyle="italic"
android:visibility="gone" />
android:visibility="gone"/>
<TextView
android:id="@+id/tvStatistics"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="4dp" />
android:layout_marginTop="4dp"/>
<LinearLayout
android:layout_width="wrap_content"
@ -224,7 +224,7 @@
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="@string/title_related" />
android:text="@string/title_related"/>
<ImageButton
android:id="@+id/ibDatasaver"
@ -234,7 +234,7 @@
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:src="?attr/iconDatasaver"
android:visibility="gone" />
android:visibility="gone"/>
<ImageButton
android:id="@+id/ibSettings"
@ -243,14 +243,14 @@
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:src="?attr/iconSettings" />
android:src="?attr/iconSettings"/>
<ImageButton
android:id="@+id/ibLaunch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="?attr/iconLaunch" />
android:src="?attr/iconLaunch"/>
</LinearLayout>
<CheckBox
@ -258,14 +258,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="@string/title_apply" />
android:text="@string/title_apply"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_conditions"
android:textAppearance="@style/TextTitle" />
android:textAppearance="@style/TextTitle"/>
<LinearLayout
android:id="@+id/llScreenWifi"
@ -279,14 +279,14 @@
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
android:src="@drawable/screen_on" />
android:src="@drawable/screen_on"/>
<CheckBox
android:id="@+id/cbScreenWifi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_screen_wifi"
android:textAppearance="@style/TextSmall" />
android:textAppearance="@style/TextSmall"/>
</LinearLayout>
<LinearLayout
@ -306,14 +306,14 @@
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
android:src="@drawable/screen_on" />
android:src="@drawable/screen_on"/>
<CheckBox
android:id="@+id/cbScreenOther"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_screen_other"
android:textAppearance="@style/TextSmall" />
android:textAppearance="@style/TextSmall"/>
</LinearLayout>
<LinearLayout
@ -330,14 +330,14 @@
android:text="@string/title_roaming_symbol"
android:textAppearance="@style/TextSmall"
android:textColor="?attr/colorOff"
android:textSize="14sp" />
android:textSize="14sp"/>
<CheckBox
android:id="@+id/cbRoaming"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_roaming"
android:textAppearance="@style/TextSmall" />
android:textAppearance="@style/TextSmall"/>
</LinearLayout>
</LinearLayout>
@ -346,7 +346,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:src="?attr/iconDelete" />
android:src="?attr/iconDelete"/>
<LinearLayout
android:layout_width="match_parent"
@ -360,7 +360,7 @@
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:text="@string/title_access"
android:textAppearance="@style/TextTitle" />
android:textAppearance="@style/TextTitle"/>
<ImageView
android:id="@+id/ivLive"
@ -369,30 +369,35 @@
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:src="?attr/iconPause" />
android:src="?attr/iconPause"/>
</LinearLayout>
<TextView
android:id="@+id/tvNoLog"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="@string/title_no_log"
android:textAppearance="@style/TextSmall"
android:textColor="?attr/colorOff"
android:textStyle="bold"
android:visibility="gone" />
android:layout_marginTop="12dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tvNoFilter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="@string/title_no_filter"
android:textAppearance="@style/TextSmall"
android:textColor="?attr/colorOff"
android:textStyle="bold"
android:visibility="gone" />
<TextView
android:id="@+id/tvLogging"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:textAppearance="@style/TextSmall"/>
<Button
android:id="@+id/btnLogging"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:minHeight="0dp"
android:minWidth="0dp"
android:text="@string/title_logging_configure"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
@ -400,13 +405,13 @@
android:layout_marginTop="4dp"
android:text="@string/title_precedence"
android:textAppearance="@style/TextSmall"
android:textStyle="italic" />
android:textStyle="italic"/>
<eu.faircode.netguard.ExpandedListView
android:id="@+id/lvAccess"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp" />
android:layout_marginTop="4dp"/>
<ImageButton
android:id="@+id/btnClearAccess"
@ -414,14 +419,14 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="4dp"
android:src="?attr/iconDelete" />
android:src="?attr/iconDelete"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_options"
android:textAppearance="@style/TextTitle" />
android:textAppearance="@style/TextTitle"/>
<CheckBox
android:id="@+id/cbNotify"
@ -429,6 +434,6 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="@string/title_notify"
android:textAppearance="@style/TextSmall" />
android:textAppearance="@style/TextSmall"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -230,12 +230,19 @@ Your internet traffic is not being sent to a remote VPN server.</string>
<string name="title_roaming">Block when roaming</string>
<string name="title_related">Filter related</string>
<string name="title_access">Access attempts</string>
<string name="title_no_log"><u>Logging is not enabled</u></string>
<string name="title_no_filter"><u>Filtering is not enabled</u></string>
<string name="title_precedence">Access rules take precedence over other rules</string>
<string name="title_options">Options</string>
<string name="title_notify">Notify internet access attempts</string>
<string name="title_logging_disabled">Logging or filtering is not enabled</string>
<string name="title_logging_enabled">Logging and filtering are enabled</string>
<string name="title_logging_configure">Configure</string>
<string name="title_enable_logging">Enable logging of blocked addresses only</string>
<string name="title_enable_filtering">Enable filtering to log allowed addresses too</string>
<string name="title_enable_help1">Filtering is also required to allow or block individual addresses</string>
<string name="title_enable_help2">Enabling logging or filtering might increase battery usage and might affect network speed</string>
<string name="title_rate">Rate</string>
<string name="title_allow">Allow</string>
<string name="title_block">Block</string>