3 import java.io.FileNotFoundException;
4 import java.io.InputStream;
7 import android.app.AlertDialog;
8 import android.content.Context;
9 import android.content.DialogInterface;
10 import android.content.Intent;
11 import android.net.Uri;
12 import android.os.Bundle;
13 import android.text.Editable;
14 import android.text.TextWatcher;
15 import android.view.View;
16 import android.view.View.OnClickListener;
17 import android.widget.AdapterView;
18 import android.widget.AdapterView.OnItemClickListener;
19 import android.widget.ArrayAdapter;
20 import android.widget.Button;
21 import android.widget.LinearLayout;
22 import android.widget.ListView;
23 import android.widget.TextView;
25 import com.jm.common.Constant;
27 import com.jm.db.PatternFile;
28 import com.jm.pref.EditPrefUtil;
29 import com.jm.utility.BaseActivity;
30 import com.jm.utility.Debug;
31 import com.jm.utility.JmException;
33 public class PatternManager extends BaseActivity {
35 NORMAL, SELECTED, INPUT_FILENAME, UPDATE, NONE
38 private static int selectedIndex = -1;
39 private EditPrefUtil pref = new EditPrefUtil(this);
40 private Button patternAddButton;
41 private Button patternUpdateButton;
42 private Button patternDeleteButton;
43 private Button patternCloseButton;
44 private LinearLayout patternLayout;
45 private TextView patternFileText;
46 private ListView listView;
47 private PatternFile[] list;
48 private Status status = Status.NORMAL;
49 private InputStream inputStream;
50 private int selectedPatternIndex = -1;
53 public void onCreate(Bundle savedInstanceState) {
54 super.onCreate(savedInstanceState);
55 setContentView(R.layout.pattern_manager);
57 patternAddButton = (Button) findViewById(R.id.patternAddButton);
58 patternUpdateButton = (Button) findViewById(R.id.patternUpdateButton);
59 patternDeleteButton = (Button) findViewById(R.id.patternDeleteButton);
60 patternCloseButton = (Button) findViewById(R.id.patternCloseButton);
61 listView = (ListView) findViewById(R.id.patternList);
62 patternLayout = (LinearLayout) findViewById(R.id.patternLayout);
63 patternFileText = (TextView) findViewById(R.id.patternFileText);
65 listView.setOnItemClickListener(new OnItemClickListener() {
67 public void onItemClick(AdapterView<?> parent, View view,
68 int position, long id) {
69 listViewOnItemClick(parent, view, position, id);
73 patternAddButton.setOnClickListener(new OnClickListener() {
75 public void onClick(View view) {
76 patternAddButtonOnClick();
79 patternUpdateButton.setOnClickListener(new OnClickListener() {
81 public void onClick(View view) {
82 patternUpdateButtonOnClick();
85 patternDeleteButton.setOnClickListener(new OnClickListener() {
87 public void onClick(View view) {
88 patternDeleteButtonOnClick();
91 patternCloseButton.setOnClickListener(new OnClickListener() {
93 public void onClick(View view) {
94 patternCloseButtonOnClick();
97 patternFileText.addTextChangedListener(new TextWatcher() {
99 public void afterTextChanged(Editable arg0) {
104 public void beforeTextChanged(CharSequence arg0, int arg1,
105 int arg2, int arg3) {
110 public void onTextChanged(CharSequence arg0, int arg1, int arg2,
115 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
117 selectedIndex = pref.getInt(Constant.PREF_PATTERN_FILE_INDEX);
118 setStatus((selectedIndex >= 0) ? Status.SELECTED : Status.NORMAL);
121 selectedPatternIndex = pref
122 .getInt(Constant.PREF_SELECTED_PATTERN_INDEX);
126 protected void onStart() {
129 selectedIndex = pref.getInt(Constant.PREF_PATTERN_FILE_INDEX);
133 protected void onPause() {
134 pref.put(Constant.PREF_PATTERN_FILE_INDEX, selectedIndex);
140 protected void onActivityResult(int requestCode, int resultCode,
142 super.onActivityResult(requestCode, resultCode, intent);
144 if (resultCode != RESULT_OK) {
148 switch (requestCode) {
150 Uri uri = intent.getData();
152 inputStream = getContentResolver().openInputStream(uri);
153 patternFileText.setText("");
154 setStatus(Status.INPUT_FILENAME);
155 } catch (FileNotFoundException e) {
156 Debug.d(this, e.getMessage());
162 private void updateList() {
163 Dao dao = Dao.getInstance();
167 private void updateList(Dao dao) {
168 List<PatternFile> l = dao.getPatternFile();
172 list = l.toArray(new PatternFile[0]);
174 ArrayAdapter<PatternFile> adapter = new ArrayAdapter<PatternFile>(this,
175 R.layout.simple_list_item_2, R.id.text3, list);
176 listView.setAdapter(adapter);
181 private void listViewOnItemClick(AdapterView<?> parent, View view,
182 int position, long id) {
183 selectedIndex = position;
184 setStatus(Status.SELECTED);
187 private void patternAddButtonOnClick() {
191 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
193 intent.setType("text/*");
195 startActivityForResult(intent, 0);
199 Debug.d(this, e.getMessage());
203 if (inputStream == null) {
206 String text = patternFileText.getText().toString();
207 Dao dao = Dao.getInstance();
208 dao.insertPatternList(inputStream, text, true);
212 setStatus(Status.NORMAL);
219 private void patternUpdateButtonOnClick() {
220 if (selectedIndex < 0) {
224 setStatus(Status.UPDATE);
226 PatternFile p = list[selectedIndex];
227 long pid = p.getId();
229 Intent intent = new Intent();
230 intent.putExtra(Constant.EXTRAS_ID, pid);
231 setResult(RESULT_OK, intent);
236 private void patternDeleteButtonOnClick() {
237 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
238 alertDialogBuilder.setTitle(getString(R.string.title_delete));
240 .setMessage(getString(R.string.message_delete_patternfile));
241 alertDialogBuilder.setPositiveButton(android.R.string.ok,
242 new DialogInterface.OnClickListener() {
244 public void onClick(DialogInterface dialog, int which) {
245 if (selectedIndex < 0) {
249 PatternFile p = list[selectedIndex];
250 long pid = p.getId();
252 Dao dao = Dao.getInstance();
254 dao.deletePatternFile(pid);
256 } catch (JmException e) {
257 Debug.d(this, e.getMessage());
261 setStatus(Status.NORMAL);
265 alertDialogBuilder.setNeutralButton(android.R.string.no,
266 new DialogInterface.OnClickListener() {
268 public void onClick(DialogInterface dialog, int which) {
269 setStatus(Status.SELECTED);
272 alertDialogBuilder.setCancelable(true);
273 AlertDialog alertDialog = alertDialogBuilder.create();
277 private void patternCloseButtonOnClick() {
281 private void setStatus() {
282 setStatus(Status.NONE);
285 private void setStatus(Status s) {
286 if (s != Status.NONE) {
292 patternLayout.setVisibility(View.GONE);
293 listView.setVisibility(View.VISIBLE);
294 listView.setEnabled(true);
295 patternAddButton.setEnabled(true);
296 patternUpdateButton.setEnabled(false);
297 patternDeleteButton.setEnabled(false);
298 patternCloseButton.setEnabled(true);
301 patternLayout.setVisibility(View.GONE);
302 listView.setVisibility(View.VISIBLE);
303 listView.setEnabled(true);
304 patternAddButton.setEnabled(true);
305 patternUpdateButton.setEnabled(true);
307 if (list != null && selectedIndex >= 0) {
308 PatternFile p = list[selectedIndex];
309 long pid = p.getId();
310 if (pid != selectedPatternIndex && p.isWritable()) {
314 patternDeleteButton.setEnabled(b);
315 patternCloseButton.setEnabled(true);
318 patternLayout.setVisibility(View.VISIBLE);
319 listView.setVisibility(View.INVISIBLE);
320 listView.setEnabled(false);
321 patternAddButton.setEnabled(patternFileText.getText().length() > 0);
322 patternUpdateButton.setEnabled(false);
323 patternDeleteButton.setEnabled(false);
324 patternCloseButton.setEnabled(true);
327 patternLayout.setVisibility(View.GONE);
328 listView.setVisibility(View.VISIBLE);
329 listView.setEnabled(false);
330 patternAddButton.setEnabled(false);
331 patternUpdateButton.setEnabled(false);
332 patternDeleteButton.setEnabled(false);
333 patternCloseButton.setEnabled(false);
340 public static void init(Context context) {
341 EditPrefUtil pref = new EditPrefUtil(context);
342 pref.put(Constant.PREF_PATTERN_FILE_INDEX, -1);