package fi.bitrite.android.ws.activity;
import android.app.Dialog;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.android.gms.analytics.GoogleAnalytics;
import fi.bitrite.android.ws.R;
import fi.bitrite.android.ws.WSAndroidApplication;
import fi.bitrite.android.ws.api.RestClient;
import fi.bitrite.android.ws.auth.AuthenticationHelper;
import fi.bitrite.android.ws.messaging.RestUnreadCount;
import fi.bitrite.android.ws.util.GlobalInfo;
import fi.bitrite.android.ws.util.Tools;
public class MessagesTabActivity extends WSBaseActivity implements android.widget.AdapterView.OnItemClickListener, View.OnClickListener {
TextView mNoNetworkWarning;
TextView mUnreadCount;
Button mUpdateMessages;
Button mViewMessagesOnSite;
private DialogHandler dialogHandler;
private int numUnread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.messages_tab);
initView();
mNoNetworkWarning = (TextView)findViewById(R.id.noNetworkWarningMessages);
mUnreadCount = (TextView)findViewById(R.id.unreadCount);
mUpdateMessages = (Button)findViewById(R.id.btnUpdateMessages);
mViewMessagesOnSite = (Button)findViewById(R.id.btnViewOnSite);
dialogHandler = new DialogHandler(this);
if (Tools.isNetworkConnected(this)) {
downloadUnreadCount();
}
mUpdateMessages.setOnClickListener(this);
mViewMessagesOnSite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = GlobalInfo.warmshowersBaseUrl + "/user/" + AuthenticationHelper.getAccountUid() + "/messages";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
}
private void downloadUnreadCount() {
dialogHandler.showDialog(DialogHandler.MESSAGES);
MessagesTask messagesTask = new MessagesTask();
messagesTask.execute();
}
@Override
protected Dialog onCreateDialog(int id, Bundle args) {
if (DialogHandler.inProgress()) {
return dialogHandler.createDialog(id, getResources().getString(R.string.messages_in_progress));
} else {
return null;
}
}
@Override
protected void onResume() {
super.onResume();
if (!Tools.isNetworkConnected(this)) {
mNoNetworkWarning.setText(getString(R.string.not_connected_to_network));
mUpdateMessages.setEnabled(false);
mViewMessagesOnSite.setEnabled(false);
mNoNetworkWarning.setVisibility(View.VISIBLE);
return;
}
mUpdateMessages.setEnabled(true);
mUpdateMessages.setVisibility(View.VISIBLE);
mViewMessagesOnSite.setEnabled(true);
mNoNetworkWarning.setText("");
mNoNetworkWarning.setVisibility(View.GONE);
if (DialogHandler.inProgress()) {
dialogHandler.dismiss();
dialogHandler.showDialog(DialogHandler.MESSAGES);
}
}
@Override
public void onClick(View v) {
downloadUnreadCount();
}
private class MessagesTask extends AsyncTask<Void, Void, Object> {
@Override
protected Object doInBackground(Void... params) {
Object retObj = null;
try {
RestUnreadCount unreadCount = new RestUnreadCount();
numUnread = unreadCount.getUnreadCount();
} catch (Exception e) {
if (DialogHandler.inProgress()) {
dialogHandler.dismiss();
}
Log.e(WSAndroidApplication.TAG, e.getMessage(), e);
retObj = e;
}
return retObj;
}
@Override
protected void onPostExecute(Object result) {
dialogHandler.dismiss();
if (result instanceof Exception) {
RestClient.reportError(MessagesTabActivity.this, result);
return;
}
updateViewContent();
}
}
private void updateViewContent() {
String text;
if (numUnread > 0) {
String numUnreadFormat = getResources().getString(R.string.unread_messages);
text = String.format(numUnreadFormat, numUnread);
} else {
text = getResources().getString(R.string.no_unread_messages);
}
mUnreadCount.setText(text);
mUpdateMessages.setVisibility(View.VISIBLE);
}
@Override
protected void onStop() {
GoogleAnalytics.getInstance(this).reportActivityStop(this);
super.onStop();
}
@Override
protected void onStart() {
super.onStart();
GoogleAnalytics.getInstance(this).reportActivityStart(this);
}
}