diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 48d6fa8..3a1dcf5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -28,25 +28,26 @@
+ android:label="@string/edit" />
+ android:label="@string/preview" />
+ android:label="@string/recent_notes" />
+ android:label="@string/settings" />
+
+
-
-
+ android:label="NoteSyncService" />
\ No newline at end of file
diff --git a/app/src/main/java/org/houxg/leamonax/service/AccountService.java b/app/src/main/java/org/houxg/leamonax/service/AccountService.java
index d362fe8..917de6b 100644
--- a/app/src/main/java/org/houxg/leamonax/service/AccountService.java
+++ b/app/src/main/java/org/houxg/leamonax/service/AccountService.java
@@ -12,6 +12,10 @@ import rx.Observable;
public class AccountService {
+ public static Observable register(String email, String password) {
+ return RetrofitUtils.create(ApiProvider.getInstance().getAuthApi().register(email, password));
+ }
+
public static Observable login(String email, String password) {
return RetrofitUtils.create(ApiProvider.getInstance().getAuthApi().login(email, password));
}
diff --git a/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java b/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java
index 9530d69..d41106d 100644
--- a/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java
+++ b/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java
@@ -16,16 +16,20 @@ import android.widget.TextView;
import org.houxg.leamonax.R;
import org.houxg.leamonax.model.Authentication;
+import org.houxg.leamonax.model.BaseResponse;
import org.houxg.leamonax.network.ApiProvider;
+import org.houxg.leamonax.network.LeaFailure;
import org.houxg.leamonax.service.AccountService;
import org.houxg.leamonax.utils.ToastUtils;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
+import rx.Observable;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
+import rx.functions.Func1;
import rx.schedulers.Schedulers;
public class SignInActivity extends BaseActivity implements TextWatcher {
@@ -43,14 +47,37 @@ public class SignInActivity extends BaseActivity implements TextWatcher {
EditText mPasswordEt;
@BindView(R.id.tv_sign_in)
View mSignInBtn;
+ @BindView(R.id.tv_sign_up)
+ View mSignUpBtn;
@BindView(R.id.tv_custom_host)
TextView mCustomHostBtn;
@BindView(R.id.et_custom_host)
EditText mHostEt;
@BindView(R.id.ll_action)
View mActionPanel;
- @BindView(R.id.progress)
- ProgressBar mProgress;
+ @BindView(R.id.progress_sign_in)
+ ProgressBar mSignInProgress;
+ @BindView(R.id.progress_sign_up)
+ ProgressBar mSignUpProgress;
+ @BindView(R.id.rl_sign_up)
+ View mSignUpPanel;
+
+ private Observer mSignInObserver = new Observer() {
+ @Override
+ public void onCompleted() {
+
+ }
+
+ @Override
+ public void onError(Throwable e) {
+
+ }
+
+ @Override
+ public void onNext(Authentication authentication) {
+
+ }
+ };
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -142,7 +169,7 @@ public class SignInActivity extends BaseActivity implements TextWatcher {
mSignInBtn.post(new Runnable() {
@Override
public void run() {
- animateSignInProgress();
+ animateProgress(mSignInBtn, mSignInProgress);
}
});
}
@@ -152,14 +179,14 @@ public class SignInActivity extends BaseActivity implements TextWatcher {
.subscribe(new Observer() {
@Override
public void onCompleted() {
- animateSignFinish();
+ animateFinish(mSignInBtn, mSignInProgress);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
ToastUtils.showNetworkError(SignInActivity.this);
- animateSignFinish();
+ animateFinish(mSignInBtn, mSignInProgress);
}
@Override
@@ -177,15 +204,82 @@ public class SignInActivity extends BaseActivity implements TextWatcher {
});
}
- private void animateSignInProgress() {
- mSignInBtn.animate()
+ @OnClick(R.id.tv_sign_up)
+ void clickedSignup() {
+ final String email = mEmailEt.getText().toString();
+ final String password = mPasswordEt.getText().toString();
+ final String host = getHost();
+ ApiProvider.getInstance().init(host);
+ AccountService.register(email, password)
+ .doOnSubscribe(new Action0() {
+ @Override
+ public void call() {
+ mSignUpBtn.post(new Runnable() {
+ @Override
+ public void run() {
+ animateProgress(mSignUpBtn, mSignUpProgress);
+ }
+ });
+ }
+ })
+ .flatMap(new Func1>() {
+ @Override
+ public Observable call(BaseResponse baseResponse) {
+ if (baseResponse.isOk()) {
+ return AccountService.login(email, password);
+ } else {
+ throw new LeaFailure(baseResponse);
+ }
+ }
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onCompleted() {
+ animateFinish(mSignUpBtn, mSignUpProgress);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ e.printStackTrace();
+ ToastUtils.showNetworkError(SignInActivity.this);
+ animateFinish(mSignUpBtn, mSignUpProgress);
+ }
+
+ @Override
+ public void onNext(Authentication authentication) {
+ if (authentication.isOk()) {
+ AccountService.saveToAccount(authentication, host);
+ Intent intent = MainActivity.getOpenIntent(SignInActivity.this, true);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ finish();
+ } else {
+ ToastUtils.show(SignInActivity.this, R.string.email_or_password_incorrect);
+ }
+ }
+ });
+ }
+
+ @OnClick(R.id.tv_sign_up)
+ void clickedSignUp() {
+ mSignUpPanel.animate()
+ .scaleX(1)
+ .setDuration(200)
+ .setInterpolator(new AccelerateDecelerateInterpolator())
+ .start();
+ }
+
+ private void animateProgress(View button, final View progressBar) {
+ button.animate()
.scaleX(0)
.setDuration(200)
.setInterpolator(new AccelerateDecelerateInterpolator())
.withEndAction(new Runnable() {
@Override
public void run() {
- mProgress.animate()
+ progressBar.animate()
.alpha(1)
.setDuration(100)
.setInterpolator(new AccelerateDecelerateInterpolator())
@@ -195,15 +289,15 @@ public class SignInActivity extends BaseActivity implements TextWatcher {
.start();
}
- private void animateSignFinish() {
- mProgress.animate()
+ private void animateFinish(final View button, final View progressBar) {
+ progressBar.animate()
.alpha(0)
.setDuration(100)
.setInterpolator(new AccelerateDecelerateInterpolator())
.withEndAction(new Runnable() {
@Override
public void run() {
- mSignInBtn.animate()
+ button.animate()
.scaleX(1)
.setDuration(200)
.setInterpolator(new AccelerateDecelerateInterpolator())
diff --git a/app/src/main/res/layout/activity_signin.xml b/app/src/main/res/layout/activity_signin.xml
index 344b7f5..60e5e07 100644
--- a/app/src/main/res/layout/activity_signin.xml
+++ b/app/src/main/res/layout/activity_signin.xml
@@ -15,87 +15,108 @@
+ style="@style/SignInEditText"
+ android:hint="@string/email" />
+ android:inputType="textPassword" />
+ android:scaleY="0" />
-
-
+ android:orientation="horizontal"
+ android:paddingEnd="16dp"
+ android:paddingStart="16dp">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+ android:title="@string/edit"/>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ec16831..ef980d6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,7 +7,7 @@
save to server
Revert
Reverting
- Edit
+ Edit
Link
Confirm
Cancel
@@ -59,4 +59,5 @@
License
Version
About
+ Preview
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 2883830..6c43fcd 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -37,4 +37,16 @@
- 8dp
+
+