From ff0e2a287e9086fc685291880c9b520c9f71e430 Mon Sep 17 00:00:00 2001 From: ricky barrette Date: Fri, 11 Feb 2011 15:37:02 +0000 Subject: [PATCH] TravelPost.java create updateWidget() that is called from onDestroy that updates the widget to the current settings --- .../android/TravelPost/TravelPost.java | 143 ++++++++++++------ 1 file changed, 93 insertions(+), 50 deletions(-) diff --git a/TravelPost/src/com/TwentyCodes/android/TravelPost/TravelPost.java b/TravelPost/src/com/TwentyCodes/android/TravelPost/TravelPost.java index 9af005c..15e9584 100644 --- a/TravelPost/src/com/TwentyCodes/android/TravelPost/TravelPost.java +++ b/TravelPost/src/com/TwentyCodes/android/TravelPost/TravelPost.java @@ -6,17 +6,22 @@ */ package com.TwentyCodes.android.TravelPost; -import com.TwentyCodes.android.Facebook.FacebookAuth; -import com.TwentyCodes.android.Facebook.SessionNotValidException; - import twitter4j.TwitterException; import android.app.Activity; +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; import android.util.Log; +import android.widget.RemoteViews; + +import com.TwentyCodes.android.Facebook.FacebookAuth; +import com.TwentyCodes.android.Facebook.SessionNotValidException; +import com.TwentyCodes.android.location.LocationService; /** * Main activity for the Travel Post widget. @@ -35,53 +40,6 @@ public class TravelPost extends PreferenceActivity implements OnPreferenceClickL public static final String USERS_POST = "users_post"; private FacebookAuth mFbAuth; - /** - * called when the activity is first created - * (non-Javadoc) - * @see android.preference.PreferenceActivity#onCreate(android.os.Bundle) - * @author ricky barrette - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - //set this preference activity to use the settings file we choose. - this.getPreferenceManager().setSharedPreferencesName(SETTINGS); - - //start the exception handler - mExceptionReport.run(); - Thread.setDefaultUncaughtExceptionHandler(mExceptionReport); - - // load preferences xml - this.addPreferencesFromResource(R.xml.settings); - - this.findPreference("twitter_sign_in").setOnPreferenceClickListener(this); - this.findPreference("facebook_sign_in").setOnPreferenceClickListener(this); - mFbAuth = new FacebookAuth(this, this); - mFbAuth.authorize(); - } - - @Override - public boolean onPreferenceClick(Preference preference) { - if (preference.getKey().equals("twitter_sign_in")) { - mTwitterServices = new TwitterServices(this); - try { - this.startActivityForResult(new Intent(this, WebAuth.class).putExtra(WebAuth.AUTH_URL, mTwitterServices.getAuthorizationURL()), TWITTER_AUTH_REQUEST_CODE); - } catch (TwitterException e) { - e.printStackTrace(); - } - } else if (preference.getKey().equals("facebook_sign_in")) { - try { - mFbAuth.postToWall("Another test"); - } catch (SessionNotValidException e) { - e.printStackTrace(); - } - Log.i(TAG, "onPreferenceClick.posted to wall"); - } - - return false; - } - /** * called when the web auth activity returns its result * (non-Javadoc) @@ -114,5 +72,90 @@ public class TravelPost extends PreferenceActivity implements OnPreferenceClickL break; } } + + /** + * called when the activity is first created + * (non-Javadoc) + * @see android.preference.PreferenceActivity#onCreate(android.os.Bundle) + * @author ricky barrette + */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.v(TAG, "onCreate()"); + + //set this preference activity to use the settings file we choose. + this.getPreferenceManager().setSharedPreferencesName(SETTINGS); + + //start the exception handler + mExceptionReport.run(); + Thread.setDefaultUncaughtExceptionHandler(mExceptionReport); + + // load preferences xml + this.addPreferencesFromResource(R.xml.settings); + + this.findPreference("twitter_sign_in").setOnPreferenceClickListener(this); + this.findPreference("facebook_sign_in").setOnPreferenceClickListener(this); +// mFbAuth = new FacebookAuth(this, this); +// mFbAuth.authorize(); + + } + + @Override + public void onDestroy(){ + Log.v(TAG, "onDestroy()"); + updateWidget(); + super.onDestroy(); + } + + @Override + public boolean onPreferenceClick(Preference preference) { + if (preference.getKey().equals("twitter_sign_in")) { + mTwitterServices = new TwitterServices(this); + try { + this.startActivityForResult(new Intent(this, WebAuth.class).putExtra(WebAuth.AUTH_URL, mTwitterServices.getAuthorizationURL()), TWITTER_AUTH_REQUEST_CODE); + } catch (TwitterException e) { + e.printStackTrace(); + } + } else if (preference.getKey().equals("facebook_sign_in")) { + try { + mFbAuth.postToWall("Another test"); + } catch (SessionNotValidException e) { + e.printStackTrace(); + } + Log.i(TAG, "onPreferenceClick.posted to wall"); + } + + return false; + } + + /** + * updates the widget + * @author ricky barrette + */ + private void updateWidget(){ + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this); + ComponentName thisWidget = new ComponentName(this, TravelPostWidget.class); + PendingIntent pendingIntent; + + /* + * if the save a post option is enabled then go start the service, + * else get the users input + */ + if( this.getSharedPreferences(SETTINGS, 0).getBoolean(TravelPost.SAVE_A_POST, false)){ + //Create a pending intent to start the location service + pendingIntent = PendingIntent.getService(this, 0, LocationService.getStartServiceIntent(this, LocationReceiver.ACTION_UPDATE), 0); + } else { + //create a pending intent to start the post activity + pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, PostActivity.class), 0); + } + + // Get the layout for the App Widget and attach an on-click listener to the button + RemoteViews views = new RemoteViews(this.getPackageName(), R.layout.travelpostwidget); + views.setOnClickPendingIntent(R.id.widgetbutton, pendingIntent); + + //send the update to the widget + appWidgetManager.updateAppWidget(thisWidget, views); + } } \ No newline at end of file