├── ic_launcher-web.png ├── libs ├── Parse-1.1.11.jar └── android-support-v4.jar ├── res ├── values │ ├── colors.xml │ ├── styles.xml │ ├── strings.xml │ └── strings_activity_login.xml ├── drawable-hdpi │ └── ic_launcher.png ├── drawable-ldpi │ └── ic_launcher.png ├── drawable-mdpi │ └── ic_launcher.png ├── drawable-xhdpi │ └── ic_launcher.png ├── menu │ └── activity_login.xml ├── values-large │ └── styles.xml ├── values-v11 │ └── styles.xml ├── values-v14 │ └── styles.xml └── layout │ ├── layout_default_status.xml │ ├── activity_login.xml │ ├── activity_main.xml │ ├── dialog_forgot_password.xml │ ├── view_status.xml │ ├── fragment_create_account.xml │ └── fragment_login.xml ├── .settings └── org.eclipse.jdt.core.prefs ├── src └── com │ ├── keyconsultant │ └── parse │ │ └── logintutorial │ │ ├── model │ │ ├── user │ │ │ ├── authenticate │ │ │ │ ├── AuthenticateUserStartEvent.java │ │ │ │ ├── UserForgotPasswordStartEvent.java │ │ │ │ ├── UserForgotPasswordSuccessEvent.java │ │ │ │ ├── AuthenticateUserSuccessEvent.java │ │ │ │ ├── AuthenticateUserErrorEvent.java │ │ │ │ └── UserForgotPasswordErrorEvent.java │ │ │ ├── User.java │ │ │ └── UserManager.java │ │ └── manager │ │ │ └── BaseManager.java │ │ ├── event │ │ └── ErrorEvent.java │ │ ├── MainActivity.java │ │ ├── fragment │ │ └── BaseFragment.java │ │ ├── error │ │ └── UnknownErrorDialogFactory.java │ │ ├── activity │ │ ├── StatusView.java │ │ └── BaseActivity.java │ │ ├── forgotpassword │ │ └── ForgotPasswordDialogFragment.java │ │ ├── LoginActivity.java │ │ ├── LoginFragment.java │ │ └── CreateAccountFragment.java │ └── squareup │ └── otto │ ├── BusProvider.java │ ├── Produce.java │ ├── HandlerFinder.java │ ├── DeadEvent.java │ ├── Subscribe.java │ ├── ThreadEnforcer.java │ ├── EventProducer.java │ ├── EventHandler.java │ ├── AnnotatedHandlerFinder.java │ └── Bus.java ├── README.md ├── .gitignore ├── .classpath ├── project.properties ├── proguard-project.txt ├── .project ├── AndroidManifest.xml └── LICENSE-2.0.txt /ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdrobinson3/LoginAndSignupTutorial/b1ca51ca44037b48a74e11f50cc39a8091bce113/ic_launcher-web.png -------------------------------------------------------------------------------- /libs/Parse-1.1.11.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdrobinson3/LoginAndSignupTutorial/b1ca51ca44037b48a74e11f50cc39a8091bce113/libs/Parse-1.1.11.jar -------------------------------------------------------------------------------- /res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #000000 5 | 6 | -------------------------------------------------------------------------------- /libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdrobinson3/LoginAndSignupTutorial/b1ca51ca44037b48a74e11f50cc39a8091bce113/libs/android-support-v4.jar -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdrobinson3/LoginAndSignupTutorial/b1ca51ca44037b48a74e11f50cc39a8091bce113/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdrobinson3/LoginAndSignupTutorial/b1ca51ca44037b48a74e11f50cc39a8091bce113/res/drawable-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdrobinson3/LoginAndSignupTutorial/b1ca51ca44037b48a74e11f50cc39a8091bce113/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdrobinson3/LoginAndSignupTutorial/b1ca51ca44037b48a74e11f50cc39a8091bce113/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 3 | org.eclipse.jdt.core.compiler.compliance=1.6 4 | org.eclipse.jdt.core.compiler.source=1.6 5 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/user/authenticate/AuthenticateUserStartEvent.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.user.authenticate; 2 | 3 | public class AuthenticateUserStartEvent { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | LoginAndSignupTutorial 2 | ====================== 3 | 4 | Login and Signup Android tutorial using Parse API and Otto. 5 | 6 | This project is part of a tutorial at http://www.thekeyconsultant.com/2013/02/parse-for-android-simple-login-starter.html 7 | 8 | -------------------------------------------------------------------------------- /res/menu/activity_login.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/ 13 | gen/ 14 | 15 | # Local configuration file (sdk path, etc) 16 | local.properties 17 | 18 | # Eclipse project files 19 | .classpath 20 | .project 21 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/user/authenticate/UserForgotPasswordStartEvent.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.user.authenticate; 2 | 3 | /** 4 | * Event for forgot password request starting. 5 | * @author Trey Robinson 6 | * 7 | */ 8 | public class UserForgotPasswordStartEvent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/user/authenticate/UserForgotPasswordSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.user.authenticate; 2 | 3 | /** 4 | * Event for forgot password email dispatch success. 5 | * @author Trey Robinson 6 | * 7 | */ 8 | public class UserForgotPasswordSuccessEvent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /res/values-large/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/user/User.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.user; 2 | 3 | import com.parse.ParseUser; 4 | 5 | public class User extends ParseUser{ 6 | 7 | public User(String username, String email, String password){ 8 | this.setEmail(email); 9 | this.setUsername(username); 10 | this.setPassword(password); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/user/authenticate/AuthenticateUserSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.user.authenticate; 2 | 3 | import com.parse.ParseUser; 4 | 5 | 6 | public class AuthenticateUserSuccessEvent { 7 | 8 | public ParseUser user; 9 | public AuthenticateUserSuccessEvent(ParseUser user) { 10 | super(); 11 | 12 | this.user = user; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/manager/BaseManager.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.manager; 2 | 3 | import com.squareup.otto.BusProvider; 4 | 5 | /** 6 | * Base manager handles bus related functions. 7 | * 8 | * @author Trey Robinson 9 | * 10 | */ 11 | public class BaseManager { 12 | 13 | protected void postEvent(Object event){ 14 | BusProvider.getInstance().post(event); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/user/authenticate/AuthenticateUserErrorEvent.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.user.authenticate; 2 | 3 | import com.keyconsultant.parse.logintutorial.event.ErrorEvent; 4 | import com.parse.ParseException; 5 | 6 | public class AuthenticateUserErrorEvent extends ErrorEvent { 7 | 8 | public AuthenticateUserErrorEvent(ParseException exception) { 9 | super(exception); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /res/layout/layout_default_status.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | -------------------------------------------------------------------------------- /res/layout/activity_login.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/model/user/authenticate/UserForgotPasswordErrorEvent.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.model.user.authenticate; 2 | 3 | import com.keyconsultant.parse.logintutorial.event.ErrorEvent; 4 | import com.parse.ParseException; 5 | 6 | /** 7 | * Event for forgot password errors. 8 | * @author Trey Robinson 9 | * 10 | */ 11 | public class UserForgotPasswordErrorEvent extends ErrorEvent { 12 | 13 | public UserForgotPasswordErrorEvent(ParseException exception) { 14 | super(exception); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/event/ErrorEvent.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial.event; 2 | 3 | import com.parse.ParseException; 4 | 5 | /** 6 | * Event that provides access to internal exception details 7 | * 8 | * @author Trey Robinson 9 | * 10 | */ 11 | public class ErrorEvent { 12 | 13 | private ParseException exception; 14 | 15 | public ErrorEvent(ParseException exception){ 16 | this.exception = exception; 17 | } 18 | 19 | /** 20 | * @return 21 | * Code for the error. 22 | */ 23 | public int getErrorCode(){ 24 | return exception.getCode(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-17 15 | -------------------------------------------------------------------------------- /src/com/keyconsultant/parse/logintutorial/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.keyconsultant.parse.logintutorial; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.widget.TextView; 6 | 7 | import com.keyconsultant.parse.logintutorial.model.user.UserManager; 8 | 9 | public class MainActivity extends Activity { 10 | 11 | private TextView currentUserTextView; 12 | 13 | @Override 14 | protected void onCreate(Bundle savedInstanceState) { 15 | super.onCreate(savedInstanceState); 16 | setContentView(R.layout.activity_main); 17 | 18 | currentUserTextView = (TextView)findViewById(R.id.tvCurrentUsername); 19 | } 20 | 21 | @Override 22 | protected void onResume() { 23 | super.onResume(); 24 | 25 | currentUserTextView.setText("Welcome, " + UserManager.getInstance().getUser().getUsername()); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /res/layout/dialog_forgot_password.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 15 | 16 |