package com.gnod.geekr.ui.activity;
import java.io.FileNotFoundException;
import java.io.InputStream;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.util.Log;
import android.view.View;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.gnod.geekr.R;
import com.gnod.geekr.app.AppConfig;
import com.gnod.geekr.app.AppManager;
import com.gnod.geekr.service.PollingManager;
import com.gnod.geekr.tool.StringUtils;
public class NotificationActivity extends SherlockPreferenceActivity {
private AppConfig config;
private CheckBoxPreference newFans;
private CheckBoxPreference atMeComment;
private CheckBoxPreference atMeWeibo;
private CheckBoxPreference newComment;
private Preference notificationInterval;
private CheckBoxPreference nightDisturbed;
private CheckBoxPreference notifiedEnable;
private CheckBoxPreference specialPerson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
addPreferencesFromResource(R.xml.notification_center);
AppManager.getInstance().addActivity(this);
setTitle("通知中心");
config = (AppConfig) getApplication();
notifiedEnable = (CheckBoxPreference)findPreference("notification_switch");
notifiedEnable.setChecked(PollingManager.isPolling(config));
notifiedEnable.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
PollingManager.setPolling(config, notifiedEnable.isChecked());
return true;
}
});
newFans = (CheckBoxPreference)findPreference("newfans");
newFans.setChecked(PollingManager.isPollingNewFans(config));
newFans.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
PollingManager.setPollingNewFans(config, newFans.isChecked());
return true;
}
});
newComment = (CheckBoxPreference)findPreference("newcomment");
newComment.setChecked(PollingManager.isPollingNewComment(config));
newComment.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
PollingManager.setPollingNewComment(config, newComment.isChecked());
return true;
}
});
atMeComment = (CheckBoxPreference)findPreference("commentatme");
atMeComment.setChecked(PollingManager.isPollingCommentAtMe(config));
atMeComment.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
PollingManager.setPollingCommentAtMe(config, atMeComment.isChecked());
return true;
}
});
atMeWeibo = (CheckBoxPreference)findPreference("atmeweibo");
atMeWeibo.setChecked(PollingManager.isPollingAtMe(config));
atMeWeibo.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
PollingManager.setPollingAtMe(config, atMeWeibo.isChecked());
return true;
}
});
specialPerson = (CheckBoxPreference)findPreference("specialperson");
String specialName = PollingManager.getPollingSpecialPersonName(config);
if(StringUtils.isNullOrEmpty(specialName)) {
specialPerson.setChecked(false);
specialPerson.setSummary("当指定用户有消息更新时收到提醒");
} else {
specialPerson.setChecked(true);
specialPerson.setSummary(specialName + "(当该用户有消息更新时收到提醒)");
}
specialPerson.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if(specialPerson.isChecked()) {
Intent intent = new Intent(NotificationActivity.this,
AtUserActivity.class);
intent.putExtra("Type", "Special");
startActivityForResult(intent, 1);
} else {
PollingManager.setPollingSpecialPerson(config, "");
specialPerson.setSummary("当指定用户有消息更新时收到提醒");
}
return true;
}
});
notificationInterval = (Preference)findPreference("notificationinterval");
notificationInterval.setSummary(PollingManager.formateInterval(config));
notificationInterval.setOnPreferenceClickListener(new OnPreferenceClickListener() {
String[] timeArray = {
"30秒", "1分钟", "3分钟", "5分钟", "10分钟"
};
@Override
public boolean onPreferenceClick(Preference pref) {
AlertDialog.Builder builder = new AlertDialog.Builder(pref.getContext());
builder.setTitle("轮询时间间隔");
builder.setItems(timeArray, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
long interval = 3 * 60 * 1000;
switch (which) {
case 0:
interval = 30 * 1000;
break;
case 1:
interval = 60 * 1000;
break;
case 2:
interval = 3 * 60 * 1000;
break;
case 3:
interval = 5 * 60 * 1000;
break;
case 4:
interval = 10 * 60 * 1000;
break;
default:
break;
}
PollingManager.setPollingInterval(config, interval);
PollingManager.setPolling(config, PollingManager.isPolling(config));
notificationInterval.setSummary(timeArray[which]);
dialog.dismiss();
}
});
builder.show();
return true;
}
});
nightDisturbed = (CheckBoxPreference)findPreference("nodistrubed");
nightDisturbed.setChecked(PollingManager.isPollingAvoidNightDistrubed(config));
nightDisturbed.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
PollingManager.setPollingAvoidNightDistrubed(
config, nightDisturbed.isChecked());
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.menu_default, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
AppManager.getInstance().finishActivity(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if(resultCode == RESULT_OK) {
String userName = data.getStringExtra("Name");
PollingManager.setPollingSpecialPerson(config, userName);
specialPerson.setSummary(userName + "(当该用户有消息更新时收到提醒)");
}
break;
default:
break;
}
}
}