package yuku.alkitab.base.dialog; import android.content.Context; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import yuku.afw.V; import yuku.afw.widget.EasyAdapter; import yuku.alkitab.base.S; import yuku.alkitab.base.U; import yuku.alkitab.base.util.Appearances; import yuku.alkitab.base.util.Sqlitil; import yuku.alkitab.base.widget.AttributeView; import yuku.alkitab.debug.R; import yuku.alkitab.model.ProgressMark; import yuku.alkitab.model.Version; import java.util.ArrayList; import java.util.List; public class ProgressMarkListDialog extends DialogFragment { public static final String TAG = ProgressMarkListDialog.class.getSimpleName(); LayoutInflater inflater; public interface Listener { void onProgressMarkSelected(int preset_id); } Listener progressMarkListener; Version version = S.activeVersion; String versionId = S.activeVersionId; float textSizeMult = S.getDb().getPerVersionSettings(versionId).fontSizeMultiplier; @Override public void onAttach(final Context context) { super.onAttach(context); progressMarkListener = (Listener) context; } @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { this.inflater = inflater; final Window window = getDialog().getWindow(); if (window != null) { window.requestFeature(Window.FEATURE_NO_TITLE); } final View view = inflater.inflate(R.layout.dialog_progress_mark, container, false); final ListView lsProgressMark = V.get(view, R.id.lsProgressMark); final ProgressMarkAdapter adapter = new ProgressMarkAdapter(); lsProgressMark.setAdapter(adapter); lsProgressMark.setBackgroundColor(S.applied.backgroundColor); lsProgressMark.setOnItemClickListener((parent, view1, position, id) -> { final ProgressMark progressMark = adapter.progressMarks.get(position); progressMarkListener.onProgressMarkSelected(progressMark.preset_id); getDialog().dismiss(); }); lsProgressMark.setOnItemLongClickListener((parent, view1, position, id) -> { final ProgressMark progressMark = adapter.progressMarks.get(position); ProgressMarkRenameDialog.show(getActivity(), progressMark, new ProgressMarkRenameDialog.Listener() { @Override public void onOked() { adapter.reload(); } @Override public void onDeleted() { adapter.reload(); if (adapter.progressMarks.size() == 0) { // no more to show, dismiss this dialog. getDialog().dismiss(); } } }); return true; }); return view; } class ProgressMarkAdapter extends EasyAdapter { final List<ProgressMark> progressMarks = new ArrayList<>(); ProgressMarkAdapter() { reload(); } public void reload() { progressMarks.clear(); progressMarks.addAll(S.getDb().listAllProgressMarks()); notifyDataSetChanged(); } @Override public int getCount() { return progressMarks.size(); } @Override public View newView(final int position, final ViewGroup parent) { return inflater.inflate(R.layout.item_progress_mark, parent, false); } @Override public void bindView(final View view, final int position, final ViewGroup parent) { TextView tCaption = V.get(view, R.id.lCaption); TextView tDate = V.get(view, R.id.lDate); TextView tVerseText = V.get(view, R.id.lSnippet); ImageView imgIcon = V.get(view, R.id.imgIcon); final ProgressMark progressMark = progressMarks.get(position); imgIcon.setImageResource(AttributeView.getProgressMarkIconResource(progressMark.preset_id)); if (progressMark.ari == 0 || TextUtils.isEmpty(progressMark.caption)) { tCaption.setText(AttributeView.getDefaultProgressMarkStringResource(progressMark.preset_id)); } else { tCaption.setText(progressMark.caption); } Appearances.applyMarkerTitleTextAppearance(tCaption, textSizeMult); int ari = progressMark.ari; String verseText = ""; String date = ""; if (ari != 0) { date = Sqlitil.toLocaleDateMedium(progressMark.modifyTime); tDate.setText(date); final String reference = version.reference(ari); verseText = U.removeSpecialCodes(version.loadVerseText(ari)); Appearances.applyMarkerSnippetContentAndAppearance(tVerseText, reference, verseText, textSizeMult); view.setEnabled(false); } else { tVerseText.setText(verseText); view.setEnabled(true); } tDate.setText(date); Appearances.applyMarkerDateTextAppearance(tDate, textSizeMult); } } }