diff options
Diffstat (limited to 'src/com/android/browser')
-rw-r--r-- | src/com/android/browser/BrowserPreferencesPage.java | 15 | ||||
-rw-r--r-- | src/com/android/browser/BrowserQuotaPreference.java | 32 | ||||
-rw-r--r-- | src/com/android/browser/BrowserSettings.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/OriginSettings.java | 12 |
4 files changed, 51 insertions, 10 deletions
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 @@ public class BrowserPreferencesPage extends PreferenceActivity 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.util.Log; 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 @@ class BrowserQuotaPreference extends ListPreference { 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 @@ class BrowserSettings extends Observable { 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 @@ class BrowserSettings extends Observable { 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 @@ class OriginSettings { return mQuota; } + public long getUsage() { + return mUsage; + } + public void setScreen(PreferenceScreen screen) { mInfoScreen = screen; } @@ -130,5 +135,12 @@ class OriginSettings { 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); + } } } |