From 6ffe8c689d37ffa5b47829d7cf14d12bb850972f Mon Sep 17 00:00:00 2001 From: Krocks Date: Thu, 20 Jul 2017 13:34:52 +0300 Subject: [PATCH 1/2] adding progress dialog according to issues #81 and #46 --- .../mvp/presenters/CodeInputPresenter.java | 2 +- .../mvp/presenters/LoginPresenter.java | 2 + .../communicator/mvp/view/LoginView.java | 4 ++ .../ui/fragments/signin/LoginFragment.java | 12 +++++ .../communicator/utils/DialogUtils.java | 48 +++++++++++++++++++ app/src/main/res/layout/dialog_progress.xml | 12 +++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 8 ++++ 8 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/ninja/mobile/communicator/utils/DialogUtils.java create mode 100644 app/src/main/res/layout/dialog_progress.xml 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 509b92f6ad..45721a856e 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 cbe5ef778a..6daa90172c 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 ac0fe79663..543c0266a3 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 a2b2ce498f..6729ef7ecd 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 @@ -28,6 +28,7 @@ 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.DialogUtils; import com.ninja.mobile.communicator.utils.PhoneWatcher; import com.ninja.mobile.communicator.utils.SpannableUtils; import com.tbruyelle.rxpermissions2.RxPermissions; @@ -193,6 +194,17 @@ public class LoginFragment extends BaseFragment implements LoginView { return true; } + + @Override public void showProgressDialog(){ + DialogUtils dialogUtils = DialogUtils.getInstance(); + dialogUtils.showProgressDialog(getActivity()); + } + + @Override public void hideProgressDialog(){ + DialogUtils dialogUtils = DialogUtils.getInstance(); + dialogUtils.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/DialogUtils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/DialogUtils.java new file mode 100644 index 0000000000..f2cd4e12e8 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/DialogUtils.java @@ -0,0 +1,48 @@ +package com.ninja.mobile.communicator.utils; + +import android.app.ProgressDialog; +import android.content.Context; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.WindowManager; + +import com.ninja.mobile.communicator.R; + +public class DialogUtils { + private static DialogUtils instance; + private ProgressDialog mDialog; + + private DialogUtils(){} + + public static DialogUtils getInstance(){ + if (instance == null){ + instance = new DialogUtils(); + } + return instance; + } + + public void showProgressDialog(Context context){ + mDialog = new FullScreenDialog(context); + mDialog.setCancelable(false); + mDialog.show(); + } + + public void hideProgressDialog(){ + if (mDialog != null) mDialog.dismiss(); + } + + private class FullScreenDialog extends ProgressDialog{ + + private FullScreenDialog(Context context) { + super(context, R.style.full_screen_dialog); + } + + @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.MATCH_PARENT); + getWindow().setContentView(R.layout.dialog_progress); + getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); + } + } + +} 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 0000000000..f2cf7ad5d0 --- /dev/null +++ b/app/src/main/res/layout/dialog_progress.xml @@ -0,0 +1,12 @@ + + + + + + \ 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 5e69790f93..940a4c7182 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 5f645c23ae..46e8fdaad0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -46,4 +46,12 @@ wrap_content 8dp + + -- GitLab From 34c473aca673ec0ddbbf603b8d64be995e4d92ca Mon Sep 17 00:00:00 2001 From: Max Chervatiuk Date: Thu, 20 Jul 2017 16:03:17 +0300 Subject: [PATCH 2/2] refactoring , added dialog factory --- .../ui/fragments/signin/LoginFragment.java | 17 ++- .../communicator/utils/DialogFactory.java | 116 ++++++++++++++++++ .../communicator/utils/DialogUtils.java | 48 -------- .../communicator/utils/ProgressDialog.java | 36 ++++++ app/src/main/res/layout/dialog_progress.xml | 1 + app/src/main/res/values/styles.xml | 28 ++++- 6 files changed, 188 insertions(+), 58 deletions(-) create mode 100644 app/src/main/java/com/ninja/mobile/communicator/utils/DialogFactory.java delete mode 100644 app/src/main/java/com/ninja/mobile/communicator/utils/DialogUtils.java create mode 100644 app/src/main/java/com/ninja/mobile/communicator/utils/ProgressDialog.java 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 6729ef7ecd..535119099c 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,10 +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.DialogUtils; +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; @@ -42,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 { @@ -86,7 +88,6 @@ public class LoginFragment extends BaseFragment implements LoginView { } return false; }); - RxView.clicks(nextButton) .debounce(200, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) @@ -196,13 +197,11 @@ public class LoginFragment extends BaseFragment implements LoginView { @Override public void showProgressDialog(){ - DialogUtils dialogUtils = DialogUtils.getInstance(); - dialogUtils.showProgressDialog(getActivity()); + DialogFactory.showProgressDialog(getContext()); } @Override public void hideProgressDialog(){ - DialogUtils dialogUtils = DialogUtils.getInstance(); - dialogUtils.hideProgressDialog(); + DialogFactory.hideProgressDialog(); } public LoginPresenter.LoginType getAuthType() { 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 0000000000..6d8eff653e --- /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/DialogUtils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/DialogUtils.java deleted file mode 100644 index f2cd4e12e8..0000000000 --- a/app/src/main/java/com/ninja/mobile/communicator/utils/DialogUtils.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ninja.mobile.communicator.utils; - -import android.app.ProgressDialog; -import android.content.Context; -import android.graphics.drawable.ColorDrawable; -import android.os.Bundle; -import android.view.WindowManager; - -import com.ninja.mobile.communicator.R; - -public class DialogUtils { - private static DialogUtils instance; - private ProgressDialog mDialog; - - private DialogUtils(){} - - public static DialogUtils getInstance(){ - if (instance == null){ - instance = new DialogUtils(); - } - return instance; - } - - public void showProgressDialog(Context context){ - mDialog = new FullScreenDialog(context); - mDialog.setCancelable(false); - mDialog.show(); - } - - public void hideProgressDialog(){ - if (mDialog != null) mDialog.dismiss(); - } - - private class FullScreenDialog extends ProgressDialog{ - - private FullScreenDialog(Context context) { - super(context, R.style.full_screen_dialog); - } - - @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.MATCH_PARENT); - getWindow().setContentView(R.layout.dialog_progress); - getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); - } - } - -} 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 0000000000..0a719201f5 --- /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 index f2cf7ad5d0..ad1f1eb7c9 100644 --- a/app/src/main/res/layout/dialog_progress.xml +++ b/app/src/main/res/layout/dialog_progress.xml @@ -5,6 +5,7 @@ android:background="@android:color/transparent"> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 46e8fdaad0..da9ad13415 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -52,6 +52,32 @@ true @null @android:style/Animation.Dialog - stateUnspecified|adjustPan + stateAlwaysHidden + + + + + + -- GitLab