From 4d5b6672438c817142485857b4d56902cfe10fe0 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Wed, 2 Feb 2011 16:43:21 -0800 Subject: [PATCH] Added facebook login button to the sharing login activity --- astrid/.classpath | 1 + astrid/.project | 5 + astrid/AndroidManifest.xml | 8 +- astrid/astrid.launch | 10 +- .../com/facebook/android/AuthListener.java | 12 ++ .../com/facebook/android/LoginButton.java | 97 ++++++++++++++ astrid/default.properties | 1 + .../astrid/sharing/SharingActionExposer.java | 15 +-- .../astrid/sharing/SharingLoginActivity.java | 124 ++++++++++++++++++ astrid/res/drawable/facebook_64.png | Bin 0 -> 3448 bytes astrid/res/drawable/google_64.png | Bin 0 -> 3446 bytes astrid/res/layout/sharing_login_activity.xml | 60 ++++++--- astrid/res/values/strings-sharing.xml | 20 ++- bin/find-unused-drawables.sh | 16 +++ facebook/facebook/default.properties | 2 +- 15 files changed, 336 insertions(+), 35 deletions(-) create mode 100644 astrid/common-src/com/facebook/android/AuthListener.java create mode 100644 astrid/common-src/com/facebook/android/LoginButton.java create mode 100644 astrid/plugin-src/com/todoroo/astrid/sharing/SharingLoginActivity.java create mode 100644 astrid/res/drawable/facebook_64.png create mode 100644 astrid/res/drawable/google_64.png create mode 100755 bin/find-unused-drawables.sh diff --git a/astrid/.classpath b/astrid/.classpath index c7a34424c..5e1a35c02 100644 --- a/astrid/.classpath +++ b/astrid/.classpath @@ -17,5 +17,6 @@ + diff --git a/astrid/.project b/astrid/.project index fa28c40a2..7955497d1 100644 --- a/astrid/.project +++ b/astrid/.project @@ -47,5 +47,10 @@ 2 _android_astridApi_98e6a2cf/src + + facebook_src + 2 + _android_facebook_1da19ac6/src + diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index aa0e54374..4d5b86882 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -376,7 +376,7 @@ - + @@ -389,6 +389,12 @@ + + + + + + diff --git a/astrid/astrid.launch b/astrid/astrid.launch index 5266e7ffb..6fc2f50db 100644 --- a/astrid/astrid.launch +++ b/astrid/astrid.launch @@ -5,20 +5,22 @@ - - - + + + - + + + diff --git a/astrid/common-src/com/facebook/android/AuthListener.java b/astrid/common-src/com/facebook/android/AuthListener.java new file mode 100644 index 000000000..c594932ef --- /dev/null +++ b/astrid/common-src/com/facebook/android/AuthListener.java @@ -0,0 +1,12 @@ +package com.facebook.android; + + +public interface AuthListener { + + public void onFBAuthSucceed(); + + public void onFBAuthFail(String error); + + public void onFBAuthCancel(); + +} diff --git a/astrid/common-src/com/facebook/android/LoginButton.java b/astrid/common-src/com/facebook/android/LoginButton.java new file mode 100644 index 000000000..8fdce811e --- /dev/null +++ b/astrid/common-src/com/facebook/android/LoginButton.java @@ -0,0 +1,97 @@ +/* + * Copyright 2010 Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.facebook.android; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Color; +import android.os.Bundle; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageButton; + +import com.facebook.android.Facebook.DialogListener; + +public class LoginButton extends ImageButton { + + private Facebook mFb; + private AuthListener mListener; + private String[] mPermissions; + private Activity mActivity; + + public LoginButton(Context context) { + super(context); + } + + public LoginButton(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LoginButton(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public void init(final Activity activity, final Facebook fb, AuthListener listener) { + init(activity, fb, listener, new String[] {}); + } + + public void init(final Activity activity, final Facebook fb, AuthListener listener, + final String[] permissions) { + mActivity = activity; + mFb = fb; + mPermissions = permissions; + mListener = listener; + + setBackgroundColor(Color.TRANSPARENT); + setAdjustViewBounds(true); + drawableStateChanged(); + + setOnClickListener(new ButtonOnClickListener()); + } + + private final class ButtonOnClickListener implements OnClickListener { + + public void onClick(View arg0) { + if (mFb.isSessionValid()) { + AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(mFb); + asyncRunner.logout(getContext(), null); + } else { + mFb.authorize(mActivity, mPermissions, + new LoginDialogListener()); + } + } + } + + private final class LoginDialogListener implements DialogListener { + public void onComplete(Bundle values) { + mListener.onFBAuthSucceed(); + } + + public void onFacebookError(FacebookError error) { + mListener.onFBAuthFail(error.getMessage()); + } + + public void onError(DialogError error) { + mListener.onFBAuthFail(error.getMessage()); + } + + public void onCancel() { + mListener.onFBAuthCancel(); + } + } + +} diff --git a/astrid/default.properties b/astrid/default.properties index d990da54f..0537306e2 100644 --- a/astrid/default.properties +++ b/astrid/default.properties @@ -14,3 +14,4 @@ android.library.reference.1=../api/ target=android-8 apk-configurations= android.library.reference.2=../greendroid/GreenDroid/ +android.library.reference.3=../facebook/facebook/ diff --git a/astrid/plugin-src/com/todoroo/astrid/sharing/SharingActionExposer.java b/astrid/plugin-src/com/todoroo/astrid/sharing/SharingActionExposer.java index 982d77167..126fd14d9 100644 --- a/astrid/plugin-src/com/todoroo/astrid/sharing/SharingActionExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/sharing/SharingActionExposer.java @@ -10,15 +10,12 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.text.TextUtils; import com.timsu.astrid.R; import com.todoroo.andlib.service.ContextManager; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.TaskAction; import com.todoroo.astrid.api.TaskDecoration; -import com.todoroo.astrid.core.PluginServices; -import com.todoroo.astrid.data.Task; /** * Exposes {@link TaskDecoration} for timers @@ -37,17 +34,19 @@ public class SharingActionExposer extends BroadcastReceiver { if(taskId == -1) return; - Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.TITLE, Task.NOTES); - if(!task.containsNonNullValue(Task.NOTES) || TextUtils.isEmpty(task.getValue(Task.NOTES))) - return; - if(AstridApiConstants.BROADCAST_REQUEST_ACTIONS.equals(intent.getAction())) { sendAction(context, taskId); } else { - // + performAction(context, taskId); } } + private void performAction(Context context, long taskId) { + Intent intent = new Intent(context, SharingLoginActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + } + private void sendAction(Context context, long taskId) { final String label = context.getString(R.string.sharing_action); final Drawable drawable = context.getResources().getDrawable(R.drawable.tango_share); diff --git a/astrid/plugin-src/com/todoroo/astrid/sharing/SharingLoginActivity.java b/astrid/plugin-src/com/todoroo/astrid/sharing/SharingLoginActivity.java new file mode 100644 index 000000000..4bd34d77e --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/sharing/SharingLoginActivity.java @@ -0,0 +1,124 @@ +/* + * ASTRID: Android's Simple Task Recording Dashboard + * + * Copyright (c) 2009 Tim Su + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package com.todoroo.astrid.sharing; + +import android.app.Activity; +import android.os.Bundle; +import android.view.View; +import android.widget.TextView; + +import com.facebook.android.AuthListener; +import com.facebook.android.Facebook; +import com.facebook.android.LoginButton; +import com.timsu.astrid.R; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.ContextManager; +import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.andlib.utility.DialogUtilities; +import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.AstridDependencyInjector; +import com.todoroo.astrid.service.TaskService; + +/** + * This activity allows users to sign in or log in to Producteev + * + * @author arne.jans + * + */ +public class SharingLoginActivity extends Activity implements AuthListener { + + public static final String APP_ID = "169904866369148"; //$NON-NLS-1$ + + @Autowired TaskService taskService; + + private Facebook facebook; + private TextView errors; + + // --- ui initialization + + static { + AstridDependencyInjector.initialize(); + } + + public String EXTRA_TASK_ID = "task"; //$NON-NLS-1$ + + public SharingLoginActivity() { + super(); + DependencyInjectionService.getInstance().inject(this); + } + + @SuppressWarnings("nls") + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ContextManager.setContext(this); + + setContentView(R.layout.sharing_login_activity); + setTitle(R.string.sharing_SLA_title); + + long taskId = getIntent().getLongExtra(EXTRA_TASK_ID, 4L); + Task task = taskService.fetchById(taskId, Task.TITLE); + + TextView taskInfo = (TextView) findViewById(R.id.taskInfo); + taskInfo.setText(taskInfo.getText() + "\n\n" + task.getValue(Task.TITLE)); + + facebook = new Facebook(APP_ID); + + errors = (TextView) findViewById(R.id.error); + LoginButton loginButton = (LoginButton) findViewById(R.id.fb_login); + loginButton.init(this, facebook, this, new String[] { + "email", + "offline_access", + "publish_stream" + }); + } + + // --- facebook handler + + public void onFBAuthSucceed() { + System.err.println("GOTCHA SUCCESS! " + facebook.getAccessToken()); + errors.setVisibility(View.VISIBLE); + } + + public void onFBAuthFail(String error) { + System.err.println("GOTCHA ERROR: " + error); + DialogUtilities.okDialog(this, getString(R.string.sharing_SLA_title), + android.R.drawable.ic_dialog_alert, error, null); + } + + @Override + public void onFBAuthCancel() { + System.err.println("GOTCHA CANCEL"); + // do nothing + } + + // --- my astrid handler + + /** + * Create user account via FB + */ + public void createUserAccountFB() { + String accessToken = facebook.getAccessToken(); + + } + + + +} \ No newline at end of file diff --git a/astrid/res/drawable/facebook_64.png b/astrid/res/drawable/facebook_64.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a9d8331e28cabece3d8829f3f012b7a5db1abf GIT binary patch literal 3448 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 Y0PP3DX~$FU?EnA(07*qoM6N<$g6|lC761SM literal 0 HcmV?d00001 diff --git a/astrid/res/layout/sharing_login_activity.xml b/astrid/res/layout/sharing_login_activity.xml index d755eb8d0..f76f22044 100644 --- a/astrid/res/layout/sharing_login_activity.xml +++ b/astrid/res/layout/sharing_login_activity.xml @@ -7,6 +7,8 @@ + android:text="@string/sharing_SLA_login" + android:textStyle="bold" /> - - + + + + + -