package com.oreilly.android.otweet.activities;
import twitter4j.Status;
import com.oreilly.android.otweet.OTweetApplication;
import com.oreilly.android.otweet.R;
import com.oreilly.android.otweet.tasks.PostTweetAsyncTask;
import com.oreilly.android.otweet.tasks.PostTweetAsyncTask.PostTweetResponder;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class PostActivity extends Activity implements PostTweetResponder {
private OTweetApplication app;
private TextView counterText;
private EditText tweetContent;
private AlertDialog alertDialog;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = (OTweetApplication)getApplication();
setContentView(R.layout.post_view);
setUpViews();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return MenuHelper.openActivityFromMenuItem(this, item);
}
public void tweetPosted(Status tweet) {
progressDialog.dismiss();
Toast.makeText(this, R.string.tweet_posted, Toast.LENGTH_LONG).show();
finish();
}
public void tweetPosting() {
progressDialog = ProgressDialog.show(
this,
getResources().getString(R.string.posting_title),
getResources().getString(R.string.posting_description)
);
}
private void postValidTweetOrWarn() {
String postText = tweetContent.getText().toString();
int postLength = postText.length();
if (140 < postLength) {
alertDialog = new AlertDialog.Builder(this).
setTitle(R.string.too_many_characters).
setMessage(R.string.too_many_characters_description).
setPositiveButton(android.R.string.ok, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss(); alertDialog = null;
}
}).
show();
} else if (0 == postLength) {
alertDialog = new AlertDialog.Builder(this).
setTitle(R.string.tweet_is_blank).
setMessage(R.string.blank_tweet_description).
setPositiveButton(android.R.string.ok, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss(); alertDialog = null;
}
}).
show();
} else {
new PostTweetAsyncTask(this, app.getTwitter()).execute(postText);
}
}
// called when post button on view is clicked
public void postButtonClicked(View view) {
postValidTweetOrWarn();
}
private void setUpViews() {
counterText = (TextView)findViewById(R.id.counter_text);
tweetContent = (EditText)findViewById(R.id.tweet_contents);
tweetContent.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable text) { }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
public void onTextChanged(CharSequence s, int start, int before, int count) {
int charsLeft = 140 - s.length();
counterText.setText(String.valueOf(charsLeft));
}
});
}
}