package com.fruit.launcher.setting; import com.fruit.launcher.Configurator; import com.fruit.launcher.Launcher; import com.fruit.launcher.R; import com.fruit.launcher.Utilities; import android.app.ActivityManager; import android.app.AlertDialog; import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources.NotFoundException; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.util.DisplayMetrics; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class SettingActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String KEY_SCREEN_EFFECT = "settings_key_screen_switcheffects"; private static final String KEY_THEME = "settings_theme"; private static final String KEY_MANAGE_APPS = "settings_manage_apps"; private static final String KEY_SCREEN_INFO = "settings_screen_info"; private static final String KEY_APPS_INFO = "settings_apps_info"; private static final String KEY_HELP = "settings_key_help"; private static final String KEY_ABOUT = "settings_key_about"; private static final String KEY_EXIT = "settings_key_exit"; // private static final String KEY_LOCK_SCREEN = "settings_key_lockscreen"; private ListPreference mListPreference; // private Dialog dialog; private ActivityManager activityMgr; // static final int DIALOG_SCREEN_INFO_ID = 0; // static final int DIALOG_GAMEOVER_ID = 1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesName( SettingUtils.LAUNCHER_SETTINGS_NAME); addPreferencesFromResource(R.xml.launcher_setting); mListPreference = (ListPreference) findPreference(KEY_SCREEN_EFFECT); findPreference(KEY_ABOUT).setSummary(getVersionName()); findPreference(KEY_SCREEN_INFO).setSummary(Launcher.mScreenWidth+"x"+Launcher.mScreenHeight); PreferenceScreen screen = getPreferenceScreen(); removePreferenceByConfig(screen, KEY_THEME, Configurator.CONFIG_HIDETHEME, "com.fruit.thememanager"); removePreferenceByConfig(screen, KEY_MANAGE_APPS, Configurator.CONFIG_HIDEMANAGEAPPS, "com.android.settings"); } private String getVersionName() { StringBuffer versionName = new StringBuffer(); try { versionName.append(getString(R.string.current_desk_version)); versionName.append(getPackageManager().getPackageInfo(getPackageName(), 0).versionName); versionName.append("."); versionName.append(getPackageManager().getPackageInfo(getPackageName(), 0).versionCode); } catch (Exception e) { e.printStackTrace(); } return versionName.toString(); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { // TODO Auto-generated method stub final String key = preference.getKey(); if (key == null) { return false; } if (key.equals(KEY_THEME)) { callOtherActivity("com.fruit.action.THEME"); } else if (key.equals(KEY_MANAGE_APPS)) { callOtherActivity(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS); } else if (key.equals(KEY_HELP)) { } else if (key.equals(KEY_SCREEN_INFO)) { showScreenInfo(); } else if (key.equals(KEY_APPS_INFO)) { showAppsInfo(); } else if (key.equals(KEY_ABOUT)) { //only show summary } else if (key.equals(KEY_EXIT)) { exitLauncher(); } else { return false; } return true; } /** * */ public void exitLauncher() { Intent intent = new Intent(this, Launcher.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("exitFlag", 1); startActivity(intent); } public void restartLauncher() { // activityMgr = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); // activityMgr.killBackgroundProcesses(SettingUtils.LAUNCHER_PACKAGE_NAME); Intent k = getBaseContext().getPackageManager() .getLaunchIntentForPackage(getBaseContext().getPackageName()); k.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(k); } private String getAppsInfoString(){ StringBuffer str = new StringBuffer(); str.append(Launcher.mDumpString); str.append("\n"); return str.toString(); } /** * */ private void showAppsInfo() { String appsInfo = getAppsInfoString(); showAlertDialog(appsInfo); } /** * */ private void showScreenInfo() { String screenInfo = getScreenInfoString(); showAlertDialog(screenInfo); // onCreateDialog(DIALOG_SCREEN_INFO_ID); // showDialog(DIALOG_SCREEN_INFO_ID); } /** * @return */ private String getScreenInfoString() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); StringBuffer str = new StringBuffer(); str.append(getString(R.string.width)+getString(R.string.colon)+String.valueOf(metrics.widthPixels)+getString(R.string.px)+"\n"); str.append(getString(R.string.height)+getString(R.string.colon)+String.valueOf(metrics.heightPixels)+getString(R.string.px)+"\n"); //str.append("------------------------"+"\n"; str.append(getString(R.string.density)+getString(R.string.colon)+String.valueOf(metrics.density)+"\n"); str.append(getString(R.string.dpi)+getString(R.string.colon)+String.valueOf(metrics.densityDpi)); if(metrics.densityDpi==DisplayMetrics.DENSITY_DEFAULT){ str.append("("+getString(R.string.medium)+")"); }else if(metrics.densityDpi<DisplayMetrics.DENSITY_DEFAULT){ str.append("("+getString(R.string.low)+")"); }else { if(metrics.densityDpi<=DisplayMetrics.DENSITY_HIGH){ str.append("("+getString(R.string.high)+")"); }else{ str.append("("+getString(R.string.exhigh)+")"); } } str.append("\n"); return str.toString(); } /** * @param msg */ private void showAlertDialog(String msg) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(msg) .setCancelable(true) .setNegativeButton(R.string.close, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } // protected Dialog onCreateDialog(int id) { // Context mContext = getApplicationContext(); // Dialog dialog; // switch(id) { // case DIALOG_SCREEN_INFO_ID: // // do the work to define the pause Dialog // dialog = new Dialog(mContext); // // dialog.setContentView(R.layout.custom_dialog); // dialog.setTitle("Custom Dialog"); // // TextView text = (TextView) dialog.findViewById(R.id.text); // text.setText("Hello, this is a custom dialog!"); // ImageView image = (ImageView) dialog.findViewById(R.id.image); // image.setImageResource(R.drawable.ic_launcher_home); // // break; // case DIALOG_GAMEOVER_ID: // // do the work to define the game over Dialog // dialog = null; // break; // default: // dialog = null; // } // return dialog; // } /** * @throws NotFoundException */ private void callOtherActivity(String action) throws NotFoundException { Intent intent = new Intent(); intent.setAction(action); try { startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); mListPreference.setSummary(mListPreference.getEntry()); getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { // TODO Auto-generated method stub if (key.equals(KEY_SCREEN_EFFECT)) { mListPreference.setSummary(mListPreference.getEntry()); } } private boolean removePreferenceByConfig(PreferenceGroup preferenceGroup, String preference, String name, String pkgName) { boolean bHide = Configurator.getBooleanConfig(this, name, false); boolean bUnInstall = !Utilities.isPackageInstall(this, pkgName); if (bHide || bUnInstall) { // Property is missing so remove preference from group try { preferenceGroup.removePreference(findPreference(preference)); } catch (RuntimeException e) { return false; } } return true; } }