Nicolas Roard | 78a98e4 | 2009-05-11 13:34:17 +0100 | [diff] [blame^] | 1 | /* |
| 2 | * Copyright (C) 2009 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | package com.android.browser; |
| 18 | |
| 19 | import android.content.Context; |
| 20 | import android.preference.PreferenceActivity; |
| 21 | import android.preference.PreferenceScreen; |
| 22 | import android.util.Log; |
| 23 | import android.webkit.WebStorage; |
| 24 | |
| 25 | /** |
| 26 | * Manage the settings for an origin. |
| 27 | * We use it to keep track of the HTML5 settings, i.e. database (webstorage). |
| 28 | */ |
| 29 | class OriginSettings { |
| 30 | |
| 31 | private String TAG = "OriginSettings"; |
| 32 | private String mOrigin = null; |
| 33 | private long mQuota = 0; |
| 34 | private long mUsage = 0; |
| 35 | private PreferenceScreen mInfoScreen; |
| 36 | private PreferenceScreen mRootScreen; |
| 37 | private PreferenceActivity mActivity; |
| 38 | |
| 39 | private static String sMBUsed = null; |
| 40 | private static String sNoQuotaLeft = null; |
| 41 | private static String sMBLeft = null; |
| 42 | |
| 43 | public OriginSettings(PreferenceActivity activity, String origin) { |
| 44 | mOrigin = origin; |
| 45 | mUsage = WebStorage.getInstance().getUsageForOrigin(mOrigin); |
| 46 | mQuota = WebStorage.getInstance().getQuotaForOrigin(mOrigin); |
| 47 | mActivity = activity; |
| 48 | if (sMBUsed == null) { |
| 49 | sMBUsed = mActivity.getString( |
| 50 | R.string.webstorage_origin_summary_mb_used); |
| 51 | sNoQuotaLeft = mActivity.getString( |
| 52 | R.string.webstorage_origin_summary_no_quota_left); |
| 53 | sMBLeft = mActivity.getString( |
| 54 | R.string.webstorage_origin_summary_mb_left); |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | public String getOrigin() { |
| 59 | return mOrigin; |
| 60 | } |
| 61 | |
| 62 | public long getQuota() { |
| 63 | return mQuota; |
| 64 | } |
| 65 | |
| 66 | public void setScreen(PreferenceScreen screen) { |
| 67 | mInfoScreen = screen; |
| 68 | } |
| 69 | |
| 70 | public void setRootScreen(PreferenceScreen screen) { |
| 71 | mRootScreen = screen; |
| 72 | } |
| 73 | |
| 74 | private String sizeValueToString(long value) { |
| 75 | float mb = (float) value / (1024.0F * 1024.0F); |
| 76 | int val = (int) (mb * 10); |
| 77 | float ret = (float) (val / 10.0F); |
| 78 | if (ret <= 0) { |
| 79 | return "0"; |
| 80 | } |
| 81 | return String.valueOf(ret); |
| 82 | } |
| 83 | |
| 84 | public void updateSummary() { |
| 85 | String summary = sizeValueToString(mUsage) + " " + sMBUsed; |
| 86 | if ((mQuota <= 0) || ((mQuota - mUsage) <= 0)) { |
| 87 | summary += ", " + sNoQuotaLeft; |
| 88 | } else { |
| 89 | summary += " (" + sizeValueToString(mQuota - mUsage); |
| 90 | summary += " " + sMBLeft + ")"; |
| 91 | } |
| 92 | mInfoScreen.setSummary(summary); |
| 93 | mActivity.onContentChanged(); |
| 94 | } |
| 95 | |
| 96 | public void setup() { |
| 97 | mInfoScreen.setTitle(mOrigin); |
| 98 | mInfoScreen.setKey(mOrigin); |
| 99 | updateSummary(); |
| 100 | |
| 101 | BrowserQuotaPreference manageSite = new BrowserQuotaPreference(mActivity, this); |
| 102 | BrowserYesNoPreference clearAllData = new BrowserYesNoPreference(mActivity, this); |
| 103 | |
| 104 | manageSite.setTitle(R.string.webstorage_manage_quota_title); |
| 105 | manageSite.setSummary(R.string.webstorage_manage_quota_summary); |
| 106 | manageSite.setKey(BrowserSettings.PREF_MANAGE_QUOTA); |
| 107 | manageSite.setEntries(R.array.webstorage_quota_entries); |
| 108 | manageSite.setEntryValues(R.array.webstorage_quota_entries_values); |
| 109 | |
| 110 | clearAllData.setTitle(R.string.webstorage_clear_data_title); |
| 111 | clearAllData.setSummary(R.string.webstorage_clear_data_summary); |
| 112 | clearAllData.setKey(BrowserSettings.PREF_CLEAR_ALL_DATA); |
| 113 | clearAllData.setDialogTitle(R.string.webstorage_clear_data_dialog_title); |
| 114 | clearAllData.setDialogMessage(R.string.webstorage_clear_data_dialog_message); |
| 115 | clearAllData.setDialogIcon(android.R.drawable.ic_dialog_alert); |
| 116 | |
| 117 | mInfoScreen.addPreference(manageSite); |
| 118 | mInfoScreen.addPreference(clearAllData); |
| 119 | } |
| 120 | |
| 121 | public void setQuota(long quota) { |
| 122 | mQuota = quota; |
| 123 | WebStorage.getInstance().setQuotaForOrigin(mOrigin, mQuota); |
| 124 | mInfoScreen.getDialog().dismiss(); |
| 125 | updateSummary(); |
| 126 | } |
| 127 | |
| 128 | public void delete() { |
| 129 | WebStorage.getInstance().deleteOrigin(mOrigin); |
| 130 | mInfoScreen.removeAll(); |
| 131 | mRootScreen.removePreference(mInfoScreen); |
| 132 | mInfoScreen.getDialog().dismiss(); |
| 133 | } |
| 134 | } |