diff --git a/res/values/cherish_arrays.xml b/res/values/cherish_arrays.xml
index e029c34..2f2103c 100644
--- a/res/values/cherish_arrays.xml
+++ b/res/values/cherish_arrays.xml
@@ -238,4 +238,16 @@
- 2
- 3
+
+
+
+ - @string/traffic_disabled
+ - @string/traffic_statusbar
+ - @string/traffic_expanded_statusbar
+
+
+ - 0
+ - 1
+ - 2
+
diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml
index abffed4..1e6e141 100644
--- a/res/values/cherish_strings.xml
+++ b/res/values/cherish_strings.xml
@@ -349,8 +349,11 @@
Traffic indicators
Network traffic
- Show net activity in statusbar
+ Show net activity
+ Disabled
+ Statusbar
+ Expanded Statusbar
Net activity autohide threshold (KB/s)
- Hide arrows
- Hide the network traffic indicator arrows
+ Show arrows
+ Show the network traffic indicator arrows
diff --git a/res/xml/traffic.xml b/res/xml/traffic.xml
index 5a2bc9e..6768376 100644
--- a/res/xml/traffic.xml
+++ b/res/xml/traffic.xml
@@ -16,10 +16,13 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
-
+
+ android:key="network_traffic_arrow"
+ android:title="@string/network_traffic_arrow"
+ android:summary="@string/network_traffic_arrow_summary"
+ android:defaultValue="true" />
diff --git a/src/com/cherish/settings/fragments/Traffic.java b/src/com/cherish/settings/fragments/Traffic.java
index aabccc6..ad2cf55 100644
--- a/src/com/cherish/settings/fragments/Traffic.java
+++ b/src/com/cherish/settings/fragments/Traffic.java
@@ -51,9 +51,9 @@ import com.cherish.settings.preferences.SystemSettingSwitchPreference;
public class Traffic extends SettingsPreferenceFragment implements OnPreferenceChangeListener {
-
+ private ListPreference mNetTrafficLocation;
private CustomSeekBarPreference mThreshold;
- private SystemSettingSwitchPreference mNetMonitor;
+ private SystemSettingSwitchPreference mShowArrows;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -64,18 +64,21 @@ public class Traffic extends SettingsPreferenceFragment implements OnPreferenceC
final ContentResolver resolver = getActivity().getContentResolver();
final PreferenceScreen prefSet = getPreferenceScreen();
- boolean isNetMonitorEnabled = Settings.System.getIntForUser(resolver,
- Settings.System.NETWORK_TRAFFIC_STATE, 1, UserHandle.USER_CURRENT) == 1;
- mNetMonitor = (SystemSettingSwitchPreference) findPreference("network_traffic_state");
- mNetMonitor.setChecked(isNetMonitorEnabled);
- mNetMonitor.setOnPreferenceChangeListener(this);
+ mNetTrafficLocation = (ListPreference) findPreference("network_traffic_location");
+ int location = Settings.System.getIntForUser(resolver,
+ Settings.System.NETWORK_TRAFFIC_LOCATION, 0, UserHandle.USER_CURRENT);
+ mNetTrafficLocation.setValue(String.valueOf(location));
+ mNetTrafficLocation.setSummary(mNetTrafficLocation.getEntry());
+ mNetTrafficLocation.setOnPreferenceChangeListener(this);
int trafvalue = Settings.System.getIntForUser(resolver,
Settings.System.NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD, 1, UserHandle.USER_CURRENT);
mThreshold = (CustomSeekBarPreference) findPreference("network_traffic_autohide_threshold");
mThreshold.setValue(trafvalue);
mThreshold.setOnPreferenceChangeListener(this);
- mThreshold.setEnabled(isNetMonitorEnabled);
+ mShowArrows = (SystemSettingSwitchPreference) findPreference("network_traffic_arrow");
+
+ updateTrafficLocation(location);
}
@Override
@@ -90,13 +93,13 @@ public class Traffic extends SettingsPreferenceFragment implements OnPreferenceC
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
- if (preference == mNetMonitor) {
- boolean value = (Boolean) objValue;
+ if (preference == mNetTrafficLocation) {
+ int location = Integer.valueOf((String) objValue);
+ int index = mNetTrafficLocation.findIndexOfValue((String) objValue);
Settings.System.putIntForUser(getActivity().getContentResolver(),
- Settings.System.NETWORK_TRAFFIC_STATE, value ? 1 : 0,
- UserHandle.USER_CURRENT);
- mNetMonitor.setChecked(value);
- mThreshold.setEnabled(value);
+ Settings.System.NETWORK_TRAFFIC_LOCATION, location, UserHandle.USER_CURRENT);
+ mNetTrafficLocation.setSummary(mNetTrafficLocation.getEntries()[index]);
+ updateTrafficLocation(location);
return true;
} else if (preference == mThreshold) {
int val = (Integer) objValue;
@@ -107,4 +110,35 @@ public class Traffic extends SettingsPreferenceFragment implements OnPreferenceC
}
return false;
}
+
+ public void updateTrafficLocation(int location) {
+ switch(location){
+ case 0:
+ mThreshold.setEnabled(false);
+ mShowArrows.setEnabled(false);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.NETWORK_TRAFFIC_STATE, 0);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.NETWORK_TRAFFIC_EXPANDED_STATUS_BAR_STATE, 0);
+ break;
+ case 1:
+ mThreshold.setEnabled(true);
+ mShowArrows.setEnabled(true);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.NETWORK_TRAFFIC_STATE, 1);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.NETWORK_TRAFFIC_EXPANDED_STATUS_BAR_STATE, 0);
+ break;
+ case 2:
+ mThreshold.setEnabled(true);
+ mShowArrows.setEnabled(true);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.NETWORK_TRAFFIC_STATE, 0);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.NETWORK_TRAFFIC_EXPANDED_STATUS_BAR_STATE, 1);
+ break;
+ default:
+ break;
+ }
+ }
}