package com.ladjzero.uzlee;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import com.joanzapata.iconify.IconDrawable;
import com.joanzapata.iconify.fonts.MaterialIcons;
import com.ladjzero.hipda.Posts;
import com.ladjzero.uzlee.utils.Utils;
import com.orhanobut.logger.Logger;
/**
* Created by ladjzero on 2015/4/25.
*/
public class ActivityChat extends ActivityWithWebView implements HttpClientCallback {
private EditText mMessage;
private TextView mSend;
private Posts mCharts;
private int uid;
private String mName;
private WebView2 mWebView;
private AsyncTask mParseTask;
private boolean mWebViewReady;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_chat);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toolbarClick();
}
});
setSupportActionBar(toolbar);
ActionBar mActionbar = getSupportActionBar();
mActionbar.setDisplayHomeAsUpEnabled(true);
mActionbar.setDisplayHomeAsUpEnabled(true);
mActionbar.setDisplayShowCustomEnabled(true);
mWebView = (WebView2) findViewById(R.id.webview);
mSend = (TextView) findViewById(R.id.send_message);
mSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String message = mMessage.getText().toString();
if (message != null && message.trim().length() > 0) {
mSend.setText("{md-refresh spin}");
mSend.setClickable(false);
mMessage.setText("");
App.getInstance().getCore().getHttpApi().sendMessage(mName, message, ActivityChat.this);
}
}
});
mCharts = new Posts();
mMessage = (EditText) findViewById(R.id.message);
mMessage.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
enableSend(s.toString().trim().length() > 0);
}
});
enableSend(false);
Intent intent = getIntent();
uid = intent.getIntExtra("uid", -1);
mName = intent.getStringExtra("name");
setTitle(mName);
}
private void enableSend(boolean enable) {
mSend.setTextColor(Utils.getThemeColor(this, enable ? R.attr.colorPrimary : R.attr.colorBackgroundSecondary));
mSend.setClickable(enable);
}
@Override
public void onResume() {
super.onResume();
if (mCharts.size() == 0) fetch(1);
}
@Override
public WebView2 getWebView() {
return mWebView;
}
@Override
public String getHTMLFilePath() {
return "file:///android_asset/chats.html?theme=" +
setting.getString("theme", DefaultTheme) +
"&fontsize=" + setting.getString("font_size", "normal");
}
private void fetch(int page) {
Logger.i("fetching chats uid " + uid);
App.getInstance().getHttpClient().get("http://www.hi-pda.com/forum/pm.php?uid=" + uid + "&filter=privatepm&daterange=5", new HttpClientCallback() {
@Override
public void onSuccess(String response) {
mParseTask = new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... strings) {
String html = App.getInstance().getCore().getPostsParser().parseMessagesToHtml(strings[0]);
while (!mWebViewReady) {
try {
java.lang.Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return html;
}
@Override
protected void onPostExecute(String html) {
String js = "javascript:loadHTML(\"" + html.replaceAll("\"", "\\\\\"").replaceAll("[\\t\\n\\r]", "") + "\")";
Logger.d(js);
mWebView.loadUrl(js);
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, response);
}
@Override
public void onFailure(String reason) {
setProgressBarIndeterminateVisibility(false);
showToast(reason);
}
});
}
@Override
public void onWebViewReady() {
super.onWebViewReady();
mWebViewReady = true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.chat, menu);
menu.findItem(R.id.browser)
.setIcon(new IconDrawable(this, MaterialIcons.md_open_in_browser)
.color(Utils.getThemeColor(this, R.attr.colorTextInverse))
.actionBarSize());
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.browser) {
Utils.openInBrowser(this, "http://www.hi-pda.com/forum/pm.php?uid=" + uid + "&filter=privatepm&daterange=5");
}
return super.onOptionsItemSelected(item);
}
@Override
public void onSuccess(String response) {
mSend.setText("{md-send}");
mSend.setClickable(true);
mSend.postDelayed(new Runnable() {
@Override
public void run() {
fetch(1);
}
}, 300);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mParseTask != null && !mParseTask.isCancelled()) {
mParseTask.cancel(true);
}
}
@Override
public void onFailure(String reason) {
showToast(reason);
}
}