/**
* This file is part of TuCan Mobile.
*
* TuCan Mobile 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.
*
* TuCan Mobile 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 TuCan Mobile. If not, see <http://www.gnu.org/licenses/>.
*/
package com.dalthed.tucan.preferences;
import android.app.AlertDialog;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.view.animation.DecelerateInterpolator;
import android.widget.SeekBar;
import com.dalthed.tucan.R;
import com.dalthed.tucan.TuCanMobileActivity;
import com.dalthed.tucan.helpers.AuthenticationManager;
import com.dalthed.tucan.ui.ChangeLog;
import com.dalthed.tucan.widget.WidgetProvider;
public class MainPreferences extends PreferenceActivity {
private final MainPreferences mainPrefs = this; //workaround
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.addPreferencesFromResource(R.xml.main_pref);
Preference logoutPreference = (Preference) findPreference("logout");
logoutPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
logout();
Intent backtostartIntent = new Intent(MainPreferences.this,TuCanMobileActivity.class);
backtostartIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
backtostartIntent.putExtra("loggedout", true);
startActivity(backtostartIntent);
return true;
}
});
// if(!isLoggedIn()){ // if user not logged in hide logout...
// PreferenceCategory category = (PreferenceCategory) findPreference("pref_category_misc");
// category.removePreference(logoutPreference);
// }
Preference changelogPreference = (Preference) findPreference("changelog");
changelogPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
ChangeLog cl = new ChangeLog(mainPrefs);
cl.getFullLogDialog().show();
return true;
}
});
final Preference widgetTransparency = findPreference("widget_transparency");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
//set transparency text
int t = Math
.round((getWidgetTransparency() / 255f) * 1000) / 10;
widgetTransparency
.setSummary(mainPrefs
.getString(
R.string.settings_transparency_summary,
t));
widgetTransparency
.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
// add a slider...
final SeekBar sb = new SeekBar(mainPrefs);
sb.setMax(255);
sb.setInterpolator(new DecelerateInterpolator());
sb.setProgress((int) getWidgetTransparency());
sb.setPadding(20, 30, 20, 30);
new AlertDialog.Builder(mainPrefs)
.setTitle(R.string.settings_transparency)
.setView(sb)
.setPositiveButton(android.R.string.ok,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setWidgetTransparency(sb.getProgress());
int t = Math
.round((sb.getProgress() / 255f) * 1000) / 10;
widgetTransparency
.setSummary(mainPrefs
.getString(
R.string.settings_transparency_summary,
t));
}
})
.setNegativeButton(android.R.string.cancel,
null).show();
return true;
}
});
} else {
// remove transparency from settings
PreferenceCategory category = (PreferenceCategory) findPreference("pref_category_widget");
category.removePreference(widgetTransparency);
}
}
public static final SharedPreferences getSettings(final ContextWrapper ctx) {
return ctx.getSharedPreferences(ctx.getPackageName() + "_preferences",
MODE_PRIVATE);
}
private void logout(){
AuthenticationManager.getInstance().deleteAccount();
}
private void setWidgetTransparency(int transparency){
final SharedPreferences altPrefs = getSharedPreferences("WIDGET", MODE_PRIVATE);
SharedPreferences.Editor editor = altPrefs.edit();
editor.putInt("transparency", transparency);
editor.commit();
MainPreferences.forceWidgetRedraw(this);
}
private int getWidgetTransparency(){
final SharedPreferences altPrefs = getSharedPreferences("WIDGET", MODE_PRIVATE);
return altPrefs.getInt("transparency", 64);
}
/**
* triggers onUpdate
* @param pkg
*/
public static void forceWidgetRedraw(Context pkg){
Intent intent = new Intent();
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(pkg);
ComponentName thisWidget = new ComponentName(pkg,
WidgetProvider.class);
int[] ids = appWidgetManager.getAppWidgetIds(thisWidget);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
pkg.sendBroadcast(intent);
}
}