• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007-2008 Esmertec AG.
3  * Copyright (C) 2007-2008 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package com.android.mms.ui;
19 
20 import com.android.mms.MmsConfig;
21 import com.android.mms.R;
22 
23 import android.content.Intent;
24 import android.os.Bundle;
25 import android.preference.Preference;
26 import android.preference.PreferenceActivity;
27 import android.preference.PreferenceCategory;
28 import android.preference.PreferenceManager;
29 import android.preference.PreferenceScreen;
30 import android.telephony.TelephonyManager;
31 import android.view.Menu;
32 import android.view.MenuItem;
33 
34 import com.android.mms.util.Recycler;
35 
36 /**
37  * With this activity, users can set preferences for MMS and SMS and
38  * can access and manipulate SMS messages stored on the SIM.
39  */
40 public class MessagingPreferenceActivity extends PreferenceActivity {
41     // Symbolic names for the keys used for preference lookup
42     public static final String MMS_DELIVERY_REPORT_MODE = "pref_key_mms_delivery_reports";
43     public static final String EXPIRY_TIME              = "pref_key_mms_expiry";
44     public static final String PRIORITY                 = "pref_key_mms_priority";
45     public static final String READ_REPORT_MODE         = "pref_key_mms_read_reports";
46     public static final String SMS_DELIVERY_REPORT_MODE = "pref_key_sms_delivery_reports";
47     public static final String NOTIFICATION_ENABLED     = "pref_key_enable_notifications";
48     public static final String NOTIFICATION_VIBRATE     = "pref_key_vibrate";
49     public static final String NOTIFICATION_RINGTONE    = "pref_key_ringtone";
50     public static final String AUTO_RETRIEVAL           = "pref_key_mms_auto_retrieval";
51     public static final String RETRIEVAL_DURING_ROAMING = "pref_key_mms_retrieval_during_roaming";
52     public static final String AUTO_DELETE              = "pref_key_auto_delete";
53 
54     // Menu entries
55     private static final int MENU_RESTORE_DEFAULTS    = 1;
56 
57     private Preference mSmsLimitPref;
58     private Preference mMmsLimitPref;
59     private Preference mManageSimPref;
60     private Recycler mSmsRecycler;
61     private Recycler mMmsRecycler;
62 
63     @Override
onCreate(Bundle icicle)64     protected void onCreate(Bundle icicle) {
65         super.onCreate(icicle);
66         addPreferencesFromResource(R.xml.preferences);
67 
68         mManageSimPref = findPreference("pref_key_manage_sim_messages");
69         mSmsLimitPref = findPreference("pref_key_sms_delete_limit");
70         mMmsLimitPref = findPreference("pref_key_mms_delete_limit");
71 
72         if (!TelephonyManager.getDefault().hasIccCard()) {
73             // No SIM card, remove the SIM-related prefs
74             PreferenceCategory smsCategory =
75                 (PreferenceCategory)findPreference("pref_key_sms_settings");
76             smsCategory.removePreference(mManageSimPref);
77         }
78         if (!MmsConfig.getMmsEnabled()) {
79             // No Mms, remove all the mms-related preferences
80             PreferenceCategory mmsOptions =
81                 (PreferenceCategory)findPreference("pref_key_mms_settings");
82             getPreferenceScreen().removePreference(mmsOptions);
83 
84             PreferenceCategory storageOptions =
85                 (PreferenceCategory)findPreference("pref_key_storage_settings");
86             storageOptions.removePreference(findPreference("pref_key_mms_delete_limit"));
87         }
88 
89         mSmsRecycler = Recycler.getSmsRecycler();
90         mMmsRecycler = Recycler.getMmsRecycler();
91 
92         // Fix up the recycler's summary with the correct values
93         setSmsDisplayLimit();
94         setMmsDisplayLimit();
95     }
96 
setSmsDisplayLimit()97     private void setSmsDisplayLimit() {
98         mSmsLimitPref.setSummary(
99                 getString(R.string.pref_summary_delete_limit,
100                         mSmsRecycler.getMessageLimit(this)));
101     }
102 
setMmsDisplayLimit()103     private void setMmsDisplayLimit() {
104         mMmsLimitPref.setSummary(
105                 getString(R.string.pref_summary_delete_limit,
106                         mMmsRecycler.getMessageLimit(this)));
107     }
108 
onCreateOptionsMenu(Menu menu)109     public boolean onCreateOptionsMenu(Menu menu) {
110         super.onCreateOptionsMenu(menu);
111         menu.clear();
112         menu.add(0, MENU_RESTORE_DEFAULTS, 0, R.string.restore_default);
113         return true;
114     }
115 
116     @Override
onOptionsItemSelected(MenuItem item)117     public boolean onOptionsItemSelected(MenuItem item) {
118         switch (item.getItemId()) {
119             case MENU_RESTORE_DEFAULTS:
120                 restoreDefaultPreferences();
121                 return true;
122         }
123         return false;
124     }
125 
126     @Override
onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)127     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
128             Preference preference) {
129         if (preference == mSmsLimitPref) {
130             new NumberPickerDialog(this,
131                     mSmsLimitListener,
132                     mSmsRecycler.getMessageLimit(this),
133                     mSmsRecycler.getMessageMinLimit(),
134                     mSmsRecycler.getMessageMaxLimit(),
135                     R.string.pref_title_sms_delete).show();
136         } else if (preference == mMmsLimitPref) {
137             new NumberPickerDialog(this,
138                     mMmsLimitListener,
139                     mMmsRecycler.getMessageLimit(this),
140                     mMmsRecycler.getMessageMinLimit(),
141                     mMmsRecycler.getMessageMaxLimit(),
142                     R.string.pref_title_mms_delete).show();
143         } else if (preference == mManageSimPref) {
144             startActivity(new Intent(this, ManageSimMessages.class));
145         }
146 
147         return super.onPreferenceTreeClick(preferenceScreen, preference);
148     }
149 
150 
restoreDefaultPreferences()151     private void restoreDefaultPreferences() {
152         PreferenceManager.getDefaultSharedPreferences(this)
153                 .edit().clear().commit();
154         setPreferenceScreen(null);
155         addPreferencesFromResource(R.xml.preferences);
156     }
157 
158     NumberPickerDialog.OnNumberSetListener mSmsLimitListener =
159         new NumberPickerDialog.OnNumberSetListener() {
160             public void onNumberSet(int limit) {
161                 mSmsRecycler.setMessageLimit(MessagingPreferenceActivity.this, limit);
162                 setSmsDisplayLimit();
163             }
164     };
165 
166     NumberPickerDialog.OnNumberSetListener mMmsLimitListener =
167         new NumberPickerDialog.OnNumberSetListener() {
168             public void onNumberSet(int limit) {
169                 mMmsRecycler.setMessageLimit(MessagingPreferenceActivity.this, limit);
170                 setMmsDisplayLimit();
171             }
172     };
173 }
174