package cn.scau.scautreasure.ui;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.TimePicker;
import android.widget.ToggleButton;
import org.androidannotations.annotations.EActivity;
import java.util.Calendar;
import cn.scau.scautreasure.R;
import cn.scau.scautreasure.receiver.NotificationReceiver;
import cn.scau.scautreasure.service.NotificationService;
/**负责每天通知时间的设置
* 通知时间写进@FILENAME="timing"
* */
@EActivity
public class NotificationTiming extends Activity {
private static final String FILENAME="timing";
public static final long dailytime=24*60*60*1000;
private long howlong=0;
private int mHour=0;
private int mMin=0;
private Button btn_time_setting;
private ToggleButton btn_on_off;
AlarmManager am;
PendingIntent pi;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.notification_setting);
this.btn_time_setting=(Button)super.findViewById(R.id.btn_time_setting);
this.btn_on_off=(ToggleButton)super.findViewById(R.id.btn_on_off);
howlong=count();
if(howlong!=-1) {
setNotification();
}
this.btn_time_setting.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Dialog dialog = new TimePickerDialog(NotificationTiming.this,
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMin = minute;
btn_time_setting.setText("图书到期提醒(前一天" + formate(mHour, mMin) + ")");
setShare(mHour, mMin);
am.cancel(pi);
howlong = count();
setNotification();
btn_on_off.setChecked(false);
}
}, 20, 0, true
);
dialog.show();
}
});
this.btn_on_off.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(btn_on_off.isChecked()){
mHour=-1;
mMin=-1;
setShare(mHour,mMin);
am.cancel(pi);
btn_time_setting.setText("图书到期提醒(已关闭)");
}else{
mHour=20;
mMin=0;
setShare(mHour,mMin);
howlong=count();
setNotification();
btn_time_setting.setText("图书到期提醒(前一天" +formate(mHour,mMin)+")");
}
}
});
}
public void setShare(int mHour,int mMin){
SharedPreferences share=NotificationTiming.super.getSharedPreferences(FILENAME,Activity.MODE_PRIVATE);
SharedPreferences.Editor editor=share.edit();
editor.putInt("hour",mHour);
editor.putInt("min",mMin);
editor.putInt("date",1);//提前几天通知,留着这东西在,还没完善
editor.commit();
}
public long count(){
SharedPreferences shared=NotificationTiming.super.getSharedPreferences(FILENAME,Activity.MODE_PRIVATE);
int hour=shared.getInt("hour", 20);
int min=shared.getInt("min", 0);
if(hour==-1){
return -1;
}
btn_time_setting.setText("图书到期提醒(前一天" +formate(hour,min)+")");
Calendar ca = Calendar.getInstance();
int h=ca.get(Calendar.HOUR_OF_DAY);//24小时制小时
int m=ca.get(Calendar.MINUTE);//分
if((howlong=(hour-h)*60*60*1000+(min-m)*60*1000)<0)
howlong+=dailytime;
Log.v("howlong",howlong+"");
return howlong;
}
public void setNotification(){
am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this,NotificationReceiver.class);
pi = PendingIntent.getBroadcast(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + howlong, dailytime, pi);
}
public String formate(int hour,int min){
String sHour=hour+"";
String sMin=min+"";
if(hour<10)
sHour="0"+sHour;
if(min<10)
sMin="0"+sMin;
return sHour+":"+sMin;
}
}