package com.lgq.rssreader;
import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
import com.google.gson.Gson;
import com.lgq.rssreader.controls.SystemBarTintManager;
//import com.lgq.rssreader.controls.TimePickerDialog.TimePickerDialogListener;
import com.lgq.rssreader.core.ReaderApp;
import com.lgq.rssreader.entity.Blog;
import com.lgq.rssreader.enums.DownloadMode;
import com.lgq.rssreader.task.DownloadReceiver;
import com.lgq.rssreader.utils.Helper;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Dialog;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
@SuppressWarnings("deprecation")
public class SettingActivity extends PreferenceActivity implements OnPreferenceClickListener, OnPreferenceChangeListener, OnTimeChangedListener{
TimePicker tp;
public final static String ACTION_START_DOWNLOAD = "com.lgq.rssreader.action.ACTION_START_DOWNLOAD";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
SystemBarTintManager manager = new SystemBarTintManager(this);
manager.setStatusBarTintEnabled(true);
manager.setStatusBarTintResource(R.drawable.settings_status_bar);
manager.setNavigationBarTintEnabled(true);
manager.setNavigationBarTintResource(R.drawable.transparent_bg);
}
addPreferencesFromResource(R.xml.settings);
Resources res = Resources.getSystem();
int id = res.getIdentifier("headers", "id", "android");
View container = findViewById(id);
((View) container.getParent().getParent()).setPadding(0, Helper.getStatusBarHeight() + Helper.getActionBarHeight(this), 0, 0);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.settings_status_bar));
Map<String, ?> prefs = this.getPreferenceManager().getSharedPreferences().getAll();
for (String preferenceName : prefs.keySet()) {
Preference p = this.findPreference(preferenceName);
if (p != null) {
Object value = prefs.get(preferenceName);
p.setOnPreferenceChangeListener(this);
p.setOnPreferenceClickListener(this);
}
}
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
return false;
}
private void restartActivity() {
Intent intent = getIntent();
finish();
startActivityForResult(intent,2);
}
@Override
public boolean onPreferenceChange(Preference p, Object o) {
Log.i("RssReader", p.getKey() + " " + o.toString());
Editor e = this.getPreferenceManager().getSharedPreferences().edit();
if(o instanceof Boolean){
e.putBoolean(p.getKey(), (Boolean) o).commit();
}
if(o instanceof String){
if(!p.getKey().equals("download_time"))
e.putString(p.getKey(), (String) o).commit();
}
if(p.getKey().equals("download_police")){
AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService("alarm");
Intent intent = new Intent(getApplicationContext(), DownloadReceiver.class);
intent.setAction(ACTION_START_DOWNLOAD);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
alarmManager.cancel(pendingIntent);
if(Integer.parseInt(o.toString()) == DownloadMode.Period.ordinal()){
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
AlarmManager.INTERVAL_HALF_HOUR * 2 * ReaderApp.getSettings().DownloadPeriod, pendingIntent);
}
else if(Integer.parseInt(o.toString()) == DownloadMode.Time.ordinal()){
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(ReaderApp.getSettings().DownloadTime.substring(0,2)));
calendar.set(Calendar.MINUTE, Integer.parseInt(ReaderApp.getSettings().DownloadTime.substring(3,5)));
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
ReaderApp.saveSettings();
if(p.getKey().equals("view_lang")){
ReaderApp.getPreferences().edit().putString("view_lang",(String)o).commit();
ReaderApp.getPreferences().edit().putBoolean("reset_local", true).commit();
((ReaderApp) getApplication()).setLocale();
restartActivity();
// if(((String)o).equals("zh-CN"))
// Helper.switchLanguage( Locale.CHINESE);
// if(((String)o).equals("en"))
// Helper.switchLanguage(Locale.ENGLISH);
//
// finish();
// //Intent i = new Intent("com.lgq.rssreader.task.language");
// //sendBroadcast(i);
// Intent intent = new Intent();
// intent.setClass(SettingActivity.this,SettingActivity.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(intent);
}
return true;
}
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
if(view.getId() == R.id.preference_downloadTime) {
Log.i("STATIC", "hour "+hourOfDay+"minute "+minute);
Editor e = this.getPreferenceManager().getSharedPreferences().edit();
e.putString("download_time", hourOfDay + ":" + minute).commit();
}
}
@Override
public boolean onPreferenceClick(Preference preference) {
if(preference.getKey().equals("download_time")){
Dialog dialog=((EditTextPreference)preference).getDialog();
tp = (TimePicker)dialog.findViewById(R.id.preference_downloadTime);
String time = this.getPreferenceManager().getSharedPreferences().getString(preference.getKey(), "17:00");
tp.setCurrentHour(Integer.parseInt(time.split(":")[0]));
tp.setCurrentMinute(Integer.parseInt(time.split(":")[1]));
tp.setOnTimeChangedListener(this);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
return false;
}
}