Create AddLabelDialog and use in TimerViewHolder

This commit is contained in:
Phillip Hsu 2016-08-30 18:46:52 -07:00
parent c2d86389b0
commit d1f3fae2c3
5 changed files with 82 additions and 2 deletions

View File

@ -0,0 +1,68 @@
package com.philliphsu.clock2;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatDialogFragment;
import android.widget.EditText;
/**
* Created by Phillip Hsu on 8/30/2016.
*
* TODO: If we have any other needs for a dialog with an EditText, rename this to EditTextDialog,
* and change the callback interface name appropriately.
*/
public class AddLabelDialog extends AppCompatDialogFragment {
private EditText mEditText;
private OnLabelSetListener mOnLabelSetListener;
private CharSequence mInitialText;
public interface OnLabelSetListener {
void onLabelSet(CharSequence label);
}
/**
* @param text the initial text
*/
public static AddLabelDialog newInstance(CharSequence text) {
AddLabelDialog dialog = new AddLabelDialog();
dialog.mInitialText = text;
return dialog;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mEditText = new EditText(getActivity());
mEditText.setText(mInitialText);
mEditText.setSelection(0, mEditText.length());
return new AlertDialog.Builder(getActivity(), getTheme())
.setTitle(R.string.label)
.setView(mEditText)
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
})
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (mOnLabelSetListener != null) {
mOnLabelSetListener.onLabelSet(mEditText.getText());
}
dismiss();
}
})
.create();
}
public void setOnLabelSetListener(OnLabelSetListener onLabelSetListener) {
mOnLabelSetListener = onLabelSetListener;
}
}

View File

@ -1,6 +1,7 @@
package com.philliphsu.clock2.timers;
import android.animation.ObjectAnimator;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@ -8,6 +9,7 @@ import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.TextView;
import com.philliphsu.clock2.AddLabelDialog;
import com.philliphsu.clock2.AsyncTimersTableUpdateHandler;
import com.philliphsu.clock2.BaseViewHolder;
import com.philliphsu.clock2.OnListItemInteractionListener;
@ -69,6 +71,14 @@ public class TimerViewHolder extends BaseViewHolder<Timer> {
mController.stop();
}
@OnClick(R.id.label)
void openLabelEditor() {
AddLabelDialog dialog = AddLabelDialog.newInstance(mLabel.getText());
// TODO: This is bad! Use a Controller instead!
AppCompatActivity act = (AppCompatActivity) getContext();
dialog.show(act.getSupportFragmentManager(), "TAG");
}
private void bindLabel(String label) {
if (!label.isEmpty()) {
mLabel.setText(label);

View File

@ -15,7 +15,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Label"
android:hint="@string/label"
android:textSize="@dimen/text_size_medium"
android:layout_marginTop="@dimen/item_padding_top"
android:layout_marginBottom="@dimen/item_margin_between_elements"/>

View File

@ -16,7 +16,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Label"
android:hint="@string/label"
android:textSize="@dimen/text_size_medium"
android:layout_marginTop="@dimen/item_padding_top"
android:layout_marginBottom="@dimen/item_margin_between_elements"/>

View File

@ -200,4 +200,6 @@
<string name="alarm_auto_silenced_text">You missed your alarm.</string>
<string name="timer_auto_silenced_text">Your timer expired.</string>
<string name="label">Label</string>
</resources>