package com.fastaccess.ui.widgets.dialog; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; import com.fastaccess.R; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.ui.base.BaseBottomSheetDialog; import com.fastaccess.ui.widgets.FontButton; import com.fastaccess.ui.widgets.FontTextView; import com.prettifier.pretty.PrettifyWebView; import butterknife.BindView; import butterknife.OnClick; /** * Created by Kosh on 16 Sep 2016, 2:15 PM */ public class MessageDialogView extends BaseBottomSheetDialog { public static final String TAG = MessageDialogView.class.getSimpleName(); public interface MessageDialogViewActionCallback { void onMessageDialogActionClicked(boolean isOk, @Nullable Bundle bundle); void onDialogDismissed(); } @BindView(R.id.prettifyWebView) PrettifyWebView prettifyWebView; @BindView(R.id.title) FontTextView title; @BindView(R.id.message) FontTextView message; @BindView(R.id.cancel) FontButton cancel; @BindView(R.id.ok) FontButton ok; @Nullable private MessageDialogViewActionCallback callback; @Override public void onAttach(Context context) { super.onAttach(context); if (getParentFragment() != null && getParentFragment() instanceof MessageDialogViewActionCallback) { callback = (MessageDialogViewActionCallback) getParentFragment(); } else if (context instanceof MessageDialogViewActionCallback) { callback = (MessageDialogViewActionCallback) context; } } @Override public void onDetach() { super.onDetach(); callback = null; } @OnClick({R.id.cancel, R.id.ok}) public void onClick(@NonNull View view) { if (callback != null) { isAlreadyHidden = true; callback.onMessageDialogActionClicked(view.getId() == R.id.ok, getArguments().getBundle("bundle")); } dismiss(); } @Override protected int layoutRes() { return R.layout.message_dialog; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Bundle bundle = getArguments(); title.setText(bundle.getString("bundleTitle")); String msg = bundle.getString("bundleMsg"); if (bundle.getBoolean("isMarkDown")) { if (msg != null) { message.setVisibility(View.GONE); prettifyWebView.setVisibility(View.VISIBLE); prettifyWebView.setGithubContent(msg, null, true); prettifyWebView.setNestedScrollingEnabled(false); return; } } if (bundle.getBundle("bundle") != null) { @SuppressWarnings("ConstantConditions") boolean yesNo = bundle.getBundle("bundle").getBoolean(BundleConstant.YES_NO_EXTRA); if (yesNo) { ok.setText(R.string.yes); cancel.setText(R.string.no); } else if (!bundle.getBundle("bundle").getString("primary_extra", "").isEmpty()){ ok.setText(bundle.getBundle("bundle").getString("primary_extra", "")); cancel.setText(bundle.getBundle("bundle").getString("secondary_extra", "")); } } message.setText(msg); } @Override protected void onDismissedByScrolling() { super.onDismissedByScrolling(); if (callback != null) callback.onDialogDismissed(); } @Override protected void onHidden() { if (callback != null) callback.onDialogDismissed(); super.onHidden(); } @NonNull public static MessageDialogView newInstance(@NonNull String bundleTitle, @NonNull String bundleMsg) { return newInstance(bundleTitle, bundleMsg, null); } @NonNull public static MessageDialogView newInstance(@NonNull String bundleTitle, @NonNull String bundleMsg, boolean isMarkDown) { return newInstance(bundleTitle, bundleMsg, isMarkDown, null); } @NonNull public static MessageDialogView newInstance(@NonNull String bundleTitle, @NonNull String bundleMsg, boolean isMarkDown, @Nullable Bundle bundle) { MessageDialogView messageDialogView = new MessageDialogView(); messageDialogView.setArguments(getBundle(bundleTitle, bundleMsg, isMarkDown, bundle)); return messageDialogView; } @NonNull public static MessageDialogView newInstance(@NonNull String bundleTitle, @NonNull String bundleMsg, @Nullable Bundle bundle) { return newInstance(bundleTitle, bundleMsg, false, bundle); } public static Bundle getBundle(String bundleTitle, String bundleMsg, boolean isMarkDown, Bundle bundle) { return Bundler .start() .put("bundleTitle", bundleTitle) .put("bundleMsg", bundleMsg) .put("bundle", bundle) .put("isMarkDown", isMarkDown) .end(); } }