/* * Copyright (C) 2011-2012 sakuramilk <c.sakuramilk@gmail.com> * * 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 net.sakuramilk.TweakGS2.Dock; import net.sakuramilk.TweakGS2.R; import net.sakuramilk.util.Misc; import net.sakuramilk.util.SystemCommand; import android.annotation.SuppressLint; import android.app.UiModeManager; import android.content.Context; import android.content.res.Configuration; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; public class DockPreferenceActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener, OnPreferenceClickListener { private DockSetting mSetting; private ListPreference mDockEmulate; private PreferenceScreen mDockManual; @SuppressLint({ "NewApi", "NewApi" }) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.dock_pref); mSetting = new DockSetting(this); mDockEmulate = (ListPreference)findPreference(DockSetting.KEY_DOCK_EMULATE); mDockManual = (PreferenceScreen)findPreference(DockSetting.KEY_DOCK_MANUAL); String savedDockEmulate = mSetting.loadDockEmulate(); if (mSetting.isEnableDockEmulate()) { mDockEmulate.setEntries(R.array.dock_emulate_hw_entries); mDockEmulate.setEntryValues(R.array.dock_emulate_hw_values); } else { mDockEmulate.setEntries(R.array.dock_emulate_entries); mDockEmulate.setEntryValues(R.array.dock_emulate_values); if ("2".equals(savedDockEmulate)) { mSetting.saveDockEmulate("0"); savedDockEmulate = "0"; } } mDockEmulate.setValue(mSetting.getEmuIndexFromEmuValue(savedDockEmulate)); mDockEmulate.setOnPreferenceChangeListener(this); updateDockEmulate(savedDockEmulate); mDockManual.setOnPreferenceClickListener(this); UiModeManager uiModeManager = (UiModeManager)getSystemService(Context.UI_MODE_SERVICE); int mUiMode = uiModeManager.getCurrentModeType(); if (mUiMode == Configuration.UI_MODE_TYPE_DESK) { mDockManual.setSummary(R.string.dock_manual_stop); } else { mDockManual.setSummary(R.string.dock_manual_start); } } public boolean onPreferenceChange(Preference preference, Object objValue) { if (mDockEmulate == preference) { updateDockEmulate(objValue.toString()); return true; } return false; } @SuppressLint({ "NewApi", "NewApi" }) public boolean onPreferenceClick(Preference preference) { if (preference == mDockManual) { UiModeManager uiModeManager = (UiModeManager)getSystemService(Context.UI_MODE_SERVICE); int mUiMode = uiModeManager.getCurrentModeType(); if (mUiMode == Configuration.UI_MODE_TYPE_DESK) { SystemCommand.stop_dock(); mDockManual.setSummary(R.string.dock_manual_start); } else { SystemCommand.start_dock(); mDockManual.setSummary(R.string.dock_manual_stop); } } return false; } private void updateDockEmulate(String value) { if (DockSetting.DOCK_EMU_HW_INDEX.equals(value)) { mSetting.setDockEmulate(DockSetting.DOCK_EMU_HW_VALUE); mDockEmulate.setSummary(Misc.getCurrentValueText(this, R.string.dock_emu_hw)); } else if (DockSetting.DOCK_EMU_SW_INDEX.equals(value)) { mSetting.setDockEmulate(DockSetting.DOCK_EMU_SW_VALUE); mDockEmulate.setSummary(Misc.getCurrentValueText(this, R.string.dock_emu_sw)); } else { mSetting.setDockEmulate(DockSetting.DOCK_EMU_DISABLE_VALUE); mDockEmulate.setSummary(Misc.getCurrentValueText(this, R.string.dock_emu_disable)); } } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.reset_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_reset: mSetting.reset(); mDockEmulate.setSummary(Misc.getCurrentValueText(this, R.string.dock_emu_disable)); return true; default: return super.onOptionsItemSelected(item); } } }