/*
* Copyright 2013 Google Inc.
*
* 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.google.android.apps.dashclock.configuration;
import android.app.backup.BackupManager;
import android.content.ComponentName;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.apps.dashclock.render.DashClockRenderer;
import net.nurik.roman.dashclock.R;
/**
* Fragment for allowing the user to configure advanced widget settings, shown within a {@link
* com.google.android.apps.dashclock.configuration.ConfigurationActivity}.
*/
public class ConfigureAdvancedFragment extends PreferenceFragment
implements SharedPreferences.OnSharedPreferenceChangeListener {
public ConfigureAdvancedFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Fast-forward new values based on deprecated preferences.
SharedPreferences sp = getPreferenceManager().getSharedPreferences();
if (!sp.contains(AppearanceConfig.PREF_SETTINGS_BUTTON)
&& sp.getBoolean(AppearanceConfig.PREF_HIDE_SETTINGS, false)) {
sp.edit().putString(AppearanceConfig.PREF_SETTINGS_BUTTON,
AppearanceConfig.PREF_SETTINGS_BUTTON_HIDDEN).apply();
}
// Add 'advanced' preferences.
addPreferencesFromResource(R.xml.pref_advanced);
// Bind the summaries of EditText/List/Dialog/Ringtone preferences to
// their values. When their values change, their summaries are updated
// to reflect the new value, per the Android Design guidelines.
BaseSettingsActivity.bindPreferenceSummaryToValue(
findPreference(AppearanceConfig.PREF_SETTINGS_BUTTON));
BaseSettingsActivity.bindPreferenceSummaryToValue(
findPreference(DashClockRenderer.PREF_CLOCK_SHORTCUT));
}
@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceManager().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_configure_simple_prefs, container, false);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
new BackupManager(getActivity()).dataChanged();
// Potentially enable/disable the launcher activity if the settings button
// preference has changed.
if (isAdded() && AppearanceConfig.PREF_SETTINGS_BUTTON.equals(key)) {
boolean enableLauncher = AppearanceConfig.PREF_SETTINGS_BUTTON_IN_LAUNCHER.equals(
sp.getString(AppearanceConfig.PREF_SETTINGS_BUTTON, null));
getActivity().getPackageManager().setComponentEnabledSetting(
new ComponentName(
getActivity().getPackageName(),
ConfigurationActivity.LAUNCHER_ACTIVITY_NAME),
enableLauncher
? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
}
}