diff options
author | Daisuke Miyakawa <dmiyakawa@google.com> | 2010-09-02 10:50:48 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-09-02 10:50:48 -0700 |
commit | cbe749e4129f17ff0a8b4270d594e6ce1eabce46 (patch) | |
tree | 72fab8f153fab8e22014c4caecf8133d6f51626e | |
parent | df4a5b3ada2603f1df51a28610796793ea208338 (diff) | |
parent | cdadb566447451de7e1431b6c5eb2aef1e9157fc (diff) | |
download | packages_apps_Settings-cbe749e4129f17ff0a8b4270d594e6ce1eabce46.zip packages_apps_Settings-cbe749e4129f17ff0a8b4270d594e6ce1eabce46.tar.gz packages_apps_Settings-cbe749e4129f17ff0a8b4270d594e6ce1eabce46.tar.bz2 |
Merge "Use LocalePicker fragment in framework."
-rw-r--r-- | res/layout/locale_picker_item.xml | 38 | ||||
-rw-r--r-- | src/com/android/settings/LocalePicker.java | 179 |
2 files changed, 8 insertions, 209 deletions
diff --git a/res/layout/locale_picker_item.xml b/res/layout/locale_picker_item.xml deleted file mode 100644 index 091419f..0000000 --- a/res/layout/locale_picker_item.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2008 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:gravity="center_vertical" - android:minHeight="?android:attr/listPreferredItemHeight" - android:padding="5dip"> -<!-- - <ImageView android:id="@+id/icon" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:focusable="false" - android:clickable="false" - android:src="@drawable/place_holder_for_locale" - /> ---> - <TextView android:id="@+id/locale" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceLarge" - /> -</LinearLayout > diff --git a/src/com/android/settings/LocalePicker.java b/src/com/android/settings/LocalePicker.java index 65c738a..2030e95 100644 --- a/src/com/android/settings/LocalePicker.java +++ b/src/com/android/settings/LocalePicker.java @@ -16,178 +16,15 @@ package com.android.settings; -import android.app.Activity; -import android.app.ActivityManagerNative; -import android.app.IActivityManager; -import android.app.ListFragment; -import android.app.backup.BackupManager; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.os.Bundle; -import android.os.RemoteException; -import android.util.Log; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -import java.text.Collator; -import java.util.Arrays; -import java.util.Locale; - -public class LocalePicker extends ListFragment { - private static final String TAG = "LocalePicker"; - private static final boolean DEBUG = false; - - Loc[] mLocales; - String[] mSpecialLocaleCodes; - String[] mSpecialLocaleNames; - - Activity mActivity; - - private static class Loc implements Comparable<Loc> { - static Collator sCollator = Collator.getInstance(); - - String label; - Locale locale; - - public Loc(String label, Locale locale) { - this.label = label; - this.locale = locale; - } - - @Override - public String toString() { - return this.label; - } - - @Override - public int compareTo(Loc another) { - return sCollator.compare(this.label, another.label); - } - } - - private void setUpLocaleList() { - final Resources resources = mActivity.getResources(); - mSpecialLocaleCodes = resources.getStringArray(R.array.special_locale_codes); - mSpecialLocaleNames = resources.getStringArray(R.array.special_locale_names); - - final String[] locales = mActivity.getAssets().getLocales(); - Arrays.sort(locales); - final int origSize = locales.length; - Loc[] preprocess = new Loc[origSize]; - int finalSize = 0; - for (int i = 0 ; i < origSize; i++ ) { - String s = locales[i]; - int len = s.length(); - if (len == 5) { - String language = s.substring(0, 2); - String country = s.substring(3, 5); - Locale l = new Locale(language, country); - - if (finalSize == 0) { - if (DEBUG) { - Log.v(TAG, "adding initial "+ toTitleCase(l.getDisplayLanguage(l))); - } - preprocess[finalSize++] = - new Loc(toTitleCase(l.getDisplayLanguage(l)), l); - } else { - // check previous entry: - // same lang and a country -> upgrade to full name and - // insert ours with full name - // diff lang -> insert ours with lang-only name - if (preprocess[finalSize-1].locale.getLanguage().equals( - language)) { - if (DEBUG) { - Log.v(TAG, "backing up and fixing "+ - preprocess[finalSize-1].label+" to "+ - getDisplayName(preprocess[finalSize-1].locale)); - } - preprocess[finalSize-1].label = toTitleCase( - getDisplayName(preprocess[finalSize-1].locale)); - if (DEBUG) { - Log.v(TAG, " and adding "+ toTitleCase(getDisplayName(l))); - } - preprocess[finalSize++] = - new Loc(toTitleCase(getDisplayName(l)), l); - } else { - String displayName; - if (s.equals("zz_ZZ")) { - displayName = "Pseudo..."; - } else { - displayName = toTitleCase(l.getDisplayLanguage(l)); - } - if (DEBUG) { - Log.v(TAG, "adding "+displayName); - } - preprocess[finalSize++] = new Loc(displayName, l); - } - } - } - } - mLocales = new Loc[finalSize]; - for (int i = 0; i < finalSize ; i++) { - mLocales[i] = preprocess[i]; - } - Arrays.sort(mLocales); - final int layoutId = R.layout.locale_picker_item; - final int fieldId = R.id.locale; - final ArrayAdapter<Loc> adapter = - new ArrayAdapter<Loc>(mActivity, layoutId, fieldId, mLocales); - setListAdapter(adapter); - } - - @Override - public void onActivityCreated(final Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - mActivity = getActivity(); - setUpLocaleList(); - } - - private static String toTitleCase(String s) { - if (s.length() == 0) { - return s; - } - - return Character.toUpperCase(s.charAt(0)) + s.substring(1); - } - - private String getDisplayName(Locale l) { - String code = l.toString(); - - for (int i = 0; i < mSpecialLocaleCodes.length; i++) { - if (mSpecialLocaleCodes[i].equals(code)) { - return mSpecialLocaleNames[i]; - } - } - - return l.getDisplayName(l); +public class LocalePicker extends com.android.internal.app.LocalePicker + implements com.android.internal.app.LocalePicker.LocaleSelectionListener { + public LocalePicker() { + super(); + setLocaleSelectionListener(this); } @Override - public void onResume() { - super.onResume(); - getListView().requestFocus(); - } - - @Override - public void onListItemClick(ListView l, View v, int position, long id) { - try { - IActivityManager am = ActivityManagerNative.getDefault(); - Configuration config = am.getConfiguration(); - - Loc loc = mLocales[position]; - config.locale = loc.locale; - - // indicate this isn't some passing default - the user wants this remembered - config.userSetLocale = true; - - am.updateConfiguration(config); - // Trigger the dirty bit for the Settings Provider. - BackupManager.dataChanged("com.android.providers.settings"); - } catch (RemoteException e) { - // Intentionally left blank - } - - mActivity.finish(); + public void onLocaleSelected() { + getActivity().onBackPressed(); } -}
\ No newline at end of file +} |