summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/LaunchVPN.java7
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java1
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java487
-rw-r--r--main/src/main/res/layout/log_silders.xml7
-rwxr-xr-xmain/src/main/res/values/strings.xml1
5 files changed, 263 insertions, 240 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
index 40e11eb6..e468019b 100644
--- a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
+++ b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
@@ -18,6 +18,7 @@ import android.preference.PreferenceManager;
import android.text.InputType;
import android.text.TextUtils;
import android.text.method.PasswordTransformationMethod;
+import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
@@ -61,6 +62,8 @@ public class LaunchVPN extends Activity {
public static final String EXTRA_KEY = "de.blinkt.openvpn.shortcutProfileUUID";
public static final String EXTRA_NAME = "de.blinkt.openvpn.shortcutProfileName";
public static final String EXTRA_HIDELOG = "de.blinkt.openvpn.showNoLogWindow";
+ public static final String CLEARLOG = "clearlogconnect";
+
private static final int START_VPN_PROFILE= 70;
@@ -91,6 +94,10 @@ public class LaunchVPN extends Activity {
if(Intent.ACTION_MAIN.equals(action)) {
+ // Check if we need to clear the log
+ if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(CLEARLOG, true))
+ VpnStatus.clearLog();
+
// we got called to be the starting point, most likely a shortcut
String shortcutUUID = intent.getStringExtra( EXTRA_KEY);
String shortcutName = intent.getStringExtra( EXTRA_NAME);
diff --git a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
index 82de0fbc..ef168675 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
@@ -313,7 +313,6 @@ public class VpnStatus {
public void saveLogToDisk(Context c) {
File logOut = new File(c.getCacheDir(), "log.xml");
-
}
public interface LogListener {
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
index f6b6c993..e1031e33 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
@@ -22,6 +22,8 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;
+import android.preference.Preference;
+import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.text.SpannableString;
import android.text.format.DateFormat;
@@ -34,6 +36,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
@@ -66,11 +70,12 @@ import de.blinkt.openvpn.core.VpnStatus.StateListener;
import static de.blinkt.openvpn.core.OpenVPNService.humanReadableByteCount;
public class LogFragment extends ListFragment implements StateListener, SeekBar.OnSeekBarChangeListener, RadioGroup.OnCheckedChangeListener, VpnStatus.ByteCountListener {
- private static final String LOGTIMEFORMAT = "logtimeformat";
- private static final int START_VPN_CONFIG = 0;
+ private static final String LOGTIMEFORMAT = "logtimeformat";
+ private static final int START_VPN_CONFIG = 0;
private static final String VERBOSITYLEVEL = "verbositylevel";
+
private SeekBar mLogLevelSlider;
private LinearLayout mOptionsLayout;
private RadioGroup mTimeRadioGroup;
@@ -78,10 +83,11 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
private TextView mDownStatus;
private TextView mConnectStatus;
private boolean mShowOptionsLayout;
+ private CheckBox mClearLogCheckBox;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- ladapter.setLogLevel(progress+1);
+ ladapter.setLogLevel(progress + 1);
}
@Override
@@ -133,7 +139,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
private static final int MESSAGE_NEWLOG = 0;
- private static final int MESSAGE_CLEARLOG = 1;
+ private static final int MESSAGE_CLEARLOG = 1;
private static final int MESSAGE_NEWTS = 2;
private static final int MESSAGE_NEWLOGLEVEL = 3;
@@ -143,110 +149,109 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
public static final int TIME_FORMAT_ISO = 2;
private static final int MAX_STORED_LOG_ENTRIES = 1000;
- private Vector<LogItem> allEntries=new Vector<LogItem>();
+ private Vector<LogItem> allEntries = new Vector<>();
- private Vector<LogItem> currentLevelEntries=new Vector<LogItem>();
+ private Vector<LogItem> currentLevelEntries = new Vector<LogItem>();
- private Handler mHandler;
+ private Handler mHandler;
- private Vector<DataSetObserver> observers=new Vector<DataSetObserver>();
+ private Vector<DataSetObserver> observers = new Vector<DataSetObserver>();
- private int mTimeFormat=0;
- private int mLogLevel=3;
+ private int mTimeFormat = 0;
+ private int mLogLevel = 3;
public LogWindowListAdapter() {
- initLogBuffer();
- if (mHandler == null) {
- mHandler = new Handler(this);
- }
-
- VpnStatus.addLogListener(this);
- }
+ initLogBuffer();
+ if (mHandler == null) {
+ mHandler = new Handler(this);
+ }
+ VpnStatus.addLogListener(this);
+ }
- private void initLogBuffer() {
- allEntries.clear();
+ private void initLogBuffer() {
+ allEntries.clear();
Collections.addAll(allEntries, VpnStatus.getlogbuffer());
initCurrentMessages();
- }
-
- String getLogStr() {
- String str = "";
- for(LogItem entry:allEntries) {
- str+=getTime(entry, TIME_FORMAT_ISO) + entry.getString(getActivity()) + '\n';
- }
- return str;
- }
-
-
- private void shareLog() {
- Intent shareIntent = new Intent(Intent.ACTION_SEND);
- shareIntent.putExtra(Intent.EXTRA_TEXT, getLogStr());
- shareIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.ics_openvpn_log_file));
- shareIntent.setType("text/plain");
- startActivity(Intent.createChooser(shareIntent, "Send Logfile"));
- }
-
- @Override
- public void registerDataSetObserver(DataSetObserver observer) {
- observers.add(observer);
-
- }
-
- @Override
- public void unregisterDataSetObserver(DataSetObserver observer) {
- observers.remove(observer);
- }
-
- @Override
- public int getCount() {
- return currentLevelEntries.size();
- }
-
- @Override
- public Object getItem(int position) {
- return currentLevelEntries.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return ((Object)currentLevelEntries.get(position)).hashCode();
- }
-
- @Override
- public boolean hasStableIds() {
- return true;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- TextView v;
- if(convertView==null)
- v = new TextView(getActivity());
- else
- v = (TextView) convertView;
-
- LogItem le = currentLevelEntries.get(position);
- String msg = le.getString(getActivity());
+ }
+
+ String getLogStr() {
+ String str = "";
+ for (LogItem entry : allEntries) {
+ str += getTime(entry, TIME_FORMAT_ISO) + entry.getString(getActivity()) + '\n';
+ }
+ return str;
+ }
+
+
+ private void shareLog() {
+ Intent shareIntent = new Intent(Intent.ACTION_SEND);
+ shareIntent.putExtra(Intent.EXTRA_TEXT, getLogStr());
+ shareIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.ics_openvpn_log_file));
+ shareIntent.setType("text/plain");
+ startActivity(Intent.createChooser(shareIntent, "Send Logfile"));
+ }
+
+ @Override
+ public void registerDataSetObserver(DataSetObserver observer) {
+ observers.add(observer);
+
+ }
+
+ @Override
+ public void unregisterDataSetObserver(DataSetObserver observer) {
+ observers.remove(observer);
+ }
+
+ @Override
+ public int getCount() {
+ return currentLevelEntries.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return currentLevelEntries.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return ((Object) currentLevelEntries.get(position)).hashCode();
+ }
+
+ @Override
+ public boolean hasStableIds() {
+ return true;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ TextView v;
+ if (convertView == null)
+ v = new TextView(getActivity());
+ else
+ v = (TextView) convertView;
+
+ LogItem le = currentLevelEntries.get(position);
+ String msg = le.getString(getActivity());
String time = getTime(le, mTimeFormat);
- msg = time + msg;
+ msg = time + msg;
int spanStart = time.length();
SpannableString t = new SpannableString(msg);
//t.setSpan(getSpanImage(le,(int)v.getTextSize()),spanStart,spanStart+1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
- v.setText(t);
- return v;
- }
+ v.setText(t);
+ return v;
+ }
private String getTime(LogItem le, int time) {
if (time != TIME_FORMAT_NONE) {
Date d = new Date(le.getLogtime());
java.text.DateFormat timeformat;
- if (time== TIME_FORMAT_ISO)
+ if (time == TIME_FORMAT_ISO)
timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
else
timeformat = DateFormat.getTimeFormat(getActivity());
@@ -288,49 +293,49 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
}
@Override
- public int getItemViewType(int position) {
- return 0;
- }
-
- @Override
- public int getViewTypeCount() {
- return 1;
- }
-
- @Override
- public boolean isEmpty() {
- return currentLevelEntries.isEmpty();
-
- }
-
- @Override
- public boolean areAllItemsEnabled() {
- return true;
- }
-
- @Override
- public boolean isEnabled(int position) {
- return true;
- }
-
- @Override
- public void newLog(LogItem logMessage) {
- Message msg = Message.obtain();
- assert (msg!=null);
- msg.what=MESSAGE_NEWLOG;
- Bundle bundle=new Bundle();
- bundle.putParcelable("logmessage", logMessage);
- msg.setData(bundle);
- mHandler.sendMessage(msg);
- }
-
- @Override
- public boolean handleMessage(Message msg) {
- // We have been called
- if(msg.what==MESSAGE_NEWLOG) {
-
- LogItem logMessage = msg.getData().getParcelable("logmessage");
- if(addLogMessage(logMessage))
+ public int getItemViewType(int position) {
+ return 0;
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return 1;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return currentLevelEntries.isEmpty();
+
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return true;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ return true;
+ }
+
+ @Override
+ public void newLog(LogItem logMessage) {
+ Message msg = Message.obtain();
+ assert (msg != null);
+ msg.what = MESSAGE_NEWLOG;
+ Bundle bundle = new Bundle();
+ bundle.putParcelable("logmessage", logMessage);
+ msg.setData(bundle);
+ mHandler.sendMessage(msg);
+ }
+
+ @Override
+ public boolean handleMessage(Message msg) {
+ // We have been called
+ if (msg.what == MESSAGE_NEWLOG) {
+
+ LogItem logMessage = msg.getData().getParcelable("logmessage");
+ if (addLogMessage(logMessage))
for (DataSetObserver observer : observers) {
observer.onChanged();
}
@@ -339,25 +344,25 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
observer.onInvalidated();
}
initLogBuffer();
- } else if (msg.what == MESSAGE_NEWTS) {
- for (DataSetObserver observer : observers) {
- observer.onInvalidated();
- }
- } else if (msg.what == MESSAGE_NEWLOGLEVEL) {
+ } else if (msg.what == MESSAGE_NEWTS) {
+ for (DataSetObserver observer : observers) {
+ observer.onInvalidated();
+ }
+ } else if (msg.what == MESSAGE_NEWLOGLEVEL) {
initCurrentMessages();
- for (DataSetObserver observer: observers) {
+ for (DataSetObserver observer : observers) {
observer.onChanged();
}
}
- return true;
- }
+ return true;
+ }
private void initCurrentMessages() {
currentLevelEntries.clear();
- for(LogItem li: allEntries) {
+ for (LogItem li : allEntries) {
if (li.getVerbosityLevel() <= mLogLevel ||
mLogLevel == VpnProfile.MAXLOGLEVEL)
currentLevelEntries.add(li);
@@ -365,7 +370,6 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
}
/**
- *
* @param logmessage
* @return True if the current entries have changed
*/
@@ -375,7 +379,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
if (allEntries.size() > MAX_STORED_LOG_ENTRIES) {
Vector<LogItem> oldAllEntries = allEntries;
allEntries = new Vector<LogItem>(allEntries.size());
- for (int i=50;i<oldAllEntries.size();i++) {
+ for (int i = 50; i < oldAllEntries.size(); i++) {
allEntries.add(oldAllEntries.elementAt(i));
}
initCurrentMessages();
@@ -391,85 +395,81 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
}
void clearLog() {
- // Actually is probably called from GUI Thread as result of the user
- // pressing a button. But better safe than sorry
- VpnStatus.clearLog();
- VpnStatus.logInfo(R.string.logCleared);
- mHandler.sendEmptyMessage(MESSAGE_CLEARLOG);
- }
-
+ // Actually is probably called from GUI Thread as result of the user
+ // pressing a button. But better safe than sorry
+ VpnStatus.clearLog();
+ VpnStatus.logInfo(R.string.logCleared);
+ mHandler.sendEmptyMessage(MESSAGE_CLEARLOG);
+ }
- public void setTimeFormat(int newTimeFormat) {
- mTimeFormat= newTimeFormat;
- mHandler.sendEmptyMessage(MESSAGE_NEWTS);
- }
+ public void setTimeFormat(int newTimeFormat) {
+ mTimeFormat = newTimeFormat;
+ mHandler.sendEmptyMessage(MESSAGE_NEWTS);
+ }
public void setLogLevel(int logLevel) {
mLogLevel = logLevel;
mHandler.sendEmptyMessage(MESSAGE_NEWLOGLEVEL);
}
-
- }
-
-
- private LogWindowListAdapter ladapter;
- private TextView mSpeedView;
+ }
+ private LogWindowListAdapter ladapter;
+ private TextView mSpeedView;
@Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if(item.getItemId()==R.id.clearlog) {
- ladapter.clearLog();
- return true;
- } else if(item.getItemId()==R.id.cancel){
- Intent intent = new Intent(getActivity(),DisconnectVPN.class);
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == R.id.clearlog) {
+ ladapter.clearLog();
+ return true;
+ } else if (item.getItemId() == R.id.cancel) {
+ Intent intent = new Intent(getActivity(), DisconnectVPN.class);
startActivity(intent);
return true;
- } else if(item.getItemId()==R.id.send) {
- ladapter.shareLog();
- } else if(item.getItemId()==R.id.edit_vpn) {
- VpnProfile lastConnectedprofile = ProfileManager.getLastConnectedVpn();
-
- if(lastConnectedprofile!=null) {
- Intent vprefintent = new Intent(getActivity(),VPNPreferences.class)
- .putExtra(VpnProfile.EXTRA_PROFILEUUID,lastConnectedprofile.getUUIDString());
- startActivityForResult(vprefintent,START_VPN_CONFIG);
- } else {
- Toast.makeText(getActivity(), R.string.log_no_last_vpn, Toast.LENGTH_LONG).show();
- }
- } else if(item.getItemId() == R.id.toggle_time) {
- showHideOptionsPanel();
- } else if(item.getItemId() == android.R.id.home) {
- // This is called when the Home (Up) button is pressed
- // in the Action Bar.
- Intent parentActivityIntent = new Intent(getActivity(), MainActivity.class);
- parentActivityIntent.addFlags(
- Intent.FLAG_ACTIVITY_CLEAR_TOP |
- Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(parentActivityIntent);
- getActivity().finish();
- return true;
-
- }
- return super.onOptionsItemSelected(item);
-
- }
+ } else if (item.getItemId() == R.id.send) {
+ ladapter.shareLog();
+ } else if (item.getItemId() == R.id.edit_vpn) {
+ VpnProfile lastConnectedprofile = ProfileManager.getLastConnectedVpn();
+
+ if (lastConnectedprofile != null) {
+ Intent vprefintent = new Intent(getActivity(), VPNPreferences.class)
+ .putExtra(VpnProfile.EXTRA_PROFILEUUID, lastConnectedprofile.getUUIDString());
+ startActivityForResult(vprefintent, START_VPN_CONFIG);
+ } else {
+ Toast.makeText(getActivity(), R.string.log_no_last_vpn, Toast.LENGTH_LONG).show();
+ }
+ } else if (item.getItemId() == R.id.toggle_time) {
+ showHideOptionsPanel();
+ } else if (item.getItemId() == android.R.id.home) {
+ // This is called when the Home (Up) button is pressed
+ // in the Action Bar.
+ Intent parentActivityIntent = new Intent(getActivity(), MainActivity.class);
+ parentActivityIntent.addFlags(
+ Intent.FLAG_ACTIVITY_CLEAR_TOP |
+ Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(parentActivityIntent);
+ getActivity().finish();
+ return true;
+
+ }
+ return super.onOptionsItemSelected(item);
+
+ }
private void showHideOptionsPanel() {
boolean optionsVisible = (mOptionsLayout.getVisibility() != View.GONE);
ObjectAnimator anim;
if (optionsVisible) {
- anim = ObjectAnimator.ofFloat(mOptionsLayout,"alpha",1.0f, 0f);
+ anim = ObjectAnimator.ofFloat(mOptionsLayout, "alpha", 1.0f, 0f);
anim.addListener(collapseListener);
} else {
mOptionsLayout.setVisibility(View.VISIBLE);
- anim = ObjectAnimator.ofFloat(mOptionsLayout,"alpha", 0f, 1.0f);
+ anim = ObjectAnimator.ofFloat(mOptionsLayout, "alpha", 0f, 1.0f);
//anim = new TranslateAnimation(0.0f, 0.0f, mOptionsLayout.getHeight(), 0.0f);
}
@@ -492,16 +492,16 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- inflater.inflate(R.menu.logmenu, menu);
+ inflater.inflate(R.menu.logmenu, menu);
if (getResources().getBoolean(R.bool.logSildersAlwaysVisible))
menu.removeItem(R.id.toggle_time);
- }
+ }
- @Override
+ @Override
public void onResume() {
- super.onResume();
- VpnStatus.addStateListener(this);
+ super.onResume();
+ VpnStatus.addStateListener(this);
VpnStatus.addByteCountListener(this);
Intent intent = new Intent(getActivity(), OpenVPNService.class);
intent.setAction(OpenVPNService.START_SERVICE);
@@ -511,45 +511,45 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == START_VPN_CONFIG && resultCode== Activity.RESULT_OK) {
- String configuredVPN = data.getStringExtra(VpnProfile.EXTRA_PROFILEUUID);
+ if (requestCode == START_VPN_CONFIG && resultCode == Activity.RESULT_OK) {
+ String configuredVPN = data.getStringExtra(VpnProfile.EXTRA_PROFILEUUID);
- final VpnProfile profile = ProfileManager.get(getActivity(),configuredVPN);
- ProfileManager.getInstance(getActivity()).saveProfile(getActivity(), profile);
- // Name could be modified, reset List adapter
+ final VpnProfile profile = ProfileManager.get(getActivity(), configuredVPN);
+ ProfileManager.getInstance(getActivity()).saveProfile(getActivity(), profile);
+ // Name could be modified, reset List adapter
- AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
- dialog.setTitle(R.string.configuration_changed);
- dialog.setMessage(R.string.restart_vpn_after_change);
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
+ dialog.setTitle(R.string.configuration_changed);
+ dialog.setMessage(R.string.restart_vpn_after_change);
- dialog.setPositiveButton(R.string.restart,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Intent intent = new Intent(getActivity(), LaunchVPN.class);
- intent.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUIDString());
- intent.setAction(Intent.ACTION_MAIN);
- startActivity(intent);
- }
+ dialog.setPositiveButton(R.string.restart,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(getActivity(), LaunchVPN.class);
+ intent.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUIDString());
+ intent.setAction(Intent.ACTION_MAIN);
+ startActivity(intent);
+ }
- });
- dialog.setNegativeButton(R.string.ignore, null);
- dialog.create().show();
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
+ });
+ dialog.setNegativeButton(R.string.ignore, null);
+ dialog.create().show();
+ }
+ super.onActivityResult(requestCode, resultCode, data);
+ }
@Override
public void onStop() {
- super.onStop();
- VpnStatus.removeStateListener(this);
+ super.onStop();
+ VpnStatus.removeStateListener(this);
VpnStatus.removeByteCountListener(this);
getActivity().getPreferences(0).edit().putInt(LOGTIMEFORMAT, ladapter.mTimeFormat)
- .putInt(VERBOSITYLEVEL, ladapter.mLogLevel).apply();
+ .putInt(VERBOSITYLEVEL, ladapter.mLogLevel).apply();
}
@@ -566,7 +566,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
int position, long id) {
ClipboardManager clipboard = (ClipboardManager)
getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
- ClipData clip = ClipData.newPlainText("Log Entry",((TextView) view).getText());
+ ClipData clip = ClipData.newPlainText("Log Entry", ((TextView) view).getText());
clipboard.setPrimaryClip(clip);
Toast.makeText(getActivity(), R.string.copied_entry, Toast.LENGTH_SHORT).show();
return true;
@@ -582,8 +582,8 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
setHasOptionsMenu(true);
ladapter = new LogWindowListAdapter();
- ladapter.mTimeFormat = getActivity().getPreferences(0).getInt(LOGTIMEFORMAT, 0);
- int logLevel = getActivity().getPreferences(0).getInt(VERBOSITYLEVEL, 0);
+ ladapter.mTimeFormat = getActivity().getPreferences(0).getInt(LOGTIMEFORMAT, 1);
+ int logLevel = getActivity().getPreferences(0).getInt(VERBOSITYLEVEL, 1);
ladapter.setLogLevel(logLevel);
setListAdapter(ladapter);
@@ -591,7 +591,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
mTimeRadioGroup = (RadioGroup) v.findViewById(R.id.timeFormatRadioGroup);
mTimeRadioGroup.setOnCheckedChangeListener(this);
- if(ladapter.mTimeFormat== LogWindowListAdapter.TIME_FORMAT_ISO) {
+ if (ladapter.mTimeFormat == LogWindowListAdapter.TIME_FORMAT_ISO) {
mTimeRadioGroup.check(R.id.radioISO);
} else if (ladapter.mTimeFormat == LogWindowListAdapter.TIME_FORMAT_NONE) {
mTimeRadioGroup.check(R.id.radioNone);
@@ -599,16 +599,25 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
mTimeRadioGroup.check(R.id.radioShort);
}
+ mClearLogCheckBox = (CheckBox) v.findViewById(R.id.clearlogconnect);
+ mClearLogCheckBox.setChecked(PreferenceManager.getDefaultSharedPreferences(getActivity()).getBoolean(LaunchVPN.CLEARLOG, true));
+ mClearLogCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putBoolean(LaunchVPN.CLEARLOG, isChecked).apply();
+ }
+ });
+
mSpeedView = (TextView) v.findViewById(R.id.speed);
mOptionsLayout = (LinearLayout) v.findViewById(R.id.logOptionsLayout);
mLogLevelSlider = (SeekBar) v.findViewById(R.id.LogLevelSlider);
- mLogLevelSlider.setMax(VpnProfile.MAXLOGLEVEL-1);
- mLogLevelSlider.setProgress(logLevel-1);
+ mLogLevelSlider.setMax(VpnProfile.MAXLOGLEVEL - 1);
+ mLogLevelSlider.setProgress(logLevel - 1);
mLogLevelSlider.setOnSeekBarChangeListener(this);
- if(getResources().getBoolean(R.bool.logSildersAlwaysVisible))
+ if (getResources().getBoolean(R.bool.logSildersAlwaysVisible))
mOptionsLayout.setVisibility(View.VISIBLE);
mUpStatus = (TextView) v.findViewById(R.id.speedUp);
@@ -622,16 +631,16 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
- if(getResources().getBoolean(R.bool.logSildersAlwaysVisible)) {
- mShowOptionsLayout=true;
- if (mOptionsLayout!= null)
+ if (getResources().getBoolean(R.bool.logSildersAlwaysVisible)) {
+ mShowOptionsLayout = true;
+ if (mOptionsLayout != null)
mOptionsLayout.setVisibility(View.VISIBLE);
}
}
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
//getActionBar().setDisplayHomeAsUpEnabled(true);
@@ -663,10 +672,10 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
}
- @Override
+ @Override
public void onDestroy() {
- VpnStatus.removeLogListener(ladapter);
- super.onDestroy();
- }
+ VpnStatus.removeLogListener(ladapter);
+ super.onDestroy();
+ }
}
diff --git a/main/src/main/res/layout/log_silders.xml b/main/src/main/res/layout/log_silders.xml
index 152407f9..16e1b7ea 100644
--- a/main/src/main/res/layout/log_silders.xml
+++ b/main/src/main/res/layout/log_silders.xml
@@ -63,4 +63,11 @@
</RadioGroup>
+
+ <CheckBox
+ tools:checked="true"
+ android:id="@+id/clearlogconnect"
+ android:text="@string/clear_log_on_connect"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
</LinearLayout> \ No newline at end of file
diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml
index 7db7fb94..ee4f76ef 100755
--- a/main/src/main/res/values/strings.xml
+++ b/main/src/main/res/values/strings.xml
@@ -384,5 +384,6 @@
<string name="import_config_error">Importing the config yielded an error, cannot save it</string>
<string name="Search">Search</string>
<string name="lastdumpdate">(Last dump is %1$d:%2$dh old (%3$s))</string>
+ <string name="clear_log_on_connect">Clear log on new connection</string>
</resources>