package com.example.twitterclient.activities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.activeandroid.Model;
import com.example.twitterclient.R;
import com.example.twitterclient.apps.TwitterApp;
import com.example.twitterclient.handlers.AsyncStatusUpdateHandler;
import com.example.twitterclient.handlers.CharsLeftHandler;
import com.example.twitterclient.handlers.PostTweetActionHandler;
import com.example.twitterclient.models.Tweet;
import com.example.twitterclient.models.User;
public class ComposeActivity extends Activity implements
PostTweetActionHandler.CanUpdateStatus,
AsyncStatusUpdateHandler.CanReceiveTweet {
public static final int RESULT_CODE_TWEET = 0;
private EditText etTweetText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_compose);
etTweetText = (EditText) findViewById(R.id.etTweetText);
etTweetText.setOnEditorActionListener(new PostTweetActionHandler(this));
etTweetText.setOnKeyListener(new CharsLeftHandler(
(TextView) findViewById(R.id.tvCharsLeft),
(Button) findViewById(R.id.btnPost)
));
checkReplyTo();
}
private void checkReplyTo() {
Long tweetId = getIntent().getLongExtra("reply_to_id", 0);
if (tweetId <= 0) return;
User user = Model.load(Tweet.class, tweetId).getUser();
String text = String.format("@%s ", user.screen_name);
etTweetText.setText(text);
}
public void updateStatus(View view) {
Editable text = etTweetText.getText();
String status = text == null ? "" : text.toString();
if (status.length() > 0)
TwitterApp.getClient().updateStatus(status, new AsyncStatusUpdateHandler(this));
}
@Override
public void receiveTweet(Tweet tweet) {
Intent intent = new Intent();
intent.putExtra("tweet_id", tweet.getId());
setResult(RESULT_CODE_TWEET, intent);
finish();
}
@Override
public void onError(Throwable error) {
Log.e("FIXME", "Compose Error", error);
Toast.makeText(this, error.getMessage(), Toast.LENGTH_SHORT).show();
finish();
}
}