1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-06 03:50:19 +02:00

Refactoring

This commit is contained in:
Dmitri Yuranov 2014-05-27 14:38:12 +02:00
parent 9371ecb9df
commit 5d835f86f7
8 changed files with 172 additions and 187 deletions

View file

@ -4,14 +4,14 @@
android:layout_width="fill_parent"
>
<LinearLayout
android:id="@+id/edit_authors_dialog_buttons"
android:id="@+id/edit_dialog_buttons"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
>
<Button
android:id="@+id/edit_authors_dialog_button_ok"
android:id="@+id/edit_dialog_button_ok"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -20,7 +20,7 @@
android:text="Ok"
/>
<Button
android:id="@+id/edit_authors_dialog_button_cancel"
android:id="@+id/edit_dialog_button_cancel"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -42,7 +42,7 @@
android:id="@android:id/list"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_above="@id/edit_authors_dialog_buttons"
android:layout_above="@id/edit_dialog_buttons"
android:layout_below="@id/edit_authors_input_field"
/>
</RelativeLayout>

View file

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:paddingTop="8dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingBottom="8dp"
>
<ImageView
android:id="@+id/edit_authors_item_remove"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:src="@android:drawable/ic_delete"/>
<TextView
android:id="@+id/edit_authors_item_title"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:layout_toLeftOf="@id/edit_authors_item_remove"
android:textSize="16sp"/>
</RelativeLayout>

View file

@ -8,17 +8,17 @@
android:paddingBottom="8dp"
>
<ImageView
android:id="@+id/edit_tags_item_remove"
android:id="@+id/edit_item_remove"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:src="@android:drawable/ic_delete"/>
<TextView
android:id="@+id/edit_tags_item_title"
android:id="@+id/edit_item_title"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:layout_toLeftOf="@id/edit_tags_item_remove"
android:layout_toLeftOf="@id/edit_item_remove"
android:textSize="16sp"/>
</RelativeLayout>

View file

@ -4,14 +4,14 @@
android:layout_width="fill_parent"
>
<LinearLayout
android:id="@+id/edit_tags_dialog_buttons"
android:id="@+id/edit_dialog_buttons"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
>
<Button
android:id="@+id/edit_tags_dialog_button_ok"
android:id="@+id/edit_dialog_button_ok"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -20,7 +20,7 @@
android:text="Ok"
/>
<Button
android:id="@+id/edit_tags_dialog_button_cancel"
android:id="@+id/edit_dialog_button_cancel"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -41,7 +41,7 @@
android:id="@android:id/list"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_above="@id/edit_tags_dialog_buttons"
android:layout_above="@id/edit_dialog_buttons"
android:layout_below="@id/edit_tags_input_field"
/>
</RelativeLayout>

View file

@ -39,6 +39,7 @@ import org.geometerplus.fbreader.formats.FormatPlugin;
import org.geometerplus.android.fbreader.api.FBReaderIntents;
import org.geometerplus.android.fbreader.libraryService.BookCollectionShadow;
import org.geometerplus.android.util.EditListDialogActivity;
import org.geometerplus.android.util.EditTagsDialogActivity;
import org.geometerplus.android.util.EditAuthorsDialogActivity;
@ -176,7 +177,7 @@ class EditTagsPreference extends Preference {
for(Tag tag : myBook.tags()){
tags.add(tag.Name);
}
intent.putExtra(EditTagsDialogActivity.Key.TAG_LIST, tags);
intent.putExtra(EditListDialogActivity.Key.LIST, tags);
((EditBookInfoActivity)getContext()).startActivityForResult(intent, EditTagsDialogActivity.REQ_CODE);
}
}
@ -206,7 +207,7 @@ class EditAuthorsPreference extends Preference {
@Override
protected void onClick() {
Intent intent = new Intent(getContext(), EditAuthorsDialogActivity.class);
intent.putExtra(EditAuthorsDialogActivity.Key.ACTIVITY_TITLE, myResource.getValue());
intent.putExtra(EditListDialogActivity.Key.ACTIVITY_TITLE, myResource.getValue());
ArrayList<String> authors = new ArrayList<String>();
for(Author author : myBook.authors()){
authors.add(author.DisplayName);
@ -216,7 +217,7 @@ class EditAuthorsPreference extends Preference {
for(Author author : ((EditBookInfoActivity)getContext()).authors()){
allAuthors.add(author.DisplayName);
}
intent.putExtra(EditAuthorsDialogActivity.Key.AUTHOR_LIST, authors);
intent.putExtra(EditListDialogActivity.Key.LIST, authors);
intent.putExtra(EditAuthorsDialogActivity.Key.ALL_AUTHOR_LIST, allAuthors);
((EditBookInfoActivity)getContext()).startActivityForResult(intent, EditAuthorsDialogActivity.REQ_CODE);
}
@ -288,7 +289,10 @@ public class EditBookInfoActivity extends ZLPreferenceActivity {
if (resultCode == RESULT_OK) {
switch(reqCode){
case EditTagsDialogActivity.REQ_CODE:
myEditTagsPreference.saveTags(data.getStringArrayListExtra(EditTagsDialogActivity.Key.TAG_LIST));
myEditTagsPreference.saveTags(data.getStringArrayListExtra(EditListDialogActivity.Key.LIST));
break;
case EditAuthorsDialogActivity.REQ_CODE:
myEditAuthorsPreference.saveAuthors(data.getStringArrayListExtra(EditListDialogActivity.Key.LIST));
break;
}
}

View file

@ -33,45 +33,20 @@ import android.view.inputmethod.EditorInfo;
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.zlibrary.ui.android.R;
public class EditAuthorsDialogActivity extends ListActivity {
public static final int REQ_CODE = 001;
public class EditAuthorsDialogActivity extends EditListDialogActivity {
public static final int REQ_CODE = 002;
public interface Key {
final String AUTHOR_LIST = "edit_authors.author_list";
final String ALL_AUTHOR_LIST = "edit_authors.all_author_list";
final String ACTIVITY_TITLE = "edit_authors.title";
}
private ArrayList<String> myAuthorList;
private ZLResource myResource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_authors_dialog);
final Intent intent = getIntent();
myAuthorList = intent.getStringArrayListExtra(Key.AUTHOR_LIST);
ArrayList<String> allAuthorList = intent.getStringArrayListExtra(Key.ALL_AUTHOR_LIST);
setTitle(intent.getStringExtra(Key.ACTIVITY_TITLE));
myResource = ZLResource.resource("dialog").getResource("editAuthors");
final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button");
final Button okButton = (Button)findViewById(R.id.edit_authors_dialog_button_ok);
okButton.setText(buttonResource.getResource("ok").getValue());
okButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(RESULT_OK, new Intent().putExtra(Key.AUTHOR_LIST, myAuthorList));
finish();
}
});
final Button cancelButton = (Button)findViewById(R.id.edit_authors_dialog_button_cancel);
cancelButton.setText(buttonResource.getResource("cancel").getValue());
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(RESULT_CANCELED);
finish();
}
});
final AutoCompleteTextView inputField = (AutoCompleteTextView)findViewById(R.id.edit_authors_input_field);
inputField.setHint(myResource.getResource("addAuthor").getValue());
inputField.setOnEditorActionListener(new TextView.OnEditorActionListener(){
@ -86,6 +61,8 @@ public class EditAuthorsDialogActivity extends ListActivity {
});
inputField.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, allAuthorList));
parseUIElements();
final AuthorsAdapter adapter = new AuthorsAdapter();
setListAdapter(adapter);
getListView().setOnItemClickListener(adapter);
@ -95,57 +72,21 @@ public class EditAuthorsDialogActivity extends ListActivity {
private void addAuthor(String author){
if(author.length() != 0){
if(!myAuthorList.contains(author)){
myAuthorList.add(author);
if(!myEditList.contains(author)){
myEditList.add(author);
}
((AuthorsAdapter)getListAdapter()).notifyDataSetChanged();
((BaseAdapter)getListAdapter()).notifyDataSetChanged();
}
}
private void showItemRemoveDialog(final int index) {
final ZLResource resource = myResource.getResource("removeDialog");
final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button");
new AlertDialog.Builder(EditAuthorsDialogActivity.this)
.setCancelable(false)
.setTitle(resource.getValue())
.setMessage(resource.getResource("message").getValue().replace("%s", myAuthorList.get(index)))
.setPositiveButton(buttonResource.getResource("yes").getValue(), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
myAuthorList.remove(index);
((AuthorsAdapter)getListAdapter()).notifyDataSetChanged();
}
})
.setNegativeButton(buttonResource.getResource("cancel").getValue(), null)
.create().show();
}
private class AuthorsAdapter extends BaseAdapter implements AdapterView.OnItemClickListener {
@Override
public int getCount() {
return myAuthorList.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public String getItem(int position) {
return myAuthorList.get(position);
}
private class AuthorsAdapter extends EditListAdapter {
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View view = convertView != null
? convertView
: LayoutInflater.from(EditAuthorsDialogActivity.this).inflate(R.layout.edit_authors_item, parent, false);
final View view = super.getView(position, convertView, parent);
((TextView)view.findViewById(R.id.edit_authors_item_title)).setText(getItem(position));
final View deleteButton = view.findViewById(R.id.edit_authors_item_remove);
final View deleteButton = view.findViewById(R.id.edit_item_remove);
if (myAuthorList.size() > 1) {
if (myEditList.size() > 1) {
deleteButton.setVisibility(View.VISIBLE);
deleteButton.setOnClickListener(new View.OnClickListener() {
public void onClick(final View v) {
@ -158,9 +99,5 @@ public class EditAuthorsDialogActivity extends ListActivity {
return view;
}
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
}
}
}

View file

@ -0,0 +1,131 @@
/*
* Copyright (C) 2007-2014 Geometer Plus <contact@geometerplus.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
package org.geometerplus.android.util;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.*;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
import android.text.InputType;
import android.view.inputmethod.EditorInfo;
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.zlibrary.ui.android.R;
public class EditListDialogActivity extends ListActivity {
public static final int REQ_CODE = 001;
public interface Key {
final String LIST = "edit_list.list";
final String ACTIVITY_TITLE = "edit_list.title";
}
protected ArrayList<String> myEditList;
protected ZLResource myResource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent intent = getIntent();
myEditList = intent.getStringArrayListExtra(Key.LIST);
setTitle(intent.getStringExtra(Key.ACTIVITY_TITLE));
myResource = ZLResource.resource("dialog").getResource("editAuthors");
setResult(RESULT_CANCELED);
}
protected void parseUIElements(){
final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button");
final Button okButton = (Button)findViewById(R.id.edit_dialog_button_ok);
if(okButton != null){
okButton.setText(buttonResource.getResource("ok").getValue());
okButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(RESULT_OK, new Intent().putExtra(Key.LIST, myEditList));
finish();
}
});
}
final Button cancelButton = (Button)findViewById(R.id.edit_dialog_button_cancel);
if(cancelButton != null){
cancelButton.setText(buttonResource.getResource("cancel").getValue());
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(RESULT_CANCELED);
finish();
}
});
}
}
protected void showItemRemoveDialog(final int index) {
final ZLResource resource = myResource.getResource("removeDialog");
final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button");
new AlertDialog.Builder(EditListDialogActivity.this)
.setCancelable(false)
.setTitle(resource.getValue())
.setMessage(resource.getResource("message").getValue().replace("%s", myEditList.get(index)))
.setPositiveButton(buttonResource.getResource("yes").getValue(), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
myEditList.remove(index);
if(getListAdapter() != null)
((BaseAdapter)getListAdapter()).notifyDataSetChanged();
}
})
.setNegativeButton(buttonResource.getResource("cancel").getValue(), null)
.create().show();
}
protected class EditListAdapter extends BaseAdapter implements AdapterView.OnItemClickListener {
@Override
public int getCount() {
return myEditList.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public String getItem(int position) {
return myEditList.get(position);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View view = convertView != null
? convertView
: LayoutInflater.from(EditListDialogActivity.this).inflate(R.layout.edit_list_dialog_item, parent, false);
((TextView)view.findViewById(R.id.edit_item_title)).setText(getItem(position));
return view;
}
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
}
}
}

View file

@ -33,14 +33,9 @@ import android.view.inputmethod.EditorInfo;
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.zlibrary.ui.android.R;
public class EditTagsDialogActivity extends ListActivity {
public class EditTagsDialogActivity extends EditListDialogActivity {
public static final int REQ_CODE = 001;
public interface Key {
final String TAG_LIST = "edit_tags.tag_list";
final String ACTIVITY_TITLE = "edit_tags.title";
}
private ArrayList<String> myTagList;
private ZLResource myResource;
@Override
@ -48,28 +43,8 @@ public class EditTagsDialogActivity extends ListActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_tags_dialog);
final Intent intent = getIntent();
myTagList = intent.getStringArrayListExtra(Key.TAG_LIST);
setTitle(intent.getStringExtra(Key.ACTIVITY_TITLE));
myResource = ZLResource.resource("dialog").getResource("editTags");
final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button");
final Button okButton = (Button)findViewById(R.id.edit_tags_dialog_button_ok);
okButton.setText(buttonResource.getResource("ok").getValue());
okButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(RESULT_OK, new Intent().putExtra(Key.TAG_LIST, myTagList));
finish();
}
});
final Button cancelButton = (Button)findViewById(R.id.edit_tags_dialog_button_cancel);
cancelButton.setText(buttonResource.getResource("cancel").getValue());
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(RESULT_CANCELED);
finish();
}
});
final EditText inputField = (EditText)findViewById(R.id.edit_tags_input_field);
inputField.setHint(myResource.getResource("addTag").getValue());
inputField.setOnEditorActionListener(new TextView.OnEditorActionListener(){
@ -83,69 +58,35 @@ public class EditTagsDialogActivity extends ListActivity {
return true;
}
});
parseUIElements();
final TagsAdapter adapter = new TagsAdapter();
setListAdapter(adapter);
getListView().setOnItemClickListener(adapter);
setResult(RESULT_CANCELED);
}
private void addTag(String tag){
if(tag.length() != 0){
String[] tags = tag.split(",");
for(String s : tags){
s = s.trim();
if(!myTagList.contains(s)){
myTagList.add(s);
if(!myEditList.contains(s)){
myEditList.add(s);
}
}
((TagsAdapter)getListAdapter()).notifyDataSetChanged();
((BaseAdapter)getListAdapter()).notifyDataSetChanged();
}
}
private void showItemRemoveDialog(final int index) {
final ZLResource resource = myResource.getResource("removeDialog");
final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button");
new AlertDialog.Builder(EditTagsDialogActivity.this)
.setCancelable(false)
.setTitle(resource.getValue())
.setMessage(resource.getResource("message").getValue().replace("%s", myTagList.get(index)))
.setPositiveButton(buttonResource.getResource("yes").getValue(), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
myTagList.remove(index);
((TagsAdapter)getListAdapter()).notifyDataSetChanged();
}
})
.setNegativeButton(buttonResource.getResource("cancel").getValue(), null)
.create().show();
}
private class TagsAdapter extends BaseAdapter implements AdapterView.OnItemClickListener {
@Override
public int getCount() {
return myTagList.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public String getItem(int position) {
return myTagList.get(position);
}
private class TagsAdapter extends EditListAdapter {
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View view = convertView != null
? convertView
: LayoutInflater.from(EditTagsDialogActivity.this).inflate(R.layout.edit_tags_item, parent, false);
final View view = super.getView(position, convertView, parent);
((TextView)view.findViewById(R.id.edit_tags_item_title)).setText(getItem(position));
final View deleteButton = view.findViewById(R.id.edit_tags_item_remove);
final View deleteButton = view.findViewById(R.id.edit_item_remove);
deleteButton.setOnClickListener(new View.OnClickListener() {
public void onClick(final View v) {
showItemRemoveDialog(position);
@ -154,9 +95,5 @@ public class EditTagsDialogActivity extends ListActivity {
return view;
}
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
}
}
}