SettingActivity.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:4k
源码类别:

android开发

开发平台:

C/C++

  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. package com.android.im.app;
  18. import android.content.Intent;
  19. import android.os.Bundle;
  20. import android.preference.Preference;
  21. import android.preference.PreferenceScreen;
  22. import android.preference.CheckBoxPreference;
  23. import android.provider.Im;
  24. import android.util.Log;
  25. import com.android.im.R;
  26. import com.android.im.service.ImServiceConstants;
  27. public class SettingActivity extends android.preference.PreferenceActivity {
  28.     private static final String KEY_NOTIFICATION_SOUND = "notification-sound";
  29.     private static final String KEY_NOTIFICATION_VIBRATE = "notification-vibrate";
  30.     private static final String KEY_ENABLE_NOTIFICATIONS = "enable-notifications";
  31.     private static final String KEY_HIDE_OFFLINE_CONTACTS = "hide-offline-contacts";
  32.     private long mProviderId;
  33.     @Override
  34.     public void onCreate(Bundle icicle) {
  35.         super.onCreate(icicle);
  36.         addPreferencesFromResource(R.xml.preferences);
  37.         Intent intent = getIntent();
  38.         mProviderId = intent.getLongExtra(ImServiceConstants.EXTRA_INTENT_PROVIDER_ID, -1);
  39.         if (mProviderId < 0) {
  40.             Log.e(ImApp.LOG_TAG,"SettingActivity intent requires provider id extra");
  41.             throw new RuntimeException("SettingActivity must be created with an provider id");
  42.         }
  43.         setInitialValues();
  44.     }
  45.     private void setInitialValues() {
  46.         Im.ProviderSettings.QueryMap settings = new Im.ProviderSettings.QueryMap(
  47.                 getContentResolver(), mProviderId,
  48.                 false /* keep updated */, null /* no handler */);
  49.         CheckBoxPreference pref = (CheckBoxPreference) findPreference(KEY_HIDE_OFFLINE_CONTACTS);
  50.         pref.setChecked(settings.getHideOfflineContacts());
  51.         pref = (CheckBoxPreference) findPreference(KEY_ENABLE_NOTIFICATIONS);
  52.         pref.setChecked(settings.getEnableNotification());
  53.         pref = (CheckBoxPreference) findPreference(KEY_NOTIFICATION_VIBRATE);
  54.         pref.setChecked(settings.getVibrate());
  55.         pref = (CheckBoxPreference) findPreference(KEY_NOTIFICATION_SOUND);
  56.         pref.setChecked(settings.getRingtoneURI() != null);
  57.         settings.close();
  58.     }
  59.     @Override
  60.     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
  61.         if (preference instanceof CheckBoxPreference) {
  62.             final Im.ProviderSettings.QueryMap settings = new Im.ProviderSettings.QueryMap(
  63.                     getContentResolver(), mProviderId,
  64.                     false /* keep updated */, null /* no handler */);
  65.             String key = preference.getKey();
  66.             boolean value = ((CheckBoxPreference) preference).isChecked();
  67.             if (key.equals(KEY_HIDE_OFFLINE_CONTACTS)) {
  68.                 settings.setHideOfflineContacts(value);
  69.             } else if (key.equals(KEY_ENABLE_NOTIFICATIONS)) {
  70.                 settings.setEnableNotification(value);
  71.             } else if (key.equals(KEY_NOTIFICATION_VIBRATE)) {
  72.                 settings.setVibrate(value);
  73.             } else if (key.equals(KEY_NOTIFICATION_SOUND)){
  74.                 if (!value) {
  75.                     settings.setRingtoneURI(null);
  76.                 }
  77.             }
  78.             settings.close();
  79.             return true;
  80.         }
  81.         
  82.         return false;
  83.     }
  84. }