package com.automattic.simplenote; import android.content.DialogInterface; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v7.widget.SwitchCompat; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.CompoundButton; import android.widget.ImageButton; import android.widget.TextView; import com.automattic.simplenote.models.Note; import com.automattic.simplenote.utils.DateTimeUtils; import com.automattic.simplenote.utils.PrefUtils; import java.text.NumberFormat; /** * Created by onko on 27/03/2016. */ public class InfoBottomSheetDialog extends BottomSheetDialogBase { private TextView mInfoModifiedDate; private TextView mInfoWords; private TextView mInfoLinkUrl; private TextView mInfoLinkTitle; private SwitchCompat mInfoPinSwitch; private SwitchCompat mInfoMarkdownSwitch; private ImageButton mCopyButton; private ImageButton mShareButton; private Fragment mFragment; public InfoBottomSheetDialog(@NonNull Fragment fragment, @NonNull final InfoSheetListener infoSheetListener) { super(fragment.getActivity()); mFragment = fragment; View infoView = LayoutInflater.from(fragment.getActivity()).inflate(R.layout.bottom_sheet_info, null, false); mInfoModifiedDate = (TextView) infoView.findViewById(R.id.info_modified_date_text); mInfoWords = (TextView) infoView.findViewById(R.id.info_words_text); mInfoLinkUrl = (TextView) infoView.findViewById(R.id.info_public_link_url); mInfoLinkTitle = (TextView) infoView.findViewById(R.id.info_public_link_title); mInfoPinSwitch = (SwitchCompat) infoView.findViewById(R.id.info_pin_switch); mInfoPinSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { infoSheetListener.onInfoPinSwitchChanged(isChecked); } }); mInfoMarkdownSwitch = (SwitchCompat) infoView.findViewById(R.id.info_markdown_switch); mInfoMarkdownSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (!mFragment.isAdded()) return; infoSheetListener.onInfoMarkdownSwitchChanged(isChecked); // Set preference so that next new note will have markdown enabled SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mFragment.getActivity()); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(PrefUtils.PREF_MARKDOWN_ENABLED, isChecked); editor.apply(); } }); mCopyButton = (ImageButton) infoView.findViewById(R.id.info_copy_link_button); mCopyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { infoSheetListener.onInfoCopyLinkClicked(); } }); mShareButton = (ImageButton) infoView.findViewById(R.id.info_share_button); mShareButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { infoSheetListener.onInfoShareLinkClicked(); } }); setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { infoSheetListener.onInfoDismissed(); } }); setContentView(infoView); } public void show(Note note) { if (mFragment.isAdded()) { String date = DateTimeUtils.getDateText(mFragment.getActivity(), note.getModificationDate()); mInfoModifiedDate.setText(String.format(mFragment.getString(R.string.modified_time), date)); mInfoWords.setText(getWordCount(note.getContent())); mInfoPinSwitch.setChecked(note.isPinned()); mInfoMarkdownSwitch.setChecked(note.isMarkdownEnabled()); if (note.isPublished()) { mInfoLinkTitle.setText(mFragment.getString(R.string.public_link)); mInfoLinkUrl.setText(note.getPublishedUrl()); mInfoLinkUrl.setVisibility(View.VISIBLE); mCopyButton.setVisibility(View.VISIBLE); mShareButton.setVisibility(View.GONE); } else { mInfoLinkTitle.setText(mFragment.getString(R.string.note_not_published)); mInfoLinkUrl.setVisibility(View.GONE); mCopyButton.setVisibility(View.GONE); mShareButton.setVisibility(View.VISIBLE); } show(); } } private String getWordCount(String content) { if (TextUtils.isEmpty(content)) return ""; int numWords = (content.trim().length() == 0) ? 0 : content.trim().split("([\\W]+)").length; String wordCountString = mFragment.getResources().getQuantityString(R.plurals.word_count, numWords); String formattedWordCount = NumberFormat.getInstance().format(numWords); return String.format("%s %s", formattedWordCount, wordCountString); } public interface InfoSheetListener { void onInfoPinSwitchChanged(boolean isSwitchedOn); void onInfoMarkdownSwitchChanged(boolean isSwitchedOn); void onInfoCopyLinkClicked(); void onInfoShareLinkClicked(); void onInfoDismissed(); } }