OSDN Git Service

Eleven: Update the bottom action bar to be latest, add update playlist view
[android-x86/packages-apps-Eleven.git] / src / com / cyngn / eleven / 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.cyngn.eleven.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.cyngn.eleven.MusicPlaybackService;
29 import com.cyngn.eleven.R;
30 import com.cyngn.eleven.cache.ImageCache;
31 import com.cyngn.eleven.utils.ApolloUtils;
32 import com.cyngn.eleven.utils.MusicUtils;
33 import com.cyngn.eleven.utils.PreferenceUtils;
34 import com.cyngn.eleven.widgets.ColorSchemeDialog;
35
36 /**
37  * Settings.
38  * 
39  * @author Andrew Neal (andrewdneal@gmail.com)
40  */
41 @SuppressWarnings("deprecation")
42 public class SettingsActivity extends PreferenceActivity {
43
44     /**
45      * Image cache
46      */
47     private ImageCache mImageCache;
48
49     private PreferenceUtils mPreferences;
50
51     /**
52      * {@inheritDoc}
53      */
54     @Override
55     protected void onCreate(final Bundle savedInstanceState) {
56         super.onCreate(savedInstanceState);
57         // Fade it in
58         overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
59
60         // Get the preferences
61         mPreferences = PreferenceUtils.getInstance(this);
62
63         // Initialze the image cache
64         mImageCache = ImageCache.getInstance(this);
65
66         // UP
67         getActionBar().setDisplayHomeAsUpEnabled(true);
68
69         // Add the preferences
70         addPreferencesFromResource(R.xml.settings);
71
72         // Interface settings
73         initInterface();
74         // Removes the cache entries
75         deleteCache();
76         // About
77         showOpenSourceLicenses();
78         // Update the version number
79         try {
80             final PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
81             findPreference("version").setSummary(packageInfo.versionName);
82         } catch (final NameNotFoundException e) {
83             findPreference("version").setSummary("?");
84         }
85     }
86
87     /**
88      * {@inheritDoc}
89      */
90     @Override
91     public boolean onOptionsItemSelected(final MenuItem item) {
92         switch (item.getItemId()) {
93             case android.R.id.home:
94                 onBackPressed();
95                 finish();
96                 return true;
97             default:
98                 break;
99         }
100         return super.onOptionsItemSelected(item);
101     }
102
103     /**
104      * {@inheritDoc}
105      */
106     @Override
107     protected void onStart() {
108         super.onStart();
109         MusicUtils.notifyForegroundStateChanged(this, true);
110     }
111
112     /**
113      * {@inheritDoc}
114      */
115     @Override
116     protected void onStop() {
117         super.onStop();
118         MusicUtils.notifyForegroundStateChanged(this, false);
119     }
120
121     /**
122      * Initializes the preferences under the "Interface" category
123      */
124     private void initInterface() {
125         // Color scheme picker
126         updateColorScheme();
127     }
128
129     /**
130      * Shows the {@link ColorSchemeDialog} and then saves the changes.
131      */
132     private void updateColorScheme() {
133         final Preference colorScheme = findPreference("color_scheme");
134         colorScheme.setOnPreferenceClickListener(new OnPreferenceClickListener() {
135             @Override
136             public boolean onPreferenceClick(final Preference preference) {
137                 ApolloUtils.showColorPicker(SettingsActivity.this);
138                 return true;
139             }
140         });
141     }
142
143     /**
144      * Removes all of the cache entries.
145      */
146     private void deleteCache() {
147         final Preference deleteCache = findPreference("delete_cache");
148         deleteCache.setOnPreferenceClickListener(new OnPreferenceClickListener() {
149             @Override
150             public boolean onPreferenceClick(final Preference preference) {
151                 new AlertDialog.Builder(SettingsActivity.this).setMessage(R.string.delete_warning)
152                         .setPositiveButton(android.R.string.ok, new OnClickListener() {
153
154                             @Override
155                             public void onClick(final DialogInterface dialog, final int which) {
156                                 mImageCache.clearCaches();
157                             }
158                         }).setNegativeButton(R.string.cancel, new OnClickListener() {
159
160                             @Override
161                             public void onClick(final DialogInterface dialog, final int which) {
162                                 dialog.dismiss();
163                             }
164                         }).create().show();
165                 return true;
166             }
167         });
168     }
169
170     /**
171      * Show the open source licenses
172      */
173     private void showOpenSourceLicenses() {
174         final Preference mOpenSourceLicenses = findPreference("open_source");
175         mOpenSourceLicenses.setOnPreferenceClickListener(new OnPreferenceClickListener() {
176
177             @Override
178             public boolean onPreferenceClick(final Preference preference) {
179                 ApolloUtils.createOpenSourceDialog(SettingsActivity.this).show();
180                 return true;
181             }
182         });
183     }
184 }