/* (C) 2012 Pragmatic Software
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/
*/
package com.googlecode.networklog;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.widget.EditText;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.text.TextWatcher;
import android.text.Editable;
import android.content.DialogInterface;
import android.app.AlertDialog;
import android.view.View;
import android.view.LayoutInflater;
public class FilterDialog implements DialogInterface.OnDismissListener
{
EditText editTextInclude;
CheckBox checkboxUidInclude;
CheckBox checkboxNameInclude;
CheckBox checkboxAddressInclude;
CheckBox checkboxPortInclude;
CheckBox checkboxInterfaceInclude;
CheckBox checkboxProtocolInclude;
EditText editTextExclude;
CheckBox checkboxUidExclude;
CheckBox checkboxNameExclude;
CheckBox checkboxAddressExclude;
CheckBox checkboxPortExclude;
CheckBox checkboxInterfaceExclude;
CheckBox checkboxProtocolExclude;
Context context;
public FilterDialog(final Context context)
{
this.context = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.filterdialog, null);
editTextInclude = (EditText) view.findViewById(R.id.filterTextInclude);
checkboxUidInclude = (CheckBox) view.findViewById(R.id.filterUidInclude);
checkboxNameInclude = (CheckBox) view.findViewById(R.id.filterNameInclude);
checkboxAddressInclude = (CheckBox) view.findViewById(R.id.filterAddressInclude);
checkboxPortInclude = (CheckBox) view.findViewById(R.id.filterPortInclude);
checkboxInterfaceInclude = (CheckBox) view.findViewById(R.id.filterInterfaceInclude);
checkboxProtocolInclude = (CheckBox) view.findViewById(R.id.filterProtocolInclude);
editTextExclude = (EditText) view.findViewById(R.id.filterTextExclude);
checkboxUidExclude = (CheckBox) view.findViewById(R.id.filterUidExclude);
checkboxNameExclude = (CheckBox) view.findViewById(R.id.filterNameExclude);
checkboxAddressExclude = (CheckBox) view.findViewById(R.id.filterAddressExclude);
checkboxPortExclude = (CheckBox) view.findViewById(R.id.filterPortExclude);
checkboxInterfaceExclude = (CheckBox) view.findViewById(R.id.filterInterfaceExclude);
checkboxProtocolExclude = (CheckBox) view.findViewById(R.id.filterProtocolExclude);
editTextInclude.setText(NetworkLog.filterTextInclude);
checkboxUidInclude.setChecked(NetworkLog.filterUidInclude);
checkboxNameInclude.setChecked(NetworkLog.filterNameInclude);
checkboxAddressInclude.setChecked(NetworkLog.filterAddressInclude);
checkboxPortInclude.setChecked(NetworkLog.filterPortInclude);
checkboxInterfaceInclude.setChecked(NetworkLog.filterInterfaceInclude);
checkboxProtocolInclude.setChecked(NetworkLog.filterProtocolInclude);
editTextExclude.setText(NetworkLog.filterTextExclude);
checkboxUidExclude.setChecked(NetworkLog.filterUidExclude);
checkboxNameExclude.setChecked(NetworkLog.filterNameExclude);
checkboxAddressExclude.setChecked(NetworkLog.filterAddressExclude);
checkboxPortExclude.setChecked(NetworkLog.filterPortExclude);
checkboxInterfaceExclude.setChecked(NetworkLog.filterInterfaceExclude);
checkboxProtocolExclude.setChecked(NetworkLog.filterProtocolExclude);
CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton button, boolean isChecked)
{
if(button == checkboxUidInclude) {
NetworkLog.filterUidInclude = isChecked;
} else if(button == checkboxNameInclude) {
NetworkLog.filterNameInclude = isChecked;
} else if(button == checkboxAddressInclude) {
NetworkLog.filterAddressInclude = isChecked;
} else if(button == checkboxPortInclude) {
NetworkLog.filterPortInclude = isChecked;
} else if(button == checkboxInterfaceInclude) {
NetworkLog.filterInterfaceInclude = isChecked;
} else if(button == checkboxProtocolInclude) {
NetworkLog.filterProtocolInclude = isChecked;
}
if(button == checkboxUidExclude) {
NetworkLog.filterUidExclude = isChecked;
} else if(button == checkboxNameExclude) {
NetworkLog.filterNameExclude = isChecked;
} else if(button == checkboxAddressExclude) {
NetworkLog.filterAddressExclude = isChecked;
} else if(button == checkboxPortExclude) {
NetworkLog.filterPortExclude = isChecked;
} else if(button == checkboxInterfaceExclude) {
NetworkLog.filterInterfaceExclude = isChecked;
} else if(button == checkboxProtocolExclude) {
NetworkLog.filterProtocolExclude = isChecked;
}
}
};
checkboxUidInclude.setOnCheckedChangeListener(listener);
checkboxNameInclude.setOnCheckedChangeListener(listener);
checkboxAddressInclude.setOnCheckedChangeListener(listener);
checkboxPortInclude.setOnCheckedChangeListener(listener);
checkboxInterfaceInclude.setOnCheckedChangeListener(listener);
checkboxProtocolInclude.setOnCheckedChangeListener(listener);
checkboxUidExclude.setOnCheckedChangeListener(listener);
checkboxNameExclude.setOnCheckedChangeListener(listener);
checkboxAddressExclude.setOnCheckedChangeListener(listener);
checkboxPortExclude.setOnCheckedChangeListener(listener);
checkboxInterfaceExclude.setOnCheckedChangeListener(listener);
checkboxProtocolExclude.setOnCheckedChangeListener(listener);
TextWatcher filterTextIncludeWatcher = new TextWatcher()
{
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count)
{
NetworkLog.filterTextInclude = s.toString().trim();
}
};
editTextInclude.addTextChangedListener(filterTextIncludeWatcher);
TextWatcher filterTextExcludeWatcher = new TextWatcher()
{
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count)
{
NetworkLog.filterTextExclude = s.toString().trim();
}
};
editTextExclude.addTextChangedListener(filterTextExcludeWatcher);
Resources res = context.getResources();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(res.getString(R.string.filter_title))
.setView(view)
.setCancelable(true)
.setNeutralButton(res.getString(R.string.reset), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
NetworkLog.filterTextInclude = "";
NetworkLog.filterTextIncludeList.clear();
NetworkLog.filterUidInclude = false;
NetworkLog.filterNameInclude = false;
NetworkLog.filterAddressInclude = false;
NetworkLog.filterPortInclude = false;
NetworkLog.filterInterfaceInclude = false;
NetworkLog.filterProtocolInclude = false;
NetworkLog.filterTextExclude = "";
NetworkLog.filterTextExcludeList.clear();
NetworkLog.filterUidExclude = false;
NetworkLog.filterNameExclude = false;
NetworkLog.filterAddressExclude = false;
NetworkLog.filterPortExclude = false;
NetworkLog.filterInterfaceExclude = false;
NetworkLog.filterProtocolExclude = false;
}
})
.setPositiveButton(res.getString(R.string.done), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
})
/* .setNegativeButton("Help", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
new FilterHelpDialog(context);
}
}) */;
AlertDialog alert = builder.create();
alert.setOnDismissListener(this);
alert.show();
}
@Override
public void onDismiss(DialogInterface dialog)
{
NetworkLog.settings.setFilterTextInclude(NetworkLog.filterTextInclude);
NetworkLog.settings.setFilterUidInclude(NetworkLog.filterUidInclude);
NetworkLog.settings.setFilterNameInclude(NetworkLog.filterNameInclude);
NetworkLog.settings.setFilterAddressInclude(NetworkLog.filterAddressInclude);
NetworkLog.settings.setFilterPortInclude(NetworkLog.filterPortInclude);
NetworkLog.settings.setFilterInterfaceInclude(NetworkLog.filterInterfaceInclude);
NetworkLog.settings.setFilterProtocolInclude(NetworkLog.filterProtocolInclude);
NetworkLog.settings.setFilterTextExclude(NetworkLog.filterTextExclude);
NetworkLog.settings.setFilterUidExclude(NetworkLog.filterUidExclude);
NetworkLog.settings.setFilterNameExclude(NetworkLog.filterNameExclude);
NetworkLog.settings.setFilterAddressExclude(NetworkLog.filterAddressExclude);
NetworkLog.settings.setFilterPortExclude(NetworkLog.filterPortExclude);
NetworkLog.settings.setFilterInterfaceExclude(NetworkLog.filterInterfaceExclude);
NetworkLog.settings.setFilterProtocolExclude(NetworkLog.filterProtocolExclude);
FilterUtils.buildList(NetworkLog.filterTextInclude, NetworkLog.filterTextIncludeList);
FilterUtils.buildList(NetworkLog.filterTextExclude, NetworkLog.filterTextExcludeList);
NetworkLog.appFragment.setFilter("");
NetworkLog.logFragment.setFilter("");
NetworkLog.updateStatusText();
}
}