package com.ijoomer.common.classes; import android.os.AsyncTask; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.RadioGroup; import android.widget.SeekBar; import com.androidquery.AQuery; import com.androidquery.callback.AjaxCallback; import com.androidquery.callback.AjaxStatus; import com.ijoomer.common.configuration.IjoomerApplicationConfiguration; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.TwitterOAuthView; import com.ijoomer.customviews.TwitterOAuthView.Listener; import com.ijoomer.customviews.TwitterOAuthView.Result; import com.ijoomer.src.R; import com.ijoomer.theme.ThemeManager; import com.smart.framework.CustomAlertNeutral; import java.io.File; import twitter4j.StatusUpdate; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; /** * This Class Contains All Method Related To IJoomerTwitterShareActivity. * * @author tasol * */ public class IJoomerTwitterShareActivity extends IjoomerSuperMaster { private LinearLayout lnrTwit; private IjoomerButton btnClose; private ProgressBar pbrTwitterShare; private TwitterOAuthView webTwitter; private AQuery androidQuery; private File statusImage; private static final String OAUTH_CALLBACK_SCHEME = "x-oauthflow-twitter"; private static final String OAUTH_CALLBACK_HOST = "callback"; private static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST; private String IN_TWIT_MESSAGE = ""; private String IN_TWIT_IMAGE = ""; /** * Overrides method */ @Override public int setLayoutId() { return ThemeManager.getInstance().getTwitter(); } @Override public void initComponents() { lnrTwit = (LinearLayout) findViewById(R.id.lnrTwit); pbrTwitterShare = (ProgressBar) findViewById(R.id.pbrTwitterShare); webTwitter = (TwitterOAuthView) findViewById(R.id.webTwitter); btnClose = (IjoomerButton) findViewById(R.id.btnClose); androidQuery = new AQuery(this); getIntentData(); } @Override public void prepareViews() { if (IN_TWIT_MESSAGE.length() > 0) { if (isAuthenticated()) { webTwitter.setVisibility(View.GONE); lnrTwit.setVisibility(View.VISIBLE); if (IN_TWIT_IMAGE.length() > 0) { androidQuery.download(IN_TWIT_IMAGE, new File("/sdcard/img.png"), new AjaxCallback<File>() { @Override public void callback(String url, File file, AjaxStatus status) { super.callback(url, file, status); if (status.getCode() == 200) { statusImage = file; } sendTweet(IN_TWIT_MESSAGE); } }); } else { sendTweet(IN_TWIT_MESSAGE); } } else { webTwitter.setVisibility(View.VISIBLE); lnrTwit.setVisibility(View.GONE); webTwitter.setWebChromeClient(new WebChromeClient() { SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.twitter_authorisation)); @Override public void onProgressChanged(WebView view, int newProgress) { if (proSeekBar == null) { proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.twitter_authorisation)); } if (newProgress >= 100) { proSeekBar.setProgress(newProgress); proSeekBar = null; } else { proSeekBar.setProgress(newProgress); } } }); webTwitter.start(IjoomerApplicationConfiguration.twitterConsumerKey, IjoomerApplicationConfiguration.twitterSecretKey, OAUTH_CALLBACK_URL, true, new Listener() { @Override public void onSuccess(TwitterOAuthView view, AccessToken accessToken) { getSmartApplication().writeSharedPreferences(SP_TWITTER_TOKEN, accessToken.getToken()); getSmartApplication().writeSharedPreferences(SP_TWITTER_SECRET_TOKEN, accessToken.getTokenSecret()); webTwitter.setVisibility(View.GONE); lnrTwit.setVisibility(View.VISIBLE); if (IN_TWIT_IMAGE.length() > 0) { androidQuery.download(IN_TWIT_IMAGE, new File("/sdcard/img.png"), new AjaxCallback<File>() { @Override public void callback(String url, File file, AjaxStatus status) { super.callback(url, file, status); if (status.getCode() == 200) { statusImage = file; } sendTweet(IN_TWIT_MESSAGE); } }); } else { sendTweet(IN_TWIT_MESSAGE); } } @Override public void onFailure(TwitterOAuthView view, Result result) { System.out.println("Result : " + result); } }); } } else { IjoomerUtilities.getCustomOkDialog(getString(R.string.alert_title_twitter), getString(R.string.validation_value_required), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { finish(); } }); } } @Override public void setActionListeners() { btnClose.setOnClickListener(new OnClickListener() { @Override public void onClick(View paramView) { finish(); } }); } @Override public String[] setTabItemNames() { return null; } @Override public int setTabBarDividerResId() { return 0; } @Override public int setTabItemLayoutId() { return 0; } @Override public int[] setTabItemOnDrawables() { return null; } @Override public int[] setTabItemOffDrawables() { return null; } @Override public int[] setTabItemPressDrawables() { return null; } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { } @Override public View setLayoutView() { return null; } @Override public int setHeaderLayoutId() { return 0; } @Override public int setFooterLayoutId() { return 0; } /** * Class method */ /** * This method used to get intent data. */ private void getIntentData() { IN_TWIT_MESSAGE = getIntent().getStringExtra("IN_TWIT_MESSAGE") == null ? "" : getIntent().getStringExtra("IN_TWIT_MESSAGE"); IN_TWIT_IMAGE = getIntent().getStringExtra("IN_TWIT_IMAGE") == null ? "" : getIntent().getStringExtra("IN_TWIT_IMAGE"); if (IN_TWIT_MESSAGE.length() > 140) { IN_TWIT_MESSAGE = IN_TWIT_MESSAGE.substring(0, 139); } } /** * This method used to check is authenticated. * @return represented {@link Boolean} */ private boolean isAuthenticated() { if (getSmartApplication().readSharedPreferences().getString(SP_TWITTER_TOKEN, "").length() > 0) { return true; } else { return false; } } /** * This method used to send tweet. * @param twitMessage represented tweet message */ public void sendTweet(final String twitMessage) { new AsyncTask<Void, Void, Boolean>() { TwitterException twitterException=null; @Override protected void onPreExecute() { super.onPreExecute(); pbrTwitterShare.setVisibility(View.VISIBLE); } @Override protected Boolean doInBackground(Void... params) { try { AccessToken a = new AccessToken(getSmartApplication().readSharedPreferences().getString(SP_TWITTER_TOKEN, ""), getSmartApplication().readSharedPreferences() .getString(SP_TWITTER_SECRET_TOKEN, "")); final Twitter twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(IjoomerApplicationConfiguration.getTwitterConsumerKey(), IjoomerApplicationConfiguration.getTwitterSecretKey()); twitter.setOAuthAccessToken(a); StatusUpdate statusUpdate = new StatusUpdate(twitMessage); if (statusImage != null) { // statusUpdate.setMedia(statusImage); } twitter.updateStatus(statusUpdate); return true; } catch (TwitterException e) { twitterException = e; e.printStackTrace(); return false; } } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); pbrTwitterShare.setVisibility(View.GONE); if (result) { IjoomerUtilities.getCustomOkDialog(getString(R.string.alert_title_twitter), getString(R.string.alert_message_twitter_success), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { finish(); } }); }else{ IjoomerUtilities.getCustomOkDialog(getString(R.string.alert_title_twitter), twitterException.getErrorMessage(), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { finish(); } }); } } }.execute(); } }