Home | History | Annotate | Download | only in quicksearchbox
      1 /*
      2  * Copyright (C) 2010 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.quicksearchbox;
     18 
     19 import android.os.Bundle;
     20 import android.preference.Preference;
     21 import android.preference.PreferenceActivity;
     22 import android.preference.PreferenceGroup;
     23 import android.preference.Preference.OnPreferenceChangeListener;
     24 import android.util.Log;
     25 
     26 /**
     27  * Activity for selecting searchable items.
     28  */
     29 public class SearchableItemsSettings extends PreferenceActivity
     30         implements OnPreferenceChangeListener {
     31 
     32     private static final boolean DBG = false;
     33     private static final String TAG = "QSB.SearchableItemsSettings";
     34 
     35     // Only used to find the preferences after inflating
     36     private static final String SEARCH_CORPORA_PREF = "search_corpora";
     37 
     38     // References to the top-level preference objects
     39     private PreferenceGroup mCorporaPreferences;
     40 
     41     @Override
     42     protected void onCreate(Bundle savedInstanceState) {
     43         super.onCreate(savedInstanceState);
     44 
     45         getPreferenceManager().setSharedPreferencesName(SearchSettings.PREFERENCES_NAME);
     46 
     47         addPreferencesFromResource(R.xml.preferences_searchable_items);
     48 
     49         mCorporaPreferences = (PreferenceGroup) getPreferenceScreen().findPreference(
     50                 SEARCH_CORPORA_PREF);
     51 
     52         populateSourcePreference();
     53     }
     54 
     55     private Corpora getCorpora() {
     56         return QsbApplication.get(this).getCorpora();
     57     }
     58 
     59     /**
     60      * Fills the suggestion source list.
     61      */
     62     private void populateSourcePreference() {
     63         mCorporaPreferences.setOrderingAsAdded(false);
     64         for (Corpus corpus : getCorpora().getAllCorpora()) {
     65             Preference pref = createCorpusPreference(corpus);
     66             if (pref != null) {
     67                 if (DBG) Log.d(TAG, "Adding corpus: " + corpus);
     68                 mCorporaPreferences.addPreference(pref);
     69             }
     70         }
     71     }
     72 
     73     /**
     74      * Adds a suggestion source to the list of suggestion source checkbox preferences.
     75      */
     76     private Preference createCorpusPreference(Corpus corpus) {
     77         SearchableItemPreference sourcePref = new SearchableItemPreference(this);
     78         sourcePref.setKey(SearchSettings.getCorpusEnabledPreference(corpus));
     79         // Put web corpus first. The rest are alphabetical.
     80         if (corpus.isWebCorpus()) {
     81             sourcePref.setOrder(0);
     82         }
     83         sourcePref.setDefaultValue(corpus.isCorpusDefaultEnabled());
     84         sourcePref.setOnPreferenceChangeListener(this);
     85         CharSequence label = corpus.getLabel();
     86         sourcePref.setTitle(label);
     87         CharSequence description = corpus.getSettingsDescription();
     88         sourcePref.setSummaryOn(description);
     89         sourcePref.setSummaryOff(description);
     90         sourcePref.setIcon(corpus.getCorpusIcon());
     91         return sourcePref;
     92     }
     93 
     94     public boolean onPreferenceChange(Preference preference, Object newValue) {
     95         SearchSettings.broadcastSettingsChanged(this);
     96         return true;
     97     }
     98 
     99 }
    100