diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/CodeInputPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/CodeInputPresenter.java index 509b92f6add1b9320786e64278c1a83ed847cf2c..45721a856e021ba0d881a683e6bac3fccecce2f6 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/CodeInputPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/CodeInputPresenter.java @@ -15,7 +15,7 @@ import timber.log.Timber; **/ @InjectViewState public class CodeInputPresenter extends BaseErrorPresenter { - + private static final int CODE_LENTH = 6; private static final int SECOND = 1000; private static final long STEP = SECOND; diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java index cbe5ef778aebd315c770e423d5bae571944c02c9..6daa90172c21f9d6fc59ba3dbaa920d3670159f8 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java @@ -58,6 +58,7 @@ public class LoginPresenter extends BasePresenter { } public void attemptGetSms(LoginType loginType) { + getViewState().showProgressDialog(); if (mCountryState == 1) { getViewState().showErrorChooseCountry(); return; @@ -86,6 +87,7 @@ public class LoginPresenter extends BasePresenter { } private void navigateToCodeScreen() { + getViewState().hideProgressDialog(); Bundle bundle = new Bundle(); bundle.putString(CodeInputFragment.PHONE_TAG, String.format("+%s %s", mCode, mPhone)); mRouter.replaceScreen(CodeInputFragment.class.getSimpleName(), bundle); diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/LoginView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/LoginView.java index ac0fe796630892d56038bd85da9107f147d69efd..543c0266a32156fb93035a448af09f79e7b71746 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/LoginView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/LoginView.java @@ -33,4 +33,8 @@ public interface LoginView extends ErrorMvpView { void setCountryList(List countries); void setSelectedCountry(int countryPosition); + + void showProgressDialog(); + + void hideProgressDialog(); } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/LoginFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/LoginFragment.java index a2b2ce498fcd405507024f5f009ebd2f84170b71..535119099c825d4e78b70199566955e1bfdc775c 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/LoginFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/LoginFragment.java @@ -25,9 +25,9 @@ import com.ninja.mobile.communicator.mvp.view.LoginView; import com.ninja.mobile.communicator.ui.activities.RegistrationActivity; import com.ninja.mobile.communicator.ui.adapters.CountryWheelAdapter; import com.ninja.mobile.communicator.ui.base.BaseFragment; -import com.ninja.mobile.communicator.ui.views.HintEditText; import com.ninja.mobile.communicator.ui.views.HintEditTextAlwaysKeyboard; import com.ninja.mobile.communicator.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.utils.DialogFactory; import com.ninja.mobile.communicator.utils.PhoneWatcher; import com.ninja.mobile.communicator.utils.SpannableUtils; import com.tbruyelle.rxpermissions2.RxPermissions; @@ -41,8 +41,11 @@ import butterknife.OnTouch; import io.reactivex.android.schedulers.AndroidSchedulers; /** - * Created by Max Chervatiuk on 23.06.17. - * Email: duo.blood@gmail.com + * Date: 23.06.17 + * Time: 03:30 + * + * @author Max Chervatiuk + * Email: duo.blood@gmail.com */ public class LoginFragment extends BaseFragment implements LoginView { @@ -85,7 +88,6 @@ public class LoginFragment extends BaseFragment implements LoginView { } return false; }); - RxView.clicks(nextButton) .debounce(200, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) @@ -193,6 +195,15 @@ public class LoginFragment extends BaseFragment implements LoginView { return true; } + + @Override public void showProgressDialog(){ + DialogFactory.showProgressDialog(getContext()); + } + + @Override public void hideProgressDialog(){ + DialogFactory.hideProgressDialog(); + } + public LoginPresenter.LoginType getAuthType() { if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) { diff --git a/app/src/main/java/com/ninja/mobile/communicator/utils/DialogFactory.java b/app/src/main/java/com/ninja/mobile/communicator/utils/DialogFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..6d8eff653e11e880fdb2ea0a119671f4e6c45c45 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/DialogFactory.java @@ -0,0 +1,116 @@ + +package com.ninja.mobile.communicator.utils; + + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; + +import com.ninja.mobile.communicator.R; + + +/** + * Date: 20.07.17 + * Time: 03:04 + * + * @author Max Chervatiuk + * Email: duo.blood@gmail.com + */ + +public class DialogFactory { + + private static ProgressDialog progressDialog; + + public static Dialog showProgressDialog(Context context) { + hideProgressDialog(); + progressDialog = new ProgressDialog(context); + progressDialog.setCancelable(false); + progressDialog.show(); + return progressDialog; + } + + public static void hideProgressDialog() { + if (progressDialog != null && progressDialog.isShowing()) progressDialog.dismiss(); + } + + public static AlertDialog.Builder getDialogBuilder(Activity activity) { + return new AlertDialog.Builder(activity); + } + + public static Dialog createConfirmDialog(final Activity activity, int messageId, + DialogInterface.OnClickListener yesClickListener) { + return createDialog(activity, messageId, yesClickListener, (dialog1, which) -> dialog1.dismiss()); + } + + public static Dialog createDialog(final Activity activity, int messageId, + DialogInterface.OnClickListener yesClickListener, + DialogInterface.OnClickListener noClickListener) { + + AlertDialog.Builder builder = DialogFactory.getDialogBuilder(activity); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(messageId); + if (yesClickListener != null) + builder.setPositiveButton(android.R.string.ok, yesClickListener); + if (noClickListener != null) + builder.setNegativeButton(android.R.string.no, noClickListener); + + return builder.create(); + } + + public static Dialog createDialog(final Activity activity, String message, + DialogInterface.OnClickListener yesClickListener, + DialogInterface.OnClickListener noClickListener) { + AlertDialog.Builder builder = DialogFactory.getDialogBuilder(activity); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(message); + if (yesClickListener != null) + builder.setPositiveButton(android.R.string.ok, yesClickListener); + if (noClickListener != null) + builder.setNegativeButton(android.R.string.no, noClickListener); + return builder.create(); + } + + public static Dialog showAlert(Activity activity, int messageId) { + return showAlert(activity, activity.getString(messageId), activity.getString(R.string.app_name), null); + } + + public static Dialog showAlert(Activity activity, String message) { + return showAlert(activity, message, activity.getString(R.string.app_name), null); + } + + public static Dialog showAlert(Activity activity, String message, DialogInterface.OnDismissListener onDismissListener) { + return showAlert(activity, message, activity.getString(R.string.app_name), onDismissListener); + } + + public static Dialog showAlert(Activity activity, int messageId, String title) { + return showAlert(activity, activity.getString(messageId), title, null); + } + + public static Dialog showAlert(Activity activity, String message, String title, DialogInterface.OnDismissListener onDismissListener) { + if (activity.isFinishing()) return null; + AlertDialog.Builder builder = getDialogBuilder(activity); + if (title != null) { + builder.setTitle(title); + } + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(message); + builder.setPositiveButton(android.R.string.ok, null); + + Dialog dialog = builder.create(); + dialog.setOnDismissListener(onDismissListener); + dialog.show(); + + return dialog; + } + + public static Dialog createDialogWithRadioButtons(final Activity activity, CharSequence[] items, int default_choice, + final DialogInterface.OnClickListener onClickListener) { + final AlertDialog.Builder builder = DialogFactory.getDialogBuilder(activity); + builder.setSingleChoiceItems(items, default_choice, (dialog, which) -> { + if (onClickListener != null) onClickListener.onClick(dialog, which); + }); + return builder.create(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ninja/mobile/communicator/utils/ProgressDialog.java b/app/src/main/java/com/ninja/mobile/communicator/utils/ProgressDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..0a719201f5c43f9c1921bd2f925db7d50a7cc369 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/ProgressDialog.java @@ -0,0 +1,36 @@ +package com.ninja.mobile.communicator.utils; + +import android.content.Context; +import android.graphics.PorterDuff; +import android.os.Bundle; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.AlertDialog; +import android.widget.ProgressBar; + +import com.ninja.mobile.communicator.R; + +/** + * Date: 20.07.17 + * Time: 15:45 + * + * @author Max Chervatiuk + * Email: duo.blood@gmail.com + */ + +public class ProgressDialog extends AlertDialog { + + public ProgressDialog(Context context) { + super(context, R.style.ProgressDialog); + } + + @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_progress); + ProgressBar bar = (ProgressBar) findViewById(R.id.dialog_progress_ber); + if (bar != null) { + bar.getIndeterminateDrawable().setColorFilter( + ContextCompat.getColor(getContext(), R.color.colorAccent), + PorterDuff.Mode.SRC_IN); + } + } +} diff --git a/app/src/main/res/layout/dialog_progress.xml b/app/src/main/res/layout/dialog_progress.xml new file mode 100644 index 0000000000000000000000000000000000000000..ad1f1eb7c911e8ef5535900e095adbf49cc7a5d1 --- /dev/null +++ b/app/src/main/res/layout/dialog_progress.xml @@ -0,0 +1,13 @@ + + + + + + \ 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 5e69790f93b035281ba9d6ffcdcb95eef573a33e..940a4c71823adce065afc89365954ea6b3f65034 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -23,6 +23,7 @@ Code is too small + "It is not working now :-(" @@ -37,4 +38,5 @@ ADD ADDED + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5f645c23ae9c7fa96411800f39dfff24c0f347b9..da9ad134153409431bb61a6954880c316ba70d21 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -46,4 +46,38 @@ wrap_content 8dp + + + + + + +