OSDN Git Service

Automatic translation import
[android-x86/packages-apps-Eleven.git] / src / com / andrew / apollo / ui / activities / SettingsActivity.java
1 /*
2  * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0
3  * (the "License"); you may not use this file except in compliance with the
4  * License. You may obtain a copy of the License at
5  * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
6  * or agreed to in writing, software distributed under the License is
7  * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8  * KIND, either express or implied. See the License for the specific language
9  * governing permissions and limitations under the License.
10  */
11
12 package com.andrew.apollo.ui.activities;
13
14 import android.app.AlertDialog;
15 import android.content.DialogInterface;
16 import android.content.DialogInterface.OnClickListener;
17 import android.content.Intent;
18 import android.content.pm.PackageInfo;
19 import android.content.pm.PackageManager.NameNotFoundException;
20 import android.os.Bundle;
21 import android.preference.CheckBoxPreference;
22 import android.preference.Preference;
23 import android.preference.Preference.OnPreferenceChangeListener;
24 import android.preference.Preference.OnPreferenceClickListener;
25 import android.preference.PreferenceActivity;
26 import android.view.MenuItem;
27
28 import com.andrew.apollo.MusicPlaybackService;
29 import com.andrew.apollo.R;
30 import com.andrew.apollo.cache.ImageCache;
31 import com.andrew.apollo.ui.fragments.ThemeFragment;
32 import com.andrew.apollo.utils.ApolloUtils;
33 import com.andrew.apollo.utils.MusicUtils;
34 import com.andrew.apollo.utils.PreferenceUtils;
35 import com.andrew.apollo.widgets.ColorSchemeDialog;
36
37 /**
38  * Settings.
39  * 
40  * @author Andrew Neal (andrewdneal@gmail.com)
41  */
42 @SuppressWarnings("deprecation")
43 public class SettingsActivity extends PreferenceActivity {
44
45     /**
46      * Image cache
47      */
48     private ImageCache mImageCache;
49
50     private PreferenceUtils mPreferences;
51
52     /**
53      * {@inheritDoc}
54      */
55     @Override
56     protected void onCreate(final Bundle savedInstanceState) {
57         super.onCreate(savedInstanceState);
58         // Fade it in
59         overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
60
61         // Get the preferences
62         mPreferences = PreferenceUtils.getInstance(this);
63
64         // Initialze the image cache
65         mImageCache = ImageCache.getInstance(this);
66
67         // UP
68         getActionBar().setDisplayHomeAsUpEnabled(true);
69
70         // Add the preferences
71         addPreferencesFromResource(R.xml.settings);
72
73         // Interface settings
74         initInterface();
75         // Removes the cache entries
76         deleteCache();
77         // About
78         showOpenSourceLicenses();
79         // Update the version number
80         try {
81             final PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
82             findPreference("version").setSummary(packageInfo.versionName);
83         } catch (final NameNotFoundException e) {
84             findPreference("version").setSummary("?");
85         }
86     }
87
88     /**
89      * {@inheritDoc}
90      */
91     @Override
92     public boolean onOptionsItemSelected(final MenuItem item) {
93         switch (item.getItemId()) {
94             case android.R.id.home:
95                 onBackPressed();
96                 finish();
97                 return true;
98             default:
99                 break;
100         }
101         return super.onOptionsItemSelected(item);
102     }
103
104     /**
105      * {@inheritDoc}
106      */
107     @Override
108     protected void onStart() {
109         super.onStart();
110         MusicUtils.notifyForegroundStateChanged(this, true);
111     }
112
113     /**
114      * {@inheritDoc}
115      */
116     @Override
117     protected void onStop() {
118         super.onStop();
119         MusicUtils.notifyForegroundStateChanged(this, false);
120     }
121
122     /**
123      * Initializes the preferences under the "Interface" category
124      */
125     private void initInterface() {
126         // Color scheme picker
127         updateColorScheme();
128         // Open the theme chooser
129         openThemeChooser();
130     }
131
132     /**
133      * Shows the {@link ColorSchemeDialog} and then saves the changes.
134      */
135     private void updateColorScheme() {
136         final Preference colorScheme = findPreference("color_scheme");
137         colorScheme.setOnPreferenceClickListener(new OnPreferenceClickListener() {
138             @Override
139             public boolean onPreferenceClick(final Preference preference) {
140                 ApolloUtils.showColorPicker(SettingsActivity.this);
141                 return true;
142             }
143         });
144     }
145
146     /**
147      * Opens the {@link ThemeFragment}.
148      */
149     private void openThemeChooser() {
150         final Preference themeChooser = findPreference("theme_chooser");
151         themeChooser.setOnPreferenceClickListener(new OnPreferenceClickListener() {
152             @Override
153             public boolean onPreferenceClick(final Preference preference) {
154                 final Intent themeChooserIntent = new Intent(SettingsActivity.this,
155                         ThemesActivity.class);
156                 startActivity(themeChooserIntent);
157                 return true;
158             }
159         });
160     }
161
162     /**
163      * Removes all of the cache entries.
164      */
165     private void deleteCache() {
166         final Preference deleteCache = findPreference("delete_cache");
167         deleteCache.setOnPreferenceClickListener(new OnPreferenceClickListener() {
168             @Override
169             public boolean onPreferenceClick(final Preference preference) {
170                 new AlertDialog.Builder(SettingsActivity.this).setMessage(R.string.delete_warning)
171                         .setPositiveButton(android.R.string.ok, new OnClickListener() {
172
173                             @Override
174                             public void onClick(final DialogInterface dialog, final int which) {
175                                 mImageCache.clearCaches();
176                             }
177                         }).setNegativeButton(R.string.cancel, new OnClickListener() {
178
179                             @Override
180                             public void onClick(final DialogInterface dialog, final int which) {
181                                 dialog.dismiss();
182                             }
183                         }).create().show();
184                 return true;
185             }
186         });
187     }
188
189     /**
190      * Show the open source licenses
191      */
192     private void showOpenSourceLicenses() {
193         final Preference mOpenSourceLicenses = findPreference("open_source");
194         mOpenSourceLicenses.setOnPreferenceClickListener(new OnPreferenceClickListener() {
195
196             @Override
197             public boolean onPreferenceClick(final Preference preference) {
198                 ApolloUtils.createOpenSourceDialog(SettingsActivity.this).show();
199                 return true;
200             }
201         });
202     }
203 }