/*
SettingTokenFragment.java
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.deviceplugin.slackmessagehook.setting.fragment;
import android.app.Fragment;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import org.deviceconnect.android.deviceplugin.slackmessagehook.R;
import org.deviceconnect.android.deviceplugin.slackmessagehook.setting.HelpActivity;
import org.deviceconnect.android.deviceplugin.slackmessagehook.slack.SlackManager;
/**
* トークン設定画面用Fragment.
*
* @author NTT DOCOMO, INC.
*/
public class SettingTokenFragment extends Fragment {
/** 回転時の画面切り替え用にrootを保持しておく */
private FrameLayout rootLayout;
/** 次へボタンクリックリスナー */
private View.OnClickListener onClickListener;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, final Bundle savedInstanceState) {
// View作成
View view = initView();
rootLayout = new FrameLayout(view.getContext());
rootLayout.addView(view);
return rootLayout;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// 画面回転時にレイアウトを作り直す
rootLayout. removeAllViews();
View view = initView();
rootLayout.addView(view);
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStop() {
super.onStop();
}
/**
* View作成
* @return View
*/
private View initView() {
// Root view.
LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View view = inflater.inflate(R.layout.fragment_token, null);
final Context context = view.getContext();
// アクセストークン
final EditText text = (EditText)view.findViewById(R.id.textToken);
text.setText(Utils.getAccessToken(context));
// 次へボタン
Button nextButton = (Button)view.findViewById(R.id.buttonNext);
onClickListener = new View.OnClickListener() {
@Override
public void onClick(final View v) {
final String token = text.getText().toString();
// プログレスダイアログを表示
final ProgressDialog dialog = Utils.showProgressDialog(context);
final SlackManager.FinishCallback<Boolean> finishCallback = new SlackManager.FinishCallback<Boolean>() {
@Override
public void onFinish(Boolean retry, Exception error) {
if (retry) {
// 再試行
onClickListener.onClick(v);
}
}
};
// Token設定
SlackManager.INSTANCE.setApiToken(token, true, new SlackManager.FinishCallback<Void>() {
@Override
public void onFinish(Void aVoid, Exception error) {
// プログレスダイアログを閉じる
dialog.dismiss();
if (error == null) {
// Tokenを保存
Utils.saveAccessToken(context, token);
// 画面遷移
Utils.transition(new SettingFragment(), getFragmentManager(), false);
} else {
// エラーダイアログ表示
if (error instanceof SlackManager.SlackAuthException ||
error instanceof SlackManager.SlackAPITokenValueException) {
// エラー表示
Utils.showAlertDialog(context, context.getString(R.string.error_auth));
} else if (error instanceof SlackManager.SlackConnectionException) {
// エラー表示
Utils.showSlackErrorDialog(context, finishCallback);
} else {
// エラー表示
Utils.showErrorDialog(context, finishCallback);
}
}
}
});
}
};
nextButton.setOnClickListener(onClickListener);
// トークン取得ボタン
Button tokenButton = (Button)view.findViewById(R.id.buttonGetToken);
tokenButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse("https://slack.com/apps/A0F7YS25R-bots");
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
}
});
// ヘルプボタン
Button helpButton = (Button)view.findViewById(R.id.buttonHelp);
helpButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, HelpActivity.class);
startActivity(intent);
}
});
return view;
}
}