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.Switch; import android.widget.TextView; import org.wordpress.android.R; import org.wordpress.android.util.WPPrefUtils; 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 Switch 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 = (Switch) 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(android.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); } } }