/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* This file is part of FileExplorer.
*
* FileExplorer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FileExplorer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with SwiFTP. If not, see <http://www.gnu.org/licenses/>.
*/
package net.micode.fileexplorer;
import java.io.File;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.text.TextUtils;
/**
*
* @author ShunLi
*/
public class FileExplorerPreferenceActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
private static final String PRIMARY_FOLDER = "pref_key_primary_folder";
private static final String READ_ROOT = "pref_key_read_root";
private static final String SHOW_REAL_PATH = "pref_key_show_real_path";
private static final String SYSTEM_SEPARATOR = File.separator;
private EditTextPreference mEditTextPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
mEditTextPreference = (EditTextPreference) findPreference(PRIMARY_FOLDER);
}
@Override
protected void onResume() {
super.onResume();
// Setup the initial values
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
mEditTextPreference.setSummary(this.getString(
R.string.pref_primary_folder_summary,
sharedPreferences.getString(PRIMARY_FOLDER, GlobalConsts.ROOT_PATH)));
// Set up a listener whenever a key changes
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener whenever a key changes
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedpreferences, String key) {
if (PRIMARY_FOLDER.equals(key)) {
mEditTextPreference.setSummary(this.getString(
R.string.pref_primary_folder_summary,
sharedpreferences.getString(PRIMARY_FOLDER, GlobalConsts.ROOT_PATH)));
}
}
public static String getPrimaryFolder(Context context) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
String primaryFolder = settings.getString(PRIMARY_FOLDER, context.getString(R.string.default_primary_folder, GlobalConsts.ROOT_PATH));
if (TextUtils.isEmpty(primaryFolder)) { // setting primary folder = empty("")
primaryFolder = GlobalConsts.ROOT_PATH;
}
// it's remove the end char of the home folder setting when it with the '/' at the end.
// if has the backslash at end of the home folder, it's has minor bug at "UpLevel" function.
int length = primaryFolder.length();
if (length > 1 && SYSTEM_SEPARATOR.equals(primaryFolder.substring(length - 1))) { // length = 1, ROOT_PATH
return primaryFolder.substring(0, length - 1);
} else {
return primaryFolder;
}
}
public static boolean isReadRoot(Context context) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
boolean isReadRootFromSetting = settings.getBoolean(READ_ROOT, false);
boolean isReadRootWhenSettingPrimaryFolderWithoutSdCardPrefix = !getPrimaryFolder(context).startsWith(Util.getSdDirectory());
return isReadRootFromSetting || isReadRootWhenSettingPrimaryFolderWithoutSdCardPrefix;
}
public static boolean showRealPath(Context context) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
return settings.getBoolean(SHOW_REAL_PATH, false);
}
}