diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/prefs/RelatedPostsDialog.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/prefs/RelatedPostsDialog.java | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/RelatedPostsDialog.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/RelatedPostsDialog.java new file mode 100644 index 000000000..446545bde --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/RelatedPostsDialog.java @@ -0,0 +1,184 @@ +package org.wordpress.android.ui.prefs; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.app.Fragment; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import org.wordpress.android.R; +import org.wordpress.android.util.WPPrefUtils; +import org.wordpress.android.widgets.WPSwitch; + +import java.util.ArrayList; +import java.util.List; + +public class RelatedPostsDialog extends DialogFragment + implements DialogInterface.OnClickListener, + CompoundButton.OnCheckedChangeListener { + + /** + * boolean + * + * Sets the default state of the Show Related Posts switch. The switch is off by default. + */ + public static final String SHOW_RELATED_POSTS_KEY = "related-posts"; + + /** + * boolean + * + * Sets the default state of the Show Headers checkbox. The checkbox is off by default. + */ + public static final String SHOW_HEADER_KEY = "show-header"; + + /** + * boolean + * + * Sets the default state of the Show Images checkbox. The checkbox is off by default. + */ + public static final String SHOW_IMAGES_KEY = "show-images"; + + private WPSwitch mShowRelatedPosts; + private CheckBox mShowHeader; + private CheckBox mShowImages; + private TextView mPreviewHeader; + private TextView mRelatedPostsListHeader; + private LinearLayout mRelatedPostsList; + private List<ImageView> mPreviewImages; + private boolean mConfirmed; + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + LayoutInflater inflater = getActivity().getLayoutInflater(); + View v = inflater.inflate(R.layout.related_posts_dialog, null, false); + + mShowRelatedPosts = (WPSwitch) v.findViewById(R.id.toggle_related_posts_switch); + mShowHeader = (CheckBox) v.findViewById(R.id.show_header_checkbox); + mShowImages = (CheckBox) v.findViewById(R.id.show_images_checkbox); + mPreviewHeader = (TextView) v.findViewById(R.id.preview_header); + mRelatedPostsListHeader = (TextView) v.findViewById(R.id.related_posts_list_header); + mRelatedPostsList = (LinearLayout) v.findViewById(R.id.related_posts_list); + + mPreviewImages = new ArrayList<>(); + mPreviewImages.add((ImageView) v.findViewById(R.id.related_post_image1)); + mPreviewImages.add((ImageView) v.findViewById(R.id.related_post_image2)); + mPreviewImages.add((ImageView) v.findViewById(R.id.related_post_image3)); + + Bundle args = getArguments(); + if (args != null) { + mShowRelatedPosts.setChecked(args.getBoolean(SHOW_RELATED_POSTS_KEY)); + mShowHeader.setChecked(args.getBoolean(SHOW_HEADER_KEY)); + mShowImages.setChecked(args.getBoolean(SHOW_IMAGES_KEY)); + } + + toggleShowHeader(mShowHeader.isChecked()); + toggleShowImages(mShowImages.isChecked()); + + mShowRelatedPosts.setOnCheckedChangeListener(this); + mShowHeader.setOnCheckedChangeListener(this); + mShowImages.setOnCheckedChangeListener(this); + + toggleViews(mShowRelatedPosts.isChecked()); + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.Calypso_AlertDialog); + View titleView = inflater.inflate(R.layout.detail_list_preference_title, null); + TextView titleText = ((TextView) titleView.findViewById(R.id.title)); + titleText.setText(R.string.site_settings_related_posts_title); + titleText.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); + builder.setCustomTitle(titleView); + builder.setPositiveButton(R.string.ok, this); + builder.setNegativeButton(R.string.cancel, this); + builder.setView(v); + + return builder.create(); + } + + @Override + public void onStart() { + super.onStart(); + + AlertDialog dialog = (AlertDialog) getDialog(); + Button positive = dialog.getButton(DialogInterface.BUTTON_POSITIVE); + Button negative = dialog.getButton(DialogInterface.BUTTON_NEGATIVE); + if (positive != null) WPPrefUtils.layoutAsFlatButton(positive); + if (negative != null) WPPrefUtils.layoutAsFlatButton(negative); + } + + @Override + public void onClick(DialogInterface dialog, int which) { + mConfirmed = which == DialogInterface.BUTTON_POSITIVE; + dismiss(); + } + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (buttonView == mShowRelatedPosts) { + toggleViews(isChecked); + } else if (buttonView == mShowHeader) { + toggleShowHeader(isChecked); + } else if (buttonView == mShowImages) { + toggleShowImages(isChecked); + } + } + + @Override + public void onDismiss(DialogInterface dialog) { + Fragment target = getTargetFragment(); + if (target != null) { + target.onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, getResultIntent()); + } + + super.onDismiss(dialog); + } + + private void toggleShowHeader(boolean show) { + if (show) { + mRelatedPostsListHeader.setVisibility(View.VISIBLE); + } else { + mRelatedPostsListHeader.setVisibility(View.GONE); + } + } + + private void toggleShowImages(boolean show) { + int visibility = show ? View.VISIBLE : View.GONE; + for (ImageView view : mPreviewImages) { + view.setVisibility(visibility); + } + } + + private Intent getResultIntent() { + if (mConfirmed) { + return new Intent() + .putExtra(SHOW_RELATED_POSTS_KEY, mShowRelatedPosts.isChecked()) + .putExtra(SHOW_HEADER_KEY, mShowHeader.isChecked()) + .putExtra(SHOW_IMAGES_KEY, mShowImages.isChecked()); + } + + return null; + } + + private void toggleViews(boolean enabled) { + mShowHeader.setEnabled(enabled); + mShowImages.setEnabled(enabled); + mPreviewHeader.setEnabled(enabled); + mRelatedPostsListHeader.setEnabled(enabled); + + if (enabled) { + mRelatedPostsList.setAlpha(1.0f); + } else { + mRelatedPostsList.setAlpha(0.5f); + } + } +} |