/*
* Copyright (C) 2008 OpenIntents.org
*
* 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.
*/
package org.openintents.filemanager;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.support.annotation.VisibleForTesting;
import android.view.MenuItem;
import android.widget.Toast;
import org.openintents.filemanager.compatibility.HomeIconHelper;
import org.openintents.filemanager.search.SearchableActivity;
import org.openintents.filemanager.util.UIUtils;
public class PreferenceActivity extends android.preference.PreferenceActivity
implements OnSharedPreferenceChangeListener {
public static final String PREFS_MEDIASCAN = "mediascan";
/**
* @since 2011-09-30
*/
public static final String PREFS_SHOWALLWARNING = "showallwarning";
public static final String PREFS_DISPLAYHIDDENFILES = "displayhiddenfiles";
public static final String PREFS_SORTBY = "sortby";
public static final String PREFS_ASCENDING = "ascending";
public static final String PREFS_DEFAULTPICKFILEPATH = "defaultpickfilepath";
public static final String PREFS_USEBESTMATCH = "usebestmatch";
@Override
protected void onCreate(Bundle icicle) {
UIUtils.setThemeFor(this);
super.onCreate(icicle);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
HomeIconHelper.activity_actionbar_setDisplayHomeAsUpEnabled(this);
}
UIUtils.setThemeFor(this);
addPreferencesFromResource(R.xml.preferences);
/* Register the onSharedPreferenceChanged listener to update the SortBy ListPreference summary */
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
/* Set the onSharedPreferenceChanged listener summary to its initial value */
changeListPreferenceSummaryToCurrentValue((ListPreference)findPreference("sortby"));
// Initialize search history reset confirmation dialog.
findPreference("clear_search_button").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
new AlertDialog.Builder(PreferenceActivity.this)
.setTitle(R.string.preference_search_title)
.setMessage(R.string.preference_search_dialog_message)
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
SearchableActivity.clearSearchRecents(PreferenceActivity.this);
Toast.makeText(PreferenceActivity.this, R.string.search_history_cleared, Toast.LENGTH_SHORT).show();
}})
.setNegativeButton(android.R.string.cancel, null).show();
return true;
}
});
findPreference("usedarktheme").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
//TODO show dialog about restarting app
return true;
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
HomeIconHelper.showHome(this);
break;
}
return super.onOptionsItemSelected(item);
}
public static boolean getMediaScanFromPreference(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PREFS_MEDIASCAN, false);
}
/**
* @since 2011-09-30
*/
public static void setShowAllWarning(Context context, boolean enabled) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREFS_SHOWALLWARNING, enabled);
editor.commit();
}
/**
* @since 2011-09-30
*/
public static boolean getShowAllWarning(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PREFS_SHOWALLWARNING, true);
}
@VisibleForTesting
public static void setDisplayHiddenFiles(Context context, boolean enabled) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREFS_DISPLAYHIDDENFILES, enabled);
editor.commit();
}
public static boolean getDisplayHiddenFiles(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PREFS_DISPLAYHIDDENFILES, true);
}
public static void setDefaultPickFilePath(Context context, String path) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREFS_DEFAULTPICKFILEPATH, path);
editor.commit();
}
static String getDefaultPickFilePath(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getString(PREFS_DEFAULTPICKFILEPATH, Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/");
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(key.equals("sortby")){
changeListPreferenceSummaryToCurrentValue((ListPreference)findPreference(key));
}
}
private void changeListPreferenceSummaryToCurrentValue(ListPreference listPref){
listPref.setSummary(listPref.getEntry());
}
public static int getSortBy(Context context) {
/* entryValues must be a string-array while we need integers */
return Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(context)
.getString(PREFS_SORTBY, "1"));
}
public static boolean getAscending(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PREFS_ASCENDING, true);
}
}