package com.linangran.tgfcapp.activities;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import com.gc.materialdesign.views.ProgressBarIndeterminateDeterminate;
import com.linangran.tgfcapp.R;
import com.linangran.tgfcapp.data.HttpResult;
import com.linangran.tgfcapp.tasks.FetchUserInfoTask;
import com.linangran.tgfcapp.utils.APIURL;
import com.linangran.tgfcapp.utils.ErrorHandlerUtils;
import com.linangran.tgfcapp.utils.PreferenceUtils;
import com.linangran.tgfcapp.utils.WebViewUtils;
import java.net.CookieManager;
/**
* Created by linangran on 24/1/15.
*/
public class LoginActivity extends SwipeBackActivity
{
WebView loginWebView;
String verify;
String uid;
ProgressDialog loadingDialog;
FetchUserInfoTask fetchUserInfoTask;
ProgressBarIndeterminateDeterminate webViewProgress;
Toolbar toolbar;
boolean isLogout = false;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
this.loginWebView = (WebView) findViewById(R.id.activity_login_webview);
this.isLogout = this.getIntent().getBooleanExtra("isLogout", false);
this.loginWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url)
{
LoginActivity.this.webViewProgress.setVisibility(View.INVISIBLE);
String uid = WebViewUtils.getCookie(APIURL.WAP_DOMAIN_NAME, PreferenceUtils.KEY_PIKA_UID);
String verify = WebViewUtils.getCookie(APIURL.WAP_DOMAIN_NAME, PreferenceUtils.KEY_PIKA_VERIFY);
if (isLogout == false)
{
if (verify != null && uid != null)
{
LoginActivity.this.loginFinish(uid, verify);
}
}
else
{
if (verify == null)
{
LoginActivity.this.logoutFinish();
}
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
LoginActivity.this.webViewProgress.setVisibility(View.VISIBLE);
LoginActivity.this.webViewProgress.reset();
}
});
this.loginWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress)
{
super.onProgressChanged(view, newProgress);
LoginActivity.this.webViewProgress.setProgress(newProgress);
}
});
if (isLogout == false)
{
WebViewUtils.clearCookies();
this.loginWebView.loadUrl(APIURL.WAP_LOGIN_URL);
this.setTitle("请登录");
}
else
{
this.loginWebView.loadUrl(APIURL.WAP_LOGOUT_URL);
this.setTitle("正在注销,请稍后");
}
this.loginWebView.getSettings().setJavaScriptEnabled(true);
this.toolbar = (Toolbar) findViewById(R.id.activity_login_toolbar);
setSupportActionBar(this.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
this.webViewProgress = (ProgressBarIndeterminateDeterminate) findViewById(R.id.activity_login_webview_progress_bar);
this.webViewProgress.setVisibility(View.VISIBLE);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
case R.id.menu_activity_login_refresh:
this.loginWebView.reload();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed()
{
if (this.loginWebView.canGoBack())
{
this.loginWebView.goBack();
}
else
{
this.finish();
}
}
public void loginFinish(String uid, String verify)
{
this.loadingDialog = ProgressDialog.show(LoginActivity.this, "", "正在获取用户信息,请稍后", true);
this.uid = uid;
this.verify = verify;
PreferenceUtils.prepareLogin(uid, verify);
this.fetchUserInfoTask = new FetchUserInfoTask(this);
this.fetchUserInfoTask.execute();
}
public void logoutFinish()
{
Toast.makeText(this, "注销成功!", Toast.LENGTH_SHORT).show();
PreferenceUtils.setLogout();
LoginActivity.this.finish();
}
public void loadingUsernameFinish(HttpResult<String> result)
{
this.loadingDialog.dismiss();
if (result.hasError)
{
ErrorHandlerUtils.handleError(result, this);
}
else
{
PreferenceUtils.setLogin(this.uid, this.verify, result.result);
Toast.makeText(this, "用户" + result.result + "(" + this.uid + ")" + "已登录", Toast.LENGTH_SHORT).show();
this.finish();
}
}
public void redirectToLogin()
{
this.loginWebView.loadUrl(APIURL.WAP_LOGIN_URL);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_activity_login, menu);
return super.onCreateOptionsMenu(menu);
}
}