package com.example.GihyoTest;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.evernote.client.android.EvernoteSession;
import com.evernote.client.android.InvalidAuthenticationException;
public class MainActivity extends Activity implements MenuFragment.OnMenuItemSelectedListener {
// 認証用の情報
public static final String CONSUMER_KEY = "";
public static final String CONSUMER_SECRET = "";
public static final EvernoteSession.EvernoteService EVERNOTE_SERVICE = EvernoteSession.EvernoteService.SANDBOX;
// Evernoteのセッション保持用変数
private EvernoteSession mEvernoteSession;
// レイアウト変数
private Menu mMenu = null;
private RelativeLayout mLogintLayout;
// ログ用タグ
private static final String LOGTAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mLogintLayout = (RelativeLayout) findViewById(R.id.loginLayout);
// Evernoteのセッション情報を取得
mEvernoteSession = EvernoteSession.getInstance(this, CONSUMER_KEY, CONSUMER_SECRET, EVERNOTE_SERVICE);
// Fragmentが無ければMenuFragmentを表示
FragmentManager fm = getFragmentManager();
fm.executePendingTransactions();
if(fm.getBackStackEntryCount() == 0) {
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_container, new MenuFragment());
ft.commit();
}
}
@Override
public void onResume() {
super.onResume();
updateAuthUi();
invalidateOptionsMenu();
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem itemLogout = mMenu.findItem(R.id.action_logout);
if (mEvernoteSession.isLoggedIn()) {
itemLogout.setVisible(true);
} else {
itemLogout.setVisible(false);
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu, menu);
mMenu = menu;
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout:
// Fragmentの履歴を全て消去
FragmentManager fm = getFragmentManager();
for (int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
// ログアウト処理
try {
mEvernoteSession.logOut(this);
} catch (InvalidAuthenticationException e) {
Log.e(LOGTAG, "未ログイン状態でのログインエラー", e);
}
updateAuthUi();
invalidateOptionsMenu();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
// Oauth認証結果を受け取る
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case EvernoteSession.REQUEST_CODE_OAUTH:
if (resultCode == Activity.RESULT_OK) {
updateAuthUi();
invalidateOptionsMenu();
}
break;
default:
break;
}
}
/*
* MenuFragmentのアイテム押下のリスナー
*/
@Override
public void onMenuItemSelected(int position) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
switch (position) {
case 0:
ft.replace(R.id.fragment_container, new SimpleNoteFragment(), "SimpleNote");
break;
case 1:
ft.replace(R.id.fragment_container, new SpecialNoteFragment(), "SpecialNote");
break;
case 2:
ft.replace(R.id.fragment_container, new SearchNoteFragment(), "SearchNote");
break;
default:
;
}
// 「戻る」ボタンで戻れるようにFragmentをバックスタックに積む
ft.addToBackStack(null);
ft.commit();
fm.executePendingTransactions();
}
// ログイン状態に応じてログイン画面の描画/消去を切り替える
private void updateAuthUi() {
if(mLogintLayout != null) {
if (mEvernoteSession.isLoggedIn()) {
mLogintLayout.setVisibility(View.GONE);
} else {
mLogintLayout.setVisibility(View.VISIBLE);
}
}
}
// ログイン処理
public void getAuth(View view) {
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo nInfo = cm.getActiveNetworkInfo();
if (nInfo == null) {
Toast.makeText(this, "Please connect to 3G/Wi-Fi.", Toast.LENGTH_LONG).show();
} else {
mEvernoteSession.authenticate(getApplicationContext());
}
}
}