package com.mathiasluo.designer.view.activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import com.mathiasluo.designer.R;
import com.mathiasluo.designer.app.OAuthUrl;
import com.mathiasluo.designer.presenter.LoginPresenter;
import com.mathiasluo.designer.utils.LogUtils;
import com.mathiasluo.designer.utils.ToastUtil;
import com.mathiasluo.designer.view.IView.ILoginActivity;
import com.mathiasluo.designer.view.widget.ProgressWeb;
import com.mikepenz.iconics.IconicsDrawable;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Created by MathiasLuo on 2016/3/4.
*/
public class LoginActivity extends SwipBaseActivity<LoginActivity, LoginPresenter> implements ILoginActivity {
@Bind(R.id.toolbar)
Toolbar mToolbar;
@Bind(R.id.webView)
ProgressWeb webView;
private LoginPresenter mLoginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// requestWindowFeature(Window.FEATURE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
mLoginPresenter = (LoginPresenter) getPresenter();
init();
}
private void init() {
setSupportActionBar(mToolbar);
mToolbar.setNavigationIcon(new IconicsDrawable(this).icon("gmi_arrow_back").sizeDp(16).color(Color.WHITE));
mToolbar.setNavigationOnClickListener(v -> {
ToastUtil.Toast(getString(R.string.login_failed));
setResult(RESULT_CANCELED);
LoginActivity.this.finish();
});
webView.getWebView().setWebViewClient(new WebViewClient() {
String authCode;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
ToastUtil.Toast("登录失败请稍后重试\n" + error.toString());
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (url.contains("?code") && url.contains(OAuthUrl.OAUTH_STATE)) {
Uri uri = Uri.parse(url);
authCode = uri.getQueryParameter("code");
LogUtils.e("onPageStarted================>>>>>>>>>获取到了code\n" + authCode);
//选择动画处理还是直接结束
ToastUtil.Toast("正在登陆,请稍后...");
webView.getWebView().setVisibility(View.GONE);
webView.setRefreshing(true);
mLoginPresenter.getAccesToken(authCode);
}
}
});
webView.loadUrl(OAuthUrl.getOAuthLoginUrl(getString(R.string.Client_ID)));
/* mWebView.setWebViewClient(new WebViewClient() {
String authCode;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
ToastUtil.Toast("登录失败请稍后重试\n" + error.toString());
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
LogUtils.e("现在在============>>> onPageStarted");
if (url.contains("?code") && url.contains(OAuthUrl.OAUTH_STATE)) {
Uri uri = Uri.parse(url);
authCode = uri.getQueryParameter("code");
LogUtils.e("onPageStarted================>>>>>>>>>获取到了code\n" + authCode);
//选择动画处理还是直接结束
mLoginPresenter.getAccesToken(authCode);
}
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
LogUtils.e("现在在============>>> onLoadResource");
}
});
mWebView.loadUrl(OAuthUrl.getOAuthLoginUrl(getString(R.string.Client_ID)));*/
}
@Override
protected LoginPresenter creatPresenter() {
return new LoginPresenter();
}
@Override
public void showLoading() {
}
@Override
public void closeLoading() {
}
}