/*
* Copyright © 2014 Jeff Corcoran
*
* This file is part of Hangar.
*
* Hangar is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Hangar is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Hangar. If not, see <http://www.gnu.org/licenses/>.
*
*/
package ca.mimic.apphangar;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
import ca.mimic.apphangar.Settings.PrefsGet;
public class StatsWidgetSettings extends PreferenceActivity {
final static int WIDGET_3X3_DEFAULT_APPSNO = 6;
final static int WIDGET_3X3_DEFAULT_APPSNO_LS = 3;
static PrefsGet prefs;
static Context mContext;
static Bundle extras;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prefs = new PrefsGet(getSharedPreferences("StatsWidget", Context.MODE_PRIVATE));
mContext = getApplicationContext();
extras = getIntent().getExtras();
setTitle(R.string.stats_widget_name);
setResult(RESULT_CANCELED);
getFragmentManager().beginTransaction().replace(android.R.id.content, new StatsWidgetFragment().newInstance()).commit();
ListView v = getListView();
v.setFooterDividersEnabled(false);
}
public static class StatsWidgetFragment extends PreferenceFragment {
CheckBoxPreference divider_preference;
CheckBoxPreference rounded_corners_preference;
ColorPickerPreference background_color_preference;
SwitchPreference apps_by_widget_size_preference;
UpdatingListPreference appnos_preference;
UpdatingListPreference appnos_ls_preference;
UpdatingListPreference alignment_preference;
public static StatsWidgetFragment newInstance() {
return new StatsWidgetFragment();
}
public StatsWidgetFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout v = (LinearLayout) super.onCreateView(inflater, container, savedInstanceState);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
v.setLayoutParams(params);
LinearLayout footer = (LinearLayout) inflater.inflate(R.layout.widget_footer, v, false);
footer.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT));
Button createButton = (Button) footer.findViewById(R.id.placementButton);
if (extras == null) {
createButton.setText(R.string.reconfigure_button_name);
} else {
createButton.setText(R.string.button_name);
}
createButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int mAppWidgetId;
savePrefs();
if (extras != null) {
mAppWidgetId = extras.getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
getActivity().setResult(RESULT_OK, resultValue);
Toast.makeText(mContext, R.string.reconfigure_reminder, Toast.LENGTH_LONG).show();
getActivity().finish();
} else {
Tools.updateWidget(mContext);
getActivity().finish();
}
}
});
v.addView(footer);
return v;
}
public void savePrefs() {
final SharedPreferences.Editor mEditor = prefs.editorGet();
mEditor.putBoolean(Settings.DIVIDER_PREFERENCE, divider_preference.isChecked());
mEditor.putBoolean(Settings.ROUNDED_CORNERS_PREFERENCE, rounded_corners_preference.isChecked());
mEditor.putBoolean(Settings.APPS_BY_WIDGET_SIZE_PREFERENCE, apps_by_widget_size_preference.isChecked());
mEditor.putString(Settings.STATS_WIDGET_APPSNO_PREFERENCE, appnos_preference.getValue());
mEditor.putString(Settings.STATS_WIDGET_APPSNO_LS_PREFERENCE, appnos_ls_preference.getValue());
int intHex = ColorPickerPreference.convertToColorInt(String.valueOf(background_color_preference.getSummary()));
mEditor.putInt(Settings.BACKGROUND_COLOR_PREFERENCE, intHex);
mEditor.putString(Settings.ALIGNMENT_PREFERENCE, alignment_preference.getValue());
mEditor.apply();
}
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.stats_widget_settings);
int defaultAppsNo = WIDGET_3X3_DEFAULT_APPSNO;
int defaultAppsNoLs = WIDGET_3X3_DEFAULT_APPSNO_LS;
SharedPreferences mPrefs = prefs.prefsGet();
divider_preference = (CheckBoxPreference)findPreference(Settings.DIVIDER_PREFERENCE);
divider_preference.setChecked(mPrefs.getBoolean(Settings.DIVIDER_PREFERENCE, Settings.DIVIDER_DEFAULT));
divider_preference.setOnPreferenceChangeListener(changeListener);
rounded_corners_preference = (CheckBoxPreference)findPreference(Settings.ROUNDED_CORNERS_PREFERENCE);
rounded_corners_preference.setChecked(mPrefs.getBoolean(Settings.ROUNDED_CORNERS_PREFERENCE, Settings.ROUNDED_CORNERS_DEFAULT));
rounded_corners_preference.setOnPreferenceChangeListener(changeListener);
apps_by_widget_size_preference = (SwitchPreference)findPreference(Settings.APPS_BY_WIDGET_SIZE_PREFERENCE);
apps_by_widget_size_preference.setChecked(mPrefs.getBoolean(Settings.APPS_BY_WIDGET_SIZE_PREFERENCE, Settings.APPS_BY_WIDGET_SIZE_DEFAULT));
apps_by_widget_size_preference.setOnPreferenceChangeListener(changeListener);
background_color_preference = (ColorPickerPreference) findPreference(Settings.BACKGROUND_COLOR_PREFERENCE);
int intColor = mPrefs.getInt(Settings.BACKGROUND_COLOR_PREFERENCE, Settings.BACKGROUND_COLOR_DEFAULT);
String hexColor = String.format("#%08x", (intColor));
background_color_preference.setSummary(hexColor);
background_color_preference.setOnPreferenceChangeListener(changeListener);
appnos_preference = (UpdatingListPreference)findPreference(Settings.STATS_WIDGET_APPSNO_PREFERENCE);
appnos_preference.setValue(mPrefs.getString(extras == null ? Settings.STATS_WIDGET_APPSNO_PREFERENCE : Integer.toString(defaultAppsNo),
Integer.toString(defaultAppsNo)));
appnos_preference.setOnPreferenceChangeListener(changeListener);
if (apps_by_widget_size_preference.isChecked()) {
appnos_preference.setSummary(R.string.automatic_appsno);
}
appnos_ls_preference = (UpdatingListPreference)findPreference(Settings.STATS_WIDGET_APPSNO_LS_PREFERENCE);
appnos_ls_preference.setValue(mPrefs.getString(extras == null ? Settings.STATS_WIDGET_APPSNO_LS_PREFERENCE : Integer.toString(defaultAppsNoLs),
Integer.toString(defaultAppsNoLs)));
appnos_ls_preference.setOnPreferenceChangeListener(changeListener);
if (apps_by_widget_size_preference.isChecked()) {
appnos_ls_preference.setSummary(R.string.automatic_appsno);
}
alignment_preference = (UpdatingListPreference)findPreference(Settings.ALIGNMENT_PREFERENCE);
alignment_preference.setValue(mPrefs.getString(Settings.ALIGNMENT_PREFERENCE,
Integer.toString(Settings.ALIGNMENT_DEFAULT)));
alignment_preference.setOnPreferenceChangeListener(changeListener);
}
Preference.OnPreferenceChangeListener changeListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(final Preference preference, Object newValue) {
if (preference.getKey().equals(Settings.BACKGROUND_COLOR_PREFERENCE)) {
String hex = ColorPickerPreference.convertToARGB(Integer.valueOf(String.valueOf(newValue)));
preference.setSummary(hex);
} else if (preference.getKey().equals(Settings.APPS_BY_WIDGET_SIZE_PREFERENCE)) {
if (apps_by_widget_size_preference.isChecked()) {
appnos_preference.setSummary(R.string.automatic_appsno);
appnos_ls_preference.setSummary(R.string.automatic_appsno);
} else {
appnos_preference.goDefault(String.format(getResources().getString(R.string.summary_stats_widget_appsno_preference), appnos_preference.getValue()));
appnos_ls_preference.goDefault(String.format(getResources().getString(R.string.summary_stats_widget_appsno_ls_preference), appnos_ls_preference.getValue()));
}
} else if (preference.getKey().equals(Settings.STATS_WIDGET_APPSNO_PREFERENCE)) {
appnos_preference.goDefault(String.format(getResources().getString(R.string.summary_stats_widget_appsno_preference), (String) newValue));
} else if (preference.getKey().equals(Settings.STATS_WIDGET_APPSNO_LS_PREFERENCE)) {
appnos_ls_preference.goDefault(String.format(getResources().getString(R.string.summary_stats_widget_appsno_ls_preference), (String) newValue));
}
return true;
}
};
}
}