package com.integreight.onesheeld.shields.fragments; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.ScrollView; import android.widget.Toast; import com.integreight.onesheeld.R; import com.integreight.onesheeld.shields.ShieldFragmentParent; import com.integreight.onesheeld.shields.controller.TwitterShield; import com.integreight.onesheeld.shields.controller.TwitterShield.TwitterEventHandler; import com.integreight.onesheeld.utils.ConnectionDetector; import com.integreight.onesheeld.utils.customviews.OneSheeldTextView; public class TwitterFragment extends ShieldFragmentParent<TwitterFragment> { LinearLayout lastTweetTextContainer; OneSheeldTextView userNameTextView; Button twitterLogin; Button twitterLogout; ProgressBar progress; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.twitter_shield_fragment_layout, container, false); } @Override public void doOnStart() { initializeFirmata(); if ((getApplication().getRunningShields().get( getControllerTag())) != null && ((TwitterShield) getApplication().getRunningShields().get( getControllerTag())).isTwitterLoggedInAlready()) { buttonToLoggedIn(); } else { buttonToLoggedOut(); } twitterLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { if (ConnectionDetector.isConnectingToInternet(activity)) ((TwitterShield) getApplication().getRunningShields().get( getControllerTag())).login(); else Toast.makeText( getApplication().getApplicationContext(), R.string.general_toasts_please_check_your_internet_connection_and_try_again_toast, Toast.LENGTH_SHORT).show(); } }); twitterLogout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { logoutFromTwitter(); } }); } @Override public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) { lastTweetTextContainer = (LinearLayout) v.findViewById(R.id.tweetsCont); userNameTextView = (OneSheeldTextView) v .findViewById(R.id.twitter_shield_username_textview); twitterLogin = (Button) v.findViewById(R.id.login); twitterLogout = (Button) v.findViewById(R.id.logout); progress = (ProgressBar) v.findViewById(R.id.progress); } private TwitterEventHandler twitterEventHandler = new TwitterEventHandler() { @Override public void onRecieveTweet(final String tweet) { // TODO Auto-generated method stub if (canChangeUI()) { uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { OneSheeldTextView tweetItem = (OneSheeldTextView) activity .getLayoutInflater().inflate( R.layout.tweet_item, lastTweetTextContainer, false); tweetItem.setText(tweet); lastTweetTextContainer.addView(tweetItem); ((ScrollView) lastTweetTextContainer.getParent()) .invalidate(); } }); } } @Override public void onTwitterLoggedIn(final String userName) { // TODO Auto-generated method stub if (canChangeUI()) { uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { userNameTextView.setText(activity.getString(R.string.twitter_logged_in_as)+": @" + userName); buttonToLoggedIn(); } }); } } @Override public void onTwitterError(final String error) { // TODO Auto-generated method stub if (canChangeUI()) { uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText(activity, error, Toast.LENGTH_SHORT) .show(); } }); } } @Override public void startProgress() { uiHandler.post(new Runnable() { @Override public void run() { if (progress != null && canChangeUI()) { progress.setVisibility(View.VISIBLE); } } }); } @Override public void stopProgress() { uiHandler.post(new Runnable() { @Override public void run() { if (progress != null && canChangeUI()) { progress.setVisibility(View.GONE); } } }); } @Override public void onImageUploaded(final String tweet) { // TODO Auto-generated method stub uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { if (canChangeUI()) { OneSheeldTextView tweetItem = (OneSheeldTextView) activity .getLayoutInflater().inflate( R.layout.tweet_item, lastTweetTextContainer, false); tweetItem.setText(tweet); lastTweetTextContainer.addView(tweetItem); ((ScrollView) lastTweetTextContainer.getParent()) .invalidate(); } } }); } @Override public void onDirectMessageSent(final String userHandle, final String msg) { // TODO Auto-generated method stub uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { if (canChangeUI()) { OneSheeldTextView tweetItem = (OneSheeldTextView) activity .getLayoutInflater().inflate( R.layout.tweet_item, lastTweetTextContainer, false); tweetItem.setText(activity.getString(R.string.twitter_to)+": " + userHandle + ", "+activity.getString(R.string.twitter_message)+": " + msg); lastTweetTextContainer.addView(tweetItem); ((ScrollView) lastTweetTextContainer.getParent()) .invalidate(); } } }); } @Override public void onNewTrackedKeyword(final String word) { // TODO Auto-generated method stub if (canChangeUI()) { uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText(activity, activity.getString(R.string.twitter_twitter_tracks_new_keyword_toast)+": " + word, Toast.LENGTH_SHORT) .show(); } }); } } @Override public void onNewTrackedKeywordRemoved(final String word) { // TODO Auto-generated method stub if (canChangeUI()) { uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText(activity, activity.getString(R.string.twitter_twitter_stopped_tracking_keyword_toast)+": " + word, Toast.LENGTH_SHORT) .show(); } }); } } @Override public void onNewTrackedTweetFound(final String tweet) { // TODO Auto-generated method stub if (canChangeUI()) { uiHandler.removeCallbacksAndMessages(null); uiHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText(activity, activity.getString(R.string.twitter_tracked_tweet_found_toast)+": " + tweet, Toast.LENGTH_SHORT) .show(); } }); } } }; private void initializeFirmata() { if (getApplication().getRunningShields().get(getControllerTag()) == null) getApplication().getRunningShields().put(getControllerTag(), new TwitterShield(activity, getControllerTag())); ((TwitterShield) getApplication().getRunningShields().get( getControllerTag())) .setTwitterEventHandler(twitterEventHandler); checkLogin(); } private void checkLogin() { if ((getApplication().getRunningShields().get( getControllerTag())) != null && ((TwitterShield) getApplication().getRunningShields().get( getControllerTag())).isTwitterLoggedInAlready()) { userNameTextView.setVisibility(View.VISIBLE); userNameTextView.setText(activity.getString(R.string.twitter_logged_in_as)+": @" + ((TwitterShield) getApplication().getRunningShields() .get(getControllerTag())).getUsername()); twitterLogout.setVisibility(View.VISIBLE); twitterLogin.setVisibility(View.INVISIBLE); lastTweetTextContainer.setVisibility(View.VISIBLE); lastTweetTextContainer.removeAllViews(); if(getView()!=null) getView().invalidate(); } else { userNameTextView.setVisibility(View.INVISIBLE); userNameTextView.setText(""); twitterLogout.setVisibility(View.INVISIBLE); twitterLogin.setVisibility(View.VISIBLE); lastTweetTextContainer.setVisibility(View.INVISIBLE); lastTweetTextContainer.removeAllViews(); if(getView()!=null) getView().invalidate(); } } private void logoutFromTwitter() { // Clear the shared preferences ((TwitterShield) getApplication().getRunningShields().get( getControllerTag())).logoutFromTwitter(); buttonToLoggedOut(); } private void buttonToLoggedOut() { if (twitterLogout != null) { twitterLogout.setVisibility(View.INVISIBLE); } if (twitterLogin != null) { twitterLogin.setVisibility(View.VISIBLE); } if (userNameTextView != null) { userNameTextView.setVisibility(View.INVISIBLE); } if (lastTweetTextContainer != null) { lastTweetTextContainer.setVisibility(View.INVISIBLE); lastTweetTextContainer.removeAllViews(); } if(getView()!=null) getView().invalidate(); } private void buttonToLoggedIn() { if (twitterLogout != null) { twitterLogout.setVisibility(View.VISIBLE); } if (twitterLogin != null) { twitterLogin.setVisibility(View.INVISIBLE); } if (userNameTextView != null) { userNameTextView.setVisibility(View.VISIBLE); } if (lastTweetTextContainer != null) { lastTweetTextContainer.setVisibility(View.VISIBLE); lastTweetTextContainer.removeAllViews(); } if(getView()!=null) getView().invalidate(); } @Override public void doOnServiceConnected() { } }