package com.zhan_dui.evermemo; import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.ActionBarActivity; import android.view.KeyEvent; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.TextView; import android.widget.Toast; import android.widget.ToggleButton; import com.evernote.client.android.EvernoteSession; import com.evernote.edam.type.User; import com.umeng.analytics.MobclickAgent; import com.zhan_dui.sync.Evernote; import com.zhan_dui.sync.Evernote.EvernoteLoginCallback; public class SettingActivity extends ActionBarActivity implements OnClickListener, EvernoteLoginCallback, OnCheckedChangeListener { private ViewGroup mBindEvernote; public static final String OPEN_MEMO_WHEN_START_UP = "OPEN_MEMO_WHEN_START_UP"; private Evernote mEvernote; private TextView mBindText; private ToggleButton mToggleButton; private Context mContext; private SharedPreferences mSharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { overridePendingTransition(R.anim.in_push_right_to_left, R.anim.in_stable); mContext = this; mSharedPreferences = PreferenceManager .getDefaultSharedPreferences(mContext); super.onCreate(savedInstanceState); setContentView(R.layout.activtiy_setting); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(false); getSupportActionBar().setDisplayShowTitleEnabled(true); getSupportActionBar().setTitle(getString(R.string.setting)); getSupportActionBar().setDisplayUseLogoEnabled(false); mBindEvernote = (ViewGroup) findViewById(R.id.bind_evernote); mBindText = (TextView) findViewById(R.id.bind_text); mToggleButton = (ToggleButton) findViewById(R.id.open_toggle); mBindEvernote.setOnClickListener(this); mEvernote = new Evernote(mContext, this); if (mEvernote.isLogin()) { bindSuccess(); } mToggleButton.setOnCheckedChangeListener(this); mToggleButton.setChecked(mSharedPreferences.getBoolean( OPEN_MEMO_WHEN_START_UP, false)); findViewById(R.id.rate).setOnClickListener(this); findViewById(R.id.setting_start).setOnClickListener(this); } private void bindSuccess() { findViewById(R.id.bind_arrow).setVisibility(View.INVISIBLE); if (mEvernote.getUsername() == null) { mBindText.setText(R.string.unbind_evernote_username_null); mEvernote.getUserInfo(); } else { mBindText.setText(getString(R.string.unbind_evernote, mEvernote.getUsername())); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { finish(); overridePendingTransition(R.anim.in_stable, R.anim.out_push_left_to_right); return true; } return super.onKeyDown(keyCode, event); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bind_evernote: if (!mEvernote.isLogin()) { mEvernote.auth(); } else { AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setMessage(R.string.unbind_tips) .setTitle(R.string.unbind_title) .setPositiveButton(R.string.unbind_sure, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mEvernote.Logout(); } }) .setNegativeButton(R.string.unbind_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create().show(); } break; case R.id.rate: Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName()); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); try { startActivity(goToMarket); } catch (ActivityNotFoundException e) { Toast.makeText(mContext, R.string.can_not_open_market, Toast.LENGTH_SHORT).show(); } break; case R.id.setting_start: mToggleButton.performClick(); default: break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case EvernoteSession.REQUEST_CODE_OAUTH: mEvernote.onAuthFinish(resultCode); break; } } public interface LoginCallback { public void onAuthFinish(int resultCode); } @Override public void onLoginResult(Boolean result) { if (result) { bindSuccess(); Toast.makeText(mContext, R.string.bind_success, Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(mContext, R.string.bind_failed, Toast.LENGTH_SHORT) .show(); } } @Override public void onUserinfo(Boolean result, User user) { mBindText.setText(getString(R.string.unbind_evernote, user.getUsername())); } @Override public void onLogout(Boolean reuslt) { if (reuslt) { Toast.makeText(mContext, R.string.unbind_success, Toast.LENGTH_SHORT).show(); findViewById(R.id.bind_arrow).setVisibility(View.VISIBLE); mBindText.setText(R.string.bind_evernote); } else { Toast.makeText(mContext, R.string.unbind_failed, Toast.LENGTH_SHORT) .show(); } } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { MobclickAgent.onEvent(mContext, "open_quick_launch"); } else { MobclickAgent.onEvent(mContext, "close_quick_launch"); } mSharedPreferences.edit() .putBoolean(OPEN_MEMO_WHEN_START_UP, isChecked).commit(); } @Override protected void onResume() { super.onResume(); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPause(this); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; default: break; } return super.onOptionsItemSelected(item); } }