From 7f5028c40d56873862ee10c3f113f705138dbeac Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 22 Oct 2010 02:18:39 -0700 Subject: [PATCH] Adding new gtasks login activity for logging in --- astrid/AndroidManifest.xml | 2 + astrid/libs/todoroo-g.jar | Bin 31172 -> 31313 bytes .../gtasks/auth/GtasksLoginActivity.java | 159 ++++++++++++++++++ .../gtasks/sync/GtasksSyncProvider.java | 65 +------ astrid/res/drawable/gtasks_logo.png | Bin 0 -> 6711 bytes astrid/res/layout/gtasks_login_activity.xml | 59 +++++++ astrid/res/values/strings-gtasks.xml | 52 +++--- astrid/res/values/styles.xml | 4 + 8 files changed, 256 insertions(+), 85 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java create mode 100644 astrid/res/drawable/gtasks_logo.png create mode 100644 astrid/res/layout/gtasks_login_activity.xml diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index a5ff91bfa..2889818e0 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -253,6 +253,8 @@ + diff --git a/astrid/libs/todoroo-g.jar b/astrid/libs/todoroo-g.jar index f89c99c7744262bbcd8c683336fd44c6b31719c5..2269e89f93b1e82845cf491639ac08f54f1839ce 100644 GIT binary patch delta 4955 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 It{;Q{0Y%dTbpQYW diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java new file mode 100644 index 000000000..3d33c48cd --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java @@ -0,0 +1,159 @@ +/* + * 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.gtasks.auth; + +import java.io.IOException; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.content.Intent; +import android.os.Bundle; +import android.text.Editable; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.TextView; + +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.gtasks.GtasksBackgroundService; +import com.todoroo.astrid.gtasks.GtasksPreferenceService; +import com.todoroo.astrid.service.StatisticsService; +import com.todoroo.astrid.sync.SyncBackgroundService; +import com.todoroo.gtasks.GoogleConnectionManager; +import com.todoroo.gtasks.GoogleLoginException; + +/** + * This activity allows users to sign in or log in to Producteev + * + * @author arne.jans + * + */ +public class GtasksLoginActivity extends Activity { + + @Autowired private GtasksPreferenceService gtasksPreferenceService; + + // --- ui initialization + + public GtasksLoginActivity() { + super(); + DependencyInjectionService.getInstance().inject(this); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ContextManager.setContext(this); + + setContentView(R.layout.gtasks_login_activity); + setTitle(R.string.gtasks_GLA_title); + + final TextView errors = (TextView) findViewById(R.id.error); + final EditText emailEditText = (EditText) findViewById(R.id.email); + final EditText passwordEditText = (EditText) findViewById(R.id.password); + final CheckBox isDomain = (CheckBox) findViewById(R.id.isDomain); + + Button signIn = (Button) findViewById(R.id.signIn); + signIn.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + errors.setVisibility(View.GONE); + Editable email = emailEditText.getText(); + Editable password = passwordEditText.getText(); + if(email.length() == 0 || password.length() == 0) { + errors.setVisibility(View.VISIBLE); + errors.setText(R.string.producteev_PLA_errorEmpty); + return; + } + + performLogin(email.toString(), password.toString(), isDomain.isChecked()); + } + + }); + } + + + private void performLogin(final String email, final String password, final boolean isDomain) { + final ProgressDialog dialog = DialogUtilities.progressDialog(this, + getString(R.string.DLG_wait)); + final TextView errors = (TextView) findViewById(R.id.error); + dialog.show(); + new Thread() { + @SuppressWarnings("nls") + @Override + public void run() { + final StringBuilder errorMessage = new StringBuilder(); + GoogleConnectionManager gcm = new GoogleConnectionManager(email.toString(), + password.toString(), !isDomain); + try { + gcm.authenticate(false); + String token = gcm.getToken(); + gtasksPreferenceService.setToken(token); + StatisticsService.reportEvent("gtasks-login"); + synchronize(); + } catch (GoogleLoginException e) { + errorMessage.append(getString(R.string.gtasks_GLA_errorAuth)); + Log.e("gtasks", "login", e); + return; + } catch (IOException e) { + errorMessage.append(getString(R.string.SyP_ioerror)); + Log.e("gtasks", "login", e); + } finally { + runOnUiThread(new Runnable() { + public void run() { + dialog.dismiss(); + if(errorMessage.length() > 0) { + errors.setVisibility(View.VISIBLE); + errors.setText(errorMessage); + } + } + }); + } + } + }.start(); + } + + /** + * Perform synchronization + */ + protected void synchronize() { + startService(new Intent(SyncBackgroundService.SYNC_ACTION, null, + this, GtasksBackgroundService.class)); + finish(); + } + + @Override + protected void onStart() { + super.onStart(); + StatisticsService.sessionStart(this); + } + + @Override + protected void onStop() { + super.onStop(); + StatisticsService.sessionStop(this); + } + +} \ No newline at end of file diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java index e57f09917..28b50d408 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java @@ -15,17 +15,9 @@ import android.app.Notification; import android.app.PendingIntent; import android.app.Service; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; -import android.content.DialogInterface.OnClickListener; import android.text.TextUtils; -import android.text.method.PasswordTransformationMethod; import android.util.Log; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.ScrollView; -import android.widget.TextView; -import android.widget.Toast; import com.timsu.astrid.R; import com.todoroo.andlib.data.AbstractModel; @@ -50,7 +42,7 @@ import com.todoroo.astrid.gtasks.GtasksMetadataService; import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksPreferences; import com.todoroo.astrid.gtasks.GtasksTaskListUpdater; -import com.todoroo.astrid.gtasks.GtasksPreferences.OnGetCredentials; +import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity; import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.sync.SyncBackgroundService; @@ -188,40 +180,8 @@ public class GtasksSyncProvider extends SyncProvider { // check if we have a token & it works if(authToken == null) { - final GtasksPreferences preferenceActivity = (GtasksPreferences)activity; - preferenceActivity.getCredentials(new OnGetCredentials() { - @Override - public void getCredentials(String[] accounts) { - ScrollView layoutScroller = new ScrollView(activity); - LinearLayout layout = new LinearLayout(activity); - layoutScroller.addView(layout); - layout.setPadding(5, -5, 5, 0); - layout.setOrientation(LinearLayout.VERTICAL); - TextView textView = new TextView(activity); - textView.setText(R.string.producteev_PLA_email); - layout.addView(textView); - final EditText email = new EditText(activity); - if(accounts != null && accounts.length > 0) - email.setText(accounts[0]); - layout.addView(email); - textView = new TextView(activity); - textView.setText(R.string.producteev_PLA_password); - layout.addView(textView); - final EditText password = new EditText(activity); - password.setTransformationMethod(new PasswordTransformationMethod()); - layout.addView(password); - - DialogUtilities.viewDialog(activity, - activity.getString(R.string.gtasks_login), layoutScroller, - new OnClickListener() { - @Override - public void onClick(DialogInterface arg0, int arg1) { - trySynchronizing(activity, email.getText(), password.getText()); - } - - }, null); - } - }); + Intent intent = new Intent(activity, GtasksLoginActivity.class); + activity.startActivityForResult(intent, 0); } else { activity.startService(new Intent(SyncBackgroundService.SYNC_ACTION, null, activity, GtasksBackgroundService.class)); @@ -229,25 +189,6 @@ public class GtasksSyncProvider extends SyncProvider { } } - private void trySynchronizing(Activity activity, CharSequence email, CharSequence password) { - GoogleConnectionManager gcm = new GoogleConnectionManager(email.toString(), password.toString()); - try { - gcm.authenticate(false); - } catch (GoogleLoginException e) { - Toast.makeText(activity, R.string.gtasks_login_error, Toast.LENGTH_LONG).show(); - Log.e("gtasks", "login", e); - return; - } catch (IOException e) { - Toast.makeText(activity, R.string.SyP_ioerror, Toast.LENGTH_LONG).show(); - Log.e("gtasks", "login", e); - } - String token = gcm.getToken(); - gtasksPreferenceService.setToken(token); - activity.startService(new Intent(SyncBackgroundService.SYNC_ACTION, null, - activity, GtasksBackgroundService.class)); - activity.finish(); - } - // ---------------------------------------------------------------------- // ----------------------------------------------------- synchronization! // ---------------------------------------------------------------------- diff --git a/astrid/res/drawable/gtasks_logo.png b/astrid/res/drawable/gtasks_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a365ddf14470f1e5733aaa5451643ef840f64e56 GIT binary patch literal 6711 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 IG8SR~2d#h>6#xJL literal 0 HcmV?d00001 diff --git a/astrid/res/layout/gtasks_login_activity.xml b/astrid/res/layout/gtasks_login_activity.xml new file mode 100644 index 000000000..e06f157cc --- /dev/null +++ b/astrid/res/layout/gtasks_login_activity.xml @@ -0,0 +1,59 @@ + + + + + + + + + +