Make menus inactive when needed and only show possible quotas
diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java
index e093ced..c6ce8a6 100644
--- a/src/com/android/browser/BrowserPreferencesPage.java
+++ b/src/com/android/browser/BrowserPreferencesPage.java
@@ -70,20 +70,29 @@
e = findPreference(BrowserSettings.PREF_GEARS_SETTINGS);
e.setOnPreferenceClickListener(this);
- PreferenceScreen s = (PreferenceScreen)
+ PreferenceScreen manageDatabases = (PreferenceScreen)
findPreference(BrowserSettings.PREF_WEBSTORAGE_SETTINGS);
+ Preference clearDatabases =
+ findPreference(BrowserSettings.PREF_WEBSTORAGE_CLEAR_ALL);
+
Vector origins = WebStorage.getInstance().getOrigins();
+ manageDatabases.setEnabled(false);
+ clearDatabases.setEnabled(false);
if (origins != null) {
+ if (origins.size() > 0) {
+ manageDatabases.setEnabled(true);
+ clearDatabases.setEnabled(true);
+ }
for (int i = 0; i < origins.size(); i++) {
OriginSettings origin =
new OriginSettings(this, (String) origins.get(i));
PreferenceScreen screen =
getPreferenceManager().createPreferenceScreen(this);
origin.setScreen(screen);
- origin.setRootScreen(s);
+ origin.setRootScreen(manageDatabases);
origin.setup();
- s.addPreference(screen);
+ manageDatabases.addPreference(screen);
}
}
}
diff --git a/src/com/android/browser/BrowserQuotaPreference.java b/src/com/android/browser/BrowserQuotaPreference.java
index 653c085..e635bb2 100644
--- a/src/com/android/browser/BrowserQuotaPreference.java
+++ b/src/com/android/browser/BrowserQuotaPreference.java
@@ -24,6 +24,8 @@
import android.view.View;
import android.webkit.WebStorage;
+import java.util.Vector;
+
/**
* Utility class to display and manage the choosen quota
* for an origin (HTML5 WebStorage feature)
@@ -44,25 +46,41 @@
mOrigin = origin;
}
- public void setCurrentIndex () {
+ /**
+ * Find the minimum quota fitting the current usage
+ * and only show larger quotas in the list
+ */
+ public void setQuotaList () {
+ CharSequence[] entries = getEntries();
CharSequence[] values = getEntryValues();
- long quota = 0;
+ Vector<CharSequence> listEntries = new Vector<CharSequence>();
+ Vector<CharSequence> listValues = new Vector<CharSequence>();
+ long usage = 0;
if (mOrigin != null) {
- quota = mOrigin.getQuota();
+ usage = mOrigin.getUsage();
}
for (int i = 0; i < values.length; i++) {
long value = Long.parseLong(values[i].toString());
value *= sOneMB; // the string array is expressed in MB
- if (value >= quota) {
- setValueIndex(i);
- break;
+ if (value >= usage) {
+ listEntries.add(entries[i]);
+ listValues.add(values[i]);
}
}
+ CharSequence[] newEntries = new CharSequence[listEntries.size()];
+ CharSequence[] newValues = new CharSequence[listValues.size()];
+ for (int i = 0; i < listEntries.size(); i++) {
+ newEntries[i] = listEntries.get(i);
+ newValues[i] = listValues.get(i);
+ }
+ setEntries(newEntries);
+ setEntryValues(newValues);
+ setValueIndex(0);
}
@Override
protected View onCreateDialogView() {
- setCurrentIndex();
+ setQuotaList();
return super.onCreateDialogView();
}
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 9be22ea..36a9d3f 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -128,6 +128,7 @@
public final static String PREF_DEBUG_SETTINGS = "debug_menu";
public final static String PREF_GEARS_SETTINGS = "gears_settings";
public final static String PREF_WEBSTORAGE_SETTINGS = "webstorage_manage_databases";
+ public final static String PREF_WEBSTORAGE_CLEAR_ALL = "webstorage_clear_databases";
public final static String PREF_TEXT_SIZE = "text_size";
public final static String PREF_DEFAULT_TEXT_ENCODING =
"default_text_encoding";
@@ -492,6 +493,7 @@
PreferenceScreen screen = (PreferenceScreen)
activity.findPreference(BrowserSettings.PREF_WEBSTORAGE_SETTINGS);
screen.removeAll();
+ screen.setEnabled(false);
}
/*package*/ void resetDefaultPreferences(Context ctx) {
diff --git a/src/com/android/browser/OriginSettings.java b/src/com/android/browser/OriginSettings.java
index 3c7273d..e80888a 100644
--- a/src/com/android/browser/OriginSettings.java
+++ b/src/com/android/browser/OriginSettings.java
@@ -17,6 +17,7 @@
package com.android.browser;
import android.content.Context;
+import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.util.Log;
@@ -63,6 +64,10 @@
return mQuota;
}
+ public long getUsage() {
+ return mUsage;
+ }
+
public void setScreen(PreferenceScreen screen) {
mInfoScreen = screen;
}
@@ -130,5 +135,12 @@
mInfoScreen.removeAll();
mRootScreen.removePreference(mInfoScreen);
mInfoScreen.getDialog().dismiss();
+ if (mRootScreen.getPreferenceCount() == 0) {
+ mRootScreen.getDialog().dismiss();
+ mRootScreen.setEnabled(false);
+ Preference clearDatabases = mActivity.findPreference(
+ BrowserSettings.PREF_WEBSTORAGE_CLEAR_ALL);
+ clearDatabases.setEnabled(false);
+ }
}
}