aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/accounts/SignInDialogFragment.java
diff options
context:
space:
mode:
authorChris Warrington <cmw@google.com>2016-10-18 12:29:21 +0100
committerChris Warrington <cmw@google.com>2016-10-18 12:34:18 +0100
commite3780081075c01aa1dff6d1f373cb43192b33e68 (patch)
treefb734615933a39f3d009210dc0d1457160479b35 /WordPress/src/main/java/org/wordpress/android/ui/accounts/SignInDialogFragment.java
parent7e05eb7e57827eddc885570bc00aed8a50320dbf (diff)
parent025b8b226c8d8edba2b309ca878572f40512eca7 (diff)
downloadgradle-perf-android-medium-e3780081075c01aa1dff6d1f373cb43192b33e68.tar.gz
Change-Id: I63f5e16d09297c48432192761b840310935eb903
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/accounts/SignInDialogFragment.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/accounts/SignInDialogFragment.java170
1 files changed, 170 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/accounts/SignInDialogFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/accounts/SignInDialogFragment.java
new file mode 100644
index 000000000..6df3b5369
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/accounts/SignInDialogFragment.java
@@ -0,0 +1,170 @@
+package org.wordpress.android.ui.accounts;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import org.wordpress.android.R;
+import org.wordpress.android.ui.AppLogViewerActivity;
+import org.wordpress.android.util.HelpshiftHelper;
+import org.wordpress.android.util.HelpshiftHelper.MetadataKey;
+import org.wordpress.android.util.HelpshiftHelper.Tag;
+import org.wordpress.android.widgets.WPTextView;
+
+public class SignInDialogFragment extends DialogFragment {
+ private static String ARG_TITLE = "title";
+ private static String ARG_DESCRIPTION = "message";
+ private static String ARG_FOOTER = "footer";
+ private static String ARG_IMAGE = "image";
+ private static String ARG_NUMBER_OF_BUTTONS = "number-of-buttons";
+ private static String ARG_FIRST_BUTTON_LABEL = "first-btn-label";
+ private static String ARG_SECOND_BUTTON_LABEL = "second-btn-label";
+ private static String ARG_THIRD_BUTTON_LABEL = "third-btn-label";
+ private static String ARG_SECOND_BUTTON_ACTION = "second-btn-action";
+ private static String ARG_THIRD_BUTTON_ACTION = "third-btn-action";
+ public static String ARG_OPEN_URL_PARAM = "open-url-param";
+
+ private ImageView mImageView;
+ private WPTextView mTitleTextView;
+ private WPTextView mDescriptionTextView;
+ private WPTextView mFooterBottomButton;
+ private WPTextView mFooterCenterButton;
+ private WPTextView mFooterTopButton;
+
+ public static final int ACTION_FINISH = 1;
+ public static final int ACTION_OPEN_URL = 2;
+ public static final int ACTION_OPEN_SUPPORT_CHAT = 3;
+ public static final int ACTION_OPEN_APPLICATION_LOG = 4;
+
+ public SignInDialogFragment() {
+ // Empty constructor required for DialogFragment
+ }
+
+ public static SignInDialogFragment newInstance(String title, String message, int imageSource, String buttonLabel) {
+ return newInstance(title, message, imageSource, 1, buttonLabel, "", "", 0, 0);
+ }
+
+ public static SignInDialogFragment newInstance(String title, String message, int imageSource, int numberOfButtons,
+ String firstButtonLabel, String secondButtonLabel,
+ String thirdButtonLabel, int secondButtonAction,
+ int thirdButtonAction) {
+ SignInDialogFragment adf = new SignInDialogFragment();
+ Bundle bundle = new Bundle();
+ bundle.putString(ARG_TITLE, title);
+ bundle.putString(ARG_DESCRIPTION, message);
+ bundle.putInt(ARG_IMAGE, imageSource);
+ bundle.putInt(ARG_NUMBER_OF_BUTTONS, numberOfButtons);
+ bundle.putString(ARG_FIRST_BUTTON_LABEL, firstButtonLabel);
+ bundle.putString(ARG_SECOND_BUTTON_LABEL, secondButtonLabel);
+ bundle.putString(ARG_THIRD_BUTTON_LABEL, thirdButtonLabel);
+ bundle.putInt(ARG_SECOND_BUTTON_ACTION, secondButtonAction);
+ bundle.putInt(ARG_THIRD_BUTTON_ACTION, thirdButtonAction);
+
+ adf.setArguments(bundle);
+ adf.setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme);
+ return adf;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ getDialog().getWindow().setBackgroundDrawable(getResources().getDrawable(R.color.nux_alert_bg));
+ View v = inflater.inflate(R.layout.signin_dialog_fragment, container, false);
+
+ mImageView = (ImageView) v.findViewById(R.id.nux_dialog_image);
+ mTitleTextView = (WPTextView) v.findViewById(R.id.nux_dialog_title);
+ mDescriptionTextView = (WPTextView) v.findViewById(R.id.nux_dialog_description);
+ mFooterBottomButton = (WPTextView) v.findViewById(R.id.nux_dialog_left_button);
+ mFooterCenterButton = (WPTextView) v.findViewById(R.id.nux_dialog_center_button);
+ mFooterTopButton = (WPTextView) v.findViewById(R.id.nux_dialog_right_button);
+ final Bundle arguments = getArguments();
+
+ mTitleTextView.setText(arguments.getString(ARG_TITLE));
+ mDescriptionTextView.setText(arguments.getString(ARG_DESCRIPTION));
+ mImageView.setImageResource(arguments.getInt(ARG_IMAGE));
+
+ View.OnClickListener clickListenerDismiss = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dismissAllowingStateLoss();
+ }
+ };
+
+ View.OnClickListener clickListenerSecondButton = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onClickAction(v, arguments.getInt(ARG_SECOND_BUTTON_ACTION, 0), arguments);
+ }
+ };
+
+ View.OnClickListener clickListenerThirdButton = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onClickAction(v, arguments.getInt(ARG_THIRD_BUTTON_ACTION, 0), arguments);
+ }
+ };
+
+ switch (arguments.getInt(ARG_NUMBER_OF_BUTTONS, 1)) {
+ case 1:
+ // One button: we keep only the centered button
+ mFooterCenterButton.setText(arguments.getString(ARG_FIRST_BUTTON_LABEL));
+ mFooterCenterButton.setOnClickListener(clickListenerDismiss);
+ mFooterBottomButton.setVisibility(View.GONE);
+ mFooterTopButton.setVisibility(View.GONE);
+ break;
+ case 2:
+ // Two buttons: we keep only the left and right buttons
+ mFooterBottomButton.setText(arguments.getString(ARG_FIRST_BUTTON_LABEL));
+ mFooterTopButton.setText(arguments.getString(ARG_SECOND_BUTTON_LABEL));
+ mFooterCenterButton.setVisibility(View.GONE);
+ mFooterTopButton.setOnClickListener(clickListenerSecondButton);
+ break;
+ case 3:
+ mFooterBottomButton.setText(arguments.getString(ARG_FIRST_BUTTON_LABEL));
+ mFooterCenterButton.setText(arguments.getString(ARG_SECOND_BUTTON_LABEL));
+ mFooterCenterButton.setOnClickListener(clickListenerSecondButton);
+ mFooterTopButton.setText(arguments.getString(ARG_THIRD_BUTTON_LABEL));
+ mFooterTopButton.setOnClickListener(clickListenerThirdButton);
+ break;
+ }
+ v.setClickable(true);
+ v.setOnClickListener(clickListenerDismiss);
+ mFooterBottomButton.setOnClickListener(clickListenerDismiss);
+ return v;
+ }
+
+ private void onClickAction(View v, int action, Bundle arguments) {
+ if (!isAdded()) {
+ return;
+ }
+ switch (action) {
+ case ACTION_OPEN_URL:
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(arguments.getString(ARG_OPEN_URL_PARAM)));
+ startActivity(intent);
+ dismissAllowingStateLoss();
+ break;
+ case ACTION_OPEN_SUPPORT_CHAT:
+ HelpshiftHelper.getInstance().addMetaData(MetadataKey.USER_ENTERED_URL, arguments.getString(
+ SignInFragment.ENTERED_URL_KEY));
+ HelpshiftHelper.getInstance().addMetaData(MetadataKey.USER_ENTERED_USERNAME, arguments.getString(
+ SignInFragment.ENTERED_USERNAME_KEY));
+ HelpshiftHelper.getInstance().showConversation(getActivity(), Tag.ORIGIN_LOGIN_SCREEN_ERROR);
+ dismissAllowingStateLoss();
+ break;
+ case ACTION_OPEN_APPLICATION_LOG:
+ startActivity(new Intent(v.getContext(), AppLogViewerActivity.class));
+ dismissAllowingStateLoss();
+ break;
+ default:
+ case ACTION_FINISH:
+ getActivity().finish();
+ break;
+ }
+ }
+}
+