/*
* Copyright (C) 2010 The Android Open Source Project
*
* 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 com.aokp.romcontrol.fragments.applauncher;
import android.app.ActivityManagerNative;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
import android.app.Fragment;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.hardware.Camera;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserHandle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.RingtonePreference;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManagerGlobal;
import java.util.ArrayList;
import com.aokp.romcontrol.R;
import com.aokp.romcontrol.util.Helpers;
import com.aokp.romcontrol.util.CMDProcessor;
import com.aokp.romcontrol.settings.AppMultiSelectListPreference;
import com.aokp.romcontrol.widgets.SeekBarPreference;
import java.io.File;
import java.lang.Thread;
import java.util.HashSet;
import java.util.Set;
import java.util.ArrayList;
import java.util.Arrays;
public class AppCircleBarSettings extends Fragment {
public AppCircleBarSettings() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_appcirclebar_main, container, false);
Resources res = getResources();
super.onCreate(savedInstanceState);
getChildFragmentManager().beginTransaction()
.replace(R.id.appcirclebar_main, new AppCircleSidebarSettingsPreferenceFragment())
.commit();
return v;
}
public static class AppCircleSidebarSettingsPreferenceFragment extends PreferenceFragment implements
Preference.OnPreferenceChangeListener {
public AppCircleSidebarSettingsPreferenceFragment() {
}
private static final String TAG = "AppCircleSidebarSettings";
private static final String PREF_INCLUDE_APP_CIRCLE_BAR_KEY = "app_circle_bar_included_apps";
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 AppMultiSelectListPreference mIncludedAppCircleBar;
private SeekBarPreference mTriggerWidthPref;
private SeekBarPreference mTriggerTopPref;
private SeekBarPreference mTriggerBottomPref;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createCustomView();
}
private PreferenceScreen createCustomView() {
ContentResolver resolver = getActivity().getContentResolver();
Resources res = getResources();
addPreferencesFromResource(R.xml.fragment_appcirclebar_settings);
PreferenceScreen prefSet = getPreferenceScreen();
mIncludedAppCircleBar = (AppMultiSelectListPreference) prefSet.findPreference(PREF_INCLUDE_APP_CIRCLE_BAR_KEY);
Set<String> includedApps = getIncludedApps();
if (includedApps != null) mIncludedAppCircleBar.setValues(includedApps);
mIncludedAppCircleBar.setOnPreferenceChangeListener(this);
mTriggerWidthPref = (SeekBarPreference) findPreference(KEY_TRIGGER_WIDTH);
mTriggerWidthPref.setValue(Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_TRIGGER_WIDTH, 10));
mTriggerWidthPref.setOnPreferenceChangeListener(this);
mTriggerTopPref = (SeekBarPreference) findPreference(KEY_TRIGGER_TOP);
mTriggerTopPref.setValue(Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_TRIGGER_TOP, 0));
mTriggerTopPref.setOnPreferenceChangeListener(this);
mTriggerBottomPref = (SeekBarPreference) findPreference(KEY_TRIGGER_BOTTOM);
mTriggerBottomPref.setValue(Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_TRIGGER_HEIGHT, 100));
mTriggerBottomPref.setOnPreferenceChangeListener(this);
return prefSet;
}
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
final String key = preference.getKey();
if (preference == mIncludedAppCircleBar) {
storeIncludedApps((Set<String>) objValue);
} else if (preference == mTriggerWidthPref) {
int width = ((Integer)objValue).intValue();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_TRIGGER_WIDTH, width);
return true;
} else if (preference == mTriggerTopPref) {
int top = ((Integer)objValue).intValue();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_TRIGGER_TOP, top);
return true;
} else if (preference == mTriggerBottomPref) {
int bottom = ((Integer)objValue).intValue();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_TRIGGER_HEIGHT, bottom);
return true;
}
return true;
}
private Set<String> getIncludedApps() {
String included = Settings.System.getString(getActivity().getContentResolver(),
Settings.System.WHITELIST_APP_CIRCLE_BAR);
if (TextUtils.isEmpty(included)) {
return null;
}
return new HashSet<String>(Arrays.asList(included.split("\\|")));
}
private void storeIncludedApps(Set<String> values) {
StringBuilder builder = new StringBuilder();
String delimiter = "";
for (String value : values) {
builder.append(delimiter);
builder.append(value);
delimiter = "|";
}
Settings.System.putString(getActivity().getContentResolver(),
Settings.System.WHITELIST_APP_CIRCLE_BAR, builder.toString());
}
@Override
public void onPause() {
super.onPause();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_SHOW_TRIGGER, 0);
}
@Override
public void onResume() {
super.onResume();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.APP_CIRCLE_BAR_SHOW_TRIGGER, 1);
}
}
}