package net.bible.android.view.activity.bookmark;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
import net.bible.android.activity.R;
import net.bible.android.control.bookmark.BookmarkControl;
import net.bible.android.view.activity.base.Callback;
import net.bible.service.db.bookmark.LabelDto;
import javax.inject.Inject;
/**
* Label dialogs - edit or create label. Used in a couple of places so extracted.
*
* @author Martin Denham [mjdenham at gmail dot com]
* @see gnu.lgpl.License for license details.<br>
* The copyright to this program is held by it's author.
*/
public class LabelDialogs {
private final BookmarkControl bookmarkControl;
private static final String TAG = "LabelDialogs";
@Inject
public LabelDialogs(BookmarkControl bookmarkControl) {
this.bookmarkControl = bookmarkControl;
}
public void createLabel(Context context, final LabelDto label, final Callback onCreateCallback) {
showDialog(context, R.string.new_label, label, onCreateCallback);
}
public void editLabel(Context context, final LabelDto label, final Callback onCreateCallback) {
showDialog(context, R.string.edit, label, onCreateCallback);
}
private void showDialog(Context context, int titleId, final LabelDto label, final Callback onCreateCallback) {
Log.i(TAG, "Edit label clicked");
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.bookmark_label_edit, null);
final EditText labelName = (EditText)view.findViewById(R.id.labelName);
labelName.setText(label.getName());
final BookmarkStyleAdapter adp = new BookmarkStyleAdapter(context, android.R.layout.simple_spinner_item);
final Spinner labelStyle = (Spinner)view.findViewById(R.id.labelStyle);
labelStyle.setAdapter(adp);
labelStyle.setSelection(adp.getBookmarkStyleOffset(label.getBookmarkStyle()));
AlertDialog.Builder alert = new AlertDialog.Builder(context)
.setTitle(titleId)
.setView(view);
alert.setPositiveButton(R.string.okay, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String name = labelName.getText().toString();
label.setName(name);
label.setBookmarkStyle(adp.getBookmarkStyleForOffset(labelStyle.getSelectedItemPosition()));
bookmarkControl.saveOrUpdateLabel(label);
onCreateCallback.okay();
}
});
alert.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
AlertDialog dialog = alert.show();
}
}