blob: 446545bde4b981df3e96320eb3a0b92094872a77 [file] [log] [blame]
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);
}
}
}