1 package org.coolreader.crengine;
2 
3 import org.coolreader.CoolReader;
4 import org.coolreader.R;
5 
6 import android.view.LayoutInflater;
7 import android.view.View;
8 import android.widget.EditText;
9 
10 public class OPDSCatalogEditDialog extends BaseDialog {
11 
12 	private final CoolReader mActivity;
13 	private final LayoutInflater mInflater;
14 	private final FileInfo mItem;
15 	private final EditText nameEdit;
16 	private final EditText urlEdit;
17 	private final EditText usernameEdit;
18 	private final EditText passwordEdit;
19 	private final Runnable mOnUpdate;
20 
OPDSCatalogEditDialog(CoolReader activity, FileInfo item, Runnable onUpdate)21 	public OPDSCatalogEditDialog(CoolReader activity, FileInfo item, Runnable onUpdate) {
22 		super(activity, activity.getString((item.id == null) ? R.string.dlg_catalog_add_title
23 				: R.string.dlg_catalog_edit_title), true,
24 				false);
25 		mActivity = activity;
26 		mItem = item;
27 		mOnUpdate = onUpdate;
28 		mInflater = LayoutInflater.from(getContext());
29 		View view = mInflater.inflate(R.layout.catalog_edit_dialog, null);
30 		nameEdit = (EditText) view.findViewById(R.id.catalog_name);
31 		urlEdit = (EditText) view.findViewById(R.id.catalog_url);
32 		usernameEdit = (EditText) view.findViewById(R.id.catalog_username);
33 		passwordEdit = (EditText) view.findViewById(R.id.catalog_password);
34 		nameEdit.setText(mItem.filename);
35 		urlEdit.setText(mItem.getOPDSUrl());
36 		usernameEdit.setText(mItem.username);
37 		passwordEdit.setText(mItem.password);
38 		setThirdButtonImage(Utils.resolveResourceIdByAttr(activity, R.attr.cr3_button_remove_drawable, R.drawable.cr3_button_remove),
39 				R.string.mi_catalog_delete);
40 		setView(view);
41 	}
42 
43 	@Override
onPositiveButtonClick()44 	protected void onPositiveButtonClick() {
45 		String url = urlEdit.getText().toString();
46 		boolean blacklist = checkBlackList(url);
47 		if (OPDSConst.BLACK_LIST_MODE == OPDSConst.BLACK_LIST_MODE_FORCE) {
48 			mActivity.showToast(R.string.black_list_enforced);
49 		} else if (OPDSConst.BLACK_LIST_MODE == OPDSConst.BLACK_LIST_MODE_WARN) {
50 			mActivity.askConfirmation(R.string.black_list_warning, new Runnable() {
51 				@Override
52 				public void run() {
53 					save();
54 					OPDSCatalogEditDialog.super.onPositiveButtonClick();
55 				}
56 
57 			}, new Runnable() {
58 				@Override
59 				public void run() {
60 					onNegativeButtonClick();
61 				}
62 			});
63 		} else {
64 			save();
65 			super.onPositiveButtonClick();
66 		}
67 	}
68 
checkBlackList(String url)69 	private boolean checkBlackList(String url) {
70 		for (String s : OPDSConst.BLACK_LIST) {
71 			if (s.equals(url))
72 				return true;
73 		}
74 		return false;
75 	}
76 
save()77 	private void save() {
78 		activity.getDB().saveOPDSCatalog(mItem.id,
79 				urlEdit.getText().toString(), nameEdit.getText().toString(),
80 				usernameEdit.getText().toString(), passwordEdit.getText().toString());
81 		mOnUpdate.run();
82 		super.onPositiveButtonClick();
83 	}
84 
85 	@Override
onNegativeButtonClick()86 	protected void onNegativeButtonClick() {
87 		super.onNegativeButtonClick();
88 	}
89 
90 	@Override
onThirdButtonClick()91 	protected void onThirdButtonClick() {
92 		mActivity.askDeleteCatalog(mItem);
93 		super.onThirdButtonClick();
94 	}
95 
96 
97 }
98