package com.aokp.romcontrol.fragments.applauncher;
import android.app.Fragment;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.aokp.romcontrol.R;
import com.aokp.romcontrol.widgets.SeekBarPreferenceCham;
public class AppSideBarSettings extends Fragment {
public AppSideBarSettings() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_appsidebar_main, container, false);
Resources res = getResources();
super.onCreate(savedInstanceState);
getChildFragmentManager().beginTransaction()
.replace(R.id.appsidebar_main, new AppSideBarSettingsPreferenceFragment())
.commit();
return v;
}
public class AppSideBarSettingsPreferenceFragment extends PreferenceFragment implements
OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
public AppSideBarSettingsPreferenceFragment() {
}
private static final String TAG = "AppSideBar";
private static final String KEY_ENABLED = "sidebar_enable";
private static final String KEY_TRANSPARENCY = "sidebar_transparency";
private static final String KEY_SETUP_ITEMS = "sidebar_setup_items";
private static final String KEY_POSITION = "sidebar_position";
private static final String KEY_HIDE_LABELS = "sidebar_hide_labels";
private static final String KEY_TRIGGER_WIDTH = "trigger_width";
private static final String KEY_TRIGGER_TOP = "trigger_top";
private static final String KEY_TRIGGER_BOTTOM = "trigger_bottom";
private static final String KEY_HIDE_TIMEOUT = "app_sidebar_hide_timeout";
private SwitchPreference mEnabledPref;
private SeekBarPreferenceCham mTransparencyPref;
private ListPreference mPositionPref;
private CheckBoxPreference mHideLabelsPref;
private SeekBarPreferenceCham mTriggerWidthPref;
private SeekBarPreferenceCham mTriggerTopPref;
private SeekBarPreferenceCham mTriggerBottomPref;
private SeekBarPreferenceCham mHideTimeoutPref;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createCustomView();
}
private PreferenceScreen createCustomView() {
addPreferencesFromResource(R.xml.fragment_appsidebar_settings);
final ContentResolver resolver = getActivity().getContentResolver();
mEnabledPref = (SwitchPreference) findPreference(KEY_ENABLED);
mEnabledPref.setChecked((Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_ENABLED, 0) == 1));
mEnabledPref.setOnPreferenceChangeListener(this);
mHideLabelsPref = (CheckBoxPreference) findPreference(KEY_HIDE_LABELS);
mHideLabelsPref.setChecked((Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_DISABLE_LABELS, 0) == 1));
PreferenceScreen prefSet = getPreferenceScreen();
mPositionPref = (ListPreference) prefSet.findPreference(KEY_POSITION);
mPositionPref.setOnPreferenceChangeListener(this);
int position = Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_POSITION, 0);
mPositionPref.setValue(String.valueOf(position));
updatePositionSummary(position);
mTransparencyPref = (SeekBarPreferenceCham) findPreference(KEY_TRANSPARENCY);
mTransparencyPref.setValue(Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_TRANSPARENCY, 0));
mTransparencyPref.setOnPreferenceChangeListener(this);
mTriggerWidthPref = (SeekBarPreferenceCham) findPreference(KEY_TRIGGER_WIDTH);
mTriggerWidthPref.setValue(Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_TRIGGER_WIDTH, 10));
mTriggerWidthPref.setOnPreferenceChangeListener(this);
mTriggerTopPref = (SeekBarPreferenceCham) findPreference(KEY_TRIGGER_TOP);
mTriggerTopPref.setValue(Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_TRIGGER_TOP, 0));
mTriggerTopPref.setOnPreferenceChangeListener(this);
mTriggerBottomPref = (SeekBarPreferenceCham) findPreference(KEY_TRIGGER_BOTTOM);
mTriggerBottomPref.setValue(Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_TRIGGER_HEIGHT, 100));
mTriggerBottomPref.setOnPreferenceChangeListener(this);
mHideTimeoutPref = (SeekBarPreferenceCham) findPreference(KEY_HIDE_TIMEOUT);
mHideTimeoutPref.setValue(Settings.System.getInt(resolver,
Settings.System.APP_SIDEBAR_HIDE_TIMEOUT, 3000));
mHideTimeoutPref.setOnPreferenceChangeListener(this);
findPreference(KEY_SETUP_ITEMS).setOnPreferenceClickListener(this);
return prefSet;
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mTransparencyPref) {
int transparency = ((Integer)newValue).intValue();
Settings.System.putInt(resolver,
Settings.System.APP_SIDEBAR_TRANSPARENCY, transparency);
return true;
} else if (preference == mTriggerWidthPref) {
int width = ((Integer)newValue).intValue();
Settings.System.putInt(resolver,
Settings.System.APP_SIDEBAR_TRIGGER_WIDTH, width);
return true;
} else if (preference == mTriggerTopPref) {
int top = ((Integer)newValue).intValue();
Settings.System.putInt(resolver,
Settings.System.APP_SIDEBAR_TRIGGER_TOP, top);
return true;
} else if (preference == mTriggerBottomPref) {
int bottom = ((Integer)newValue).intValue();
Settings.System.putInt(resolver,
Settings.System.APP_SIDEBAR_TRIGGER_HEIGHT, bottom);
return true;
} else if (preference == mPositionPref) {
int position = Integer.valueOf((String) newValue);
updatePositionSummary(position);
return true;
} else if (preference == mEnabledPref) {
boolean value = ((Boolean)newValue).booleanValue();
Settings.System.putInt(resolver,
Settings.System.APP_SIDEBAR_ENABLED,
value ? 1 : 0);
return true;
} else if (preference == mHideTimeoutPref) {
int timeout = ((Integer)newValue).intValue();
Settings.System.putInt(resolver,
Settings.System.APP_SIDEBAR_HIDE_TIMEOUT, timeout);
return true;
}
return false;
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
boolean value;
if (preference == mHideLabelsPref) {
value = mHideLabelsPref.isChecked();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_SIDEBAR_DISABLE_LABELS,
value ? 1 : 0);
} else {
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
return true;
}
@Override
public boolean onPreferenceClick(Preference preference) {
if(preference.getKey().equals(KEY_SETUP_ITEMS)) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName("com.android.systemui",
"com.android.systemui.statusbar.sidebar.SidebarConfigurationActivity"));
getActivity().startActivity(intent);
return true;
}
return false;
}
private void updatePositionSummary(int value) {
mPositionPref.setSummary(mPositionPref.getEntries()
[mPositionPref.findIndexOfValue("" + value)]);
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_SIDEBAR_POSITION, value);
}
@Override
public void onPause() {
super.onPause();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_SIDEBAR_SHOW_TRIGGER, 0);
}
@Override
public void onResume() {
super.onResume(); //To change body of overridden methods use File | Settings | File Templates.
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_SIDEBAR_SHOW_TRIGGER, 1);
}
}
}