package org.getlantern.firetweet.extension.twitlonger;
import org.getlantern.firetweet.Firetweet;
import org.getlantern.firetweet.extension.twitlonger.TwitLonger.TwitLongerException;
import org.getlantern.firetweet.extension.twitlonger.TwitLonger.TwitLongerResponse;
import org.getlantern.firetweet.model.ComposingStatus;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class TwitLongerPostActivity extends Activity implements Constants, OnClickListener {
private TextView mPreview;
private ImageButton mActionButton;
private ProgressBar mProgress;
private String mResult;
private ComposingStatus mStatus;
private TwitLongerPostTask mTwitLongerPostTask;
@Override
public void onClick(final View view) {
switch (view.getId()) {
case R.id.action: {
if (mResult == null) {
if (mTwitLongerPostTask != null) {
mTwitLongerPostTask.cancel(true);
}
mTwitLongerPostTask = new TwitLongerPostTask();
mTwitLongerPostTask.execute();
} else {
Firetweet.replaceComposeActivityText(this, mResult);
}
break;
}
}
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mPreview = (TextView) findViewById(R.id.text);
mActionButton = (ImageButton) findViewById(R.id.action);
mProgress = (ProgressBar) findViewById(R.id.progress);
mStatus = Firetweet.getComposingStatusFromIntent(getIntent());
if (mStatus == null) {
finish();
return;
}
mResult = savedInstanceState != null ? savedInstanceState.getString(Intent.EXTRA_TEXT) : null;
mPreview.setText(mResult != null ? mResult : mStatus.text);
}
@Override
protected void onSaveInstanceState(final Bundle outState) {
outState.putString(Intent.EXTRA_TEXT, mResult);
super.onSaveInstanceState(outState);
}
public final class TwitLongerPostTask extends AsyncTask<Void, Void, Object> {
@Override
protected Object doInBackground(final Void... args) {
final TwitLonger tl = new TwitLonger(TWITLONGER_APP_NAME, TWITLONGER_API_KEY);
try {
return tl.post(mStatus.text, mStatus.screen_name, mStatus.in_reply_to_id,
mStatus.in_reply_to_screen_name);
} catch (final TwitLongerException e) {
return e;
}
}
@Override
protected void onPostExecute(final Object result) {
mProgress.setVisibility(View.GONE);
mActionButton.setVisibility(View.VISIBLE);
mActionButton.setImageResource(result instanceof TwitLongerResponse ? R.drawable.ic_menu_mark
: R.drawable.ic_menu_send);
if (result instanceof TwitLongerResponse) {
mResult = ((TwitLongerResponse) result).content;
mPreview.setText(mResult);
} else if (result instanceof TwitLongerException) {
Toast.makeText(TwitLongerPostActivity.this,
getString(R.string.error_message, ((TwitLongerException) result).getMessage()),
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(TwitLongerPostActivity.this, R.string.error_unknown_error, Toast.LENGTH_LONG).show();
}
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
mProgress.setVisibility(View.VISIBLE);
mActionButton.setVisibility(View.GONE);
super.onPreExecute();
}
}
}