diff --git a/src/org/geometerplus/android/fbreader/library/LibraryActivity.java b/src/org/geometerplus/android/fbreader/library/LibraryActivity.java index b48cc3cac..e47321025 100644 --- a/src/org/geometerplus/android/fbreader/library/LibraryActivity.java +++ b/src/org/geometerplus/android/fbreader/library/LibraryActivity.java @@ -68,11 +68,6 @@ public class LibraryActivity extends BaseActivity implements MenuItem.OnMenuItem startService(new Intent(getApplicationContext(), InitializationService.class)); } - final FBTree.Key key = (FBTree.Key)getIntent().getSerializableExtra(TREE_KEY_KEY); - setCurrentTree(getTreeByKey(key)); - - setTitle(getCurrentTree().getTreeTitle()); - final String selectedBookPath = getIntent().getStringExtra(SELECTED_BOOK_PATH_KEY); mySelectedBook = null; if (selectedBookPath != null) { @@ -82,8 +77,9 @@ public class LibraryActivity extends BaseActivity implements MenuItem.OnMenuItem } } - final ListAdapter adapter = new LibraryListAdapter(this, getCurrentTree().subTrees()); - setSelection(adapter.getIndex(adapter.getFirstSelectedItem())); + final ListAdapter adapter = new LibraryListAdapter(this); + init(getIntent()); + getListView().setTextFilterEnabled(true); getListView().setOnCreateContextMenuListener(this); diff --git a/src/org/geometerplus/android/fbreader/library/LibraryListAdapter.java b/src/org/geometerplus/android/fbreader/library/LibraryListAdapter.java index e91a136bf..08259268d 100644 --- a/src/org/geometerplus/android/fbreader/library/LibraryListAdapter.java +++ b/src/org/geometerplus/android/fbreader/library/LibraryListAdapter.java @@ -33,15 +33,14 @@ import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData; import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager; import org.geometerplus.zlibrary.ui.android.R; -import org.geometerplus.fbreader.tree.FBTree; import org.geometerplus.fbreader.library.*; import org.geometerplus.android.fbreader.tree.BaseActivity; import org.geometerplus.android.fbreader.tree.ListAdapter; class LibraryListAdapter extends ListAdapter { - LibraryListAdapter(BaseActivity activity, List items) { - super(activity, items); + LibraryListAdapter(BaseActivity activity) { + super(activity); } private Bitmap getCoverBitmap(ZLImage cover) { @@ -88,18 +87,18 @@ class LibraryListAdapter extends ListAdapter { return coverView; } - private View createView(View convertView, ViewGroup parent, FBTree item) { + private View createView(View convertView, ViewGroup parent, LibraryTree tree) { final View view = (convertView != null) ? convertView : LayoutInflater.from(parent.getContext()).inflate(R.layout.library_tree_item, parent, false); - ((TextView)view.findViewById(R.id.library_tree_item_name)).setText(item.getName()); - ((TextView)view.findViewById(R.id.library_tree_item_childrenlist)).setText(item.getSecondString()); + ((TextView)view.findViewById(R.id.library_tree_item_name)).setText(tree.getName()); + ((TextView)view.findViewById(R.id.library_tree_item_childrenlist)).setText(tree.getSecondString()); return view; } @Override public View getView(int position, View convertView, final ViewGroup parent) { - final FBTree tree = getItem(position); + final LibraryTree tree = (LibraryTree)getItem(position); final View view = createView(convertView, parent, tree); if (getActivity().isTreeSelected(tree)) { view.setBackgroundColor(0xff555555); @@ -118,8 +117,8 @@ class LibraryListAdapter extends ListAdapter { return view; } - private int getCoverResourceId(FBTree tree) { - if (((LibraryTree)tree).getBook() != null) { + private int getCoverResourceId(LibraryTree tree) { + if (tree.getBook() != null) { return R.drawable.ic_list_library_book; } else if (tree instanceof FirstLevelTree) { final String id = tree.getUniqueKey().Id; diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java index 8c59ef4df..22ac125f2 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java @@ -66,12 +66,6 @@ public class NetworkBaseActivity extends BaseActivity implements NetworkView.Eve private volatile boolean myInProgress; - @Override - protected FBTree getTreeByKey(FBTree.Key key) { - final NetworkLibrary library = NetworkLibrary.Instance(); - return key != null ? library.getTreeByKey(key) : library.getRootTree(); - } - @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -89,13 +83,8 @@ public class NetworkBaseActivity extends BaseActivity implements NetworkView.Eve BIND_AUTO_CREATE ); - NetworkTree tree = Util.getTreeFromIntent(getIntent()); - if (tree == null) { - tree = NetworkLibrary.Instance().getRootTree(); - } - setCurrentTree(tree); - setListAdapter(new NetworkLibraryAdapter(this, tree.subTrees())); - setTitle(tree.getTreeTitle()); + setListAdapter(new NetworkLibraryAdapter(this)); + init(getIntent()); setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); @@ -104,6 +93,12 @@ public class NetworkBaseActivity extends BaseActivity implements NetworkView.Eve setProgressBarIndeterminateVisibility(myInProgress); } + @Override + protected FBTree getTreeByKey(FBTree.Key key) { + final NetworkLibrary library = NetworkLibrary.Instance(); + return key != null ? library.getTreeByKey(key) : library.getRootTree(); + } + @Override protected void onStart() { super.onStart(); diff --git a/src/org/geometerplus/android/fbreader/network/NetworkLibraryAdapter.java b/src/org/geometerplus/android/fbreader/network/NetworkLibraryAdapter.java index 3df53b09a..da689307d 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkLibraryAdapter.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkLibraryAdapter.java @@ -34,15 +34,14 @@ import org.geometerplus.zlibrary.core.image.ZLLoadableImage; import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager; import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData; -import org.geometerplus.fbreader.tree.FBTree; import org.geometerplus.fbreader.network.NetworkTree; import org.geometerplus.fbreader.network.tree.*; import org.geometerplus.android.fbreader.tree.ListAdapter; class NetworkLibraryAdapter extends ListAdapter { - NetworkLibraryAdapter(NetworkBaseActivity activity, List items) { - super(activity, items); + NetworkLibraryAdapter(NetworkBaseActivity activity) { + super(activity); } private int myCoverWidth = -1; diff --git a/src/org/geometerplus/android/fbreader/tree/BaseActivity.java b/src/org/geometerplus/android/fbreader/tree/BaseActivity.java index 05015d72b..90e8a6175 100644 --- a/src/org/geometerplus/android/fbreader/tree/BaseActivity.java +++ b/src/org/geometerplus/android/fbreader/tree/BaseActivity.java @@ -52,10 +52,6 @@ public abstract class BaseActivity extends ListActivity { return myCurrentTree; } - protected void setCurrentTree(FBTree tree) { - myCurrentTree = tree; - } - public abstract boolean isTreeSelected(FBTree tree); protected boolean OLD_STYLE_FLAG = false; @@ -113,20 +109,24 @@ public abstract class BaseActivity extends ListActivity { @Override protected void onNewIntent(Intent intent) { if (OPEN_TREE_ACTION.equals(intent.getAction())) { - final FBTree.Key key = (FBTree.Key)intent.getSerializableExtra(TREE_KEY_KEY); - final FBTree.Key selectedKey = (FBTree.Key)intent.getSerializableExtra(SELECTED_TREE_KEY_KEY); - myCurrentTree = getTreeByKey(key); - final ListAdapter adapter = getListAdapter(); - adapter.replaceAll(myCurrentTree.subTrees()); - setTitle(myCurrentTree.getTreeTitle()); - final FBTree selectedTree = - selectedKey != null ? getTreeByKey(selectedKey) : adapter.getFirstSelectedItem(); - setSelection(adapter.getIndex(selectedTree)); + init(intent); } else { super.onNewIntent(intent); } } + protected void init(Intent intent) { + final FBTree.Key key = (FBTree.Key)intent.getSerializableExtra(TREE_KEY_KEY); + final FBTree.Key selectedKey = (FBTree.Key)intent.getSerializableExtra(SELECTED_TREE_KEY_KEY); + myCurrentTree = getTreeByKey(key); + final ListAdapter adapter = getListAdapter(); + adapter.replaceAll(myCurrentTree.subTrees()); + setTitle(myCurrentTree.getTreeTitle()); + final FBTree selectedTree = + selectedKey != null ? getTreeByKey(selectedKey) : adapter.getFirstSelectedItem(); + setSelection(adapter.getIndex(selectedTree)); + } + private void openTreeInternal(FBTree tree, FBTree treeToSelect) { switch (tree.getOpeningStatus()) { case READY_TO_OPEN: diff --git a/src/org/geometerplus/android/fbreader/tree/ListAdapter.java b/src/org/geometerplus/android/fbreader/tree/ListAdapter.java index e4e46bb0b..f31a60f5f 100644 --- a/src/org/geometerplus/android/fbreader/tree/ListAdapter.java +++ b/src/org/geometerplus/android/fbreader/tree/ListAdapter.java @@ -29,9 +29,9 @@ public abstract class ListAdapter extends BaseAdapter { private final BaseActivity myActivity; private final List myItems; - protected ListAdapter(BaseActivity activity, List items) { + protected ListAdapter(BaseActivity activity) { myActivity = activity; - myItems = Collections.synchronizedList(new ArrayList(items)); + myItems = Collections.synchronizedList(new ArrayList()); activity.setListAdapter(this); }