diff --git a/AndroidManifest.xml b/AndroidManifest.xml index aa9d58c0a..3e4c0a86f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -77,13 +77,16 @@ + + + - + diff --git a/AndroidManifest.xml.pattern b/AndroidManifest.xml.pattern index ed928bbcf..8a9fa5bf7 100644 --- a/AndroidManifest.xml.pattern +++ b/AndroidManifest.xml.pattern @@ -77,6 +77,9 @@ + + + diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml index 5ac2cd4d3..832e1dd60 100644 --- a/assets/resources/application/en.xml +++ b/assets/resources/application/en.xml @@ -6,10 +6,21 @@ - - - - + + + + + + + + + + + + + + + diff --git a/res/layout/library_ng_tree_item.xml b/res/layout/library_ng_tree_item.xml new file mode 100644 index 000000000..f0a630e93 --- /dev/null +++ b/res/layout/library_ng_tree_item.xml @@ -0,0 +1,51 @@ + + + + + + + + + + diff --git a/src/org/geometerplus/android/fbreader/ShowLibraryAction.java b/src/org/geometerplus/android/fbreader/ShowLibraryAction.java index af4192c2c..e037822fe 100644 --- a/src/org/geometerplus/android/fbreader/ShowLibraryAction.java +++ b/src/org/geometerplus/android/fbreader/ShowLibraryAction.java @@ -27,6 +27,8 @@ import org.geometerplus.fbreader.fbreader.FBAction; import org.geometerplus.fbreader.fbreader.FBReaderApp; import org.geometerplus.fbreader.bookmodel.BookModel; +import org.geometerplus.android.fbreader.library.LibraryBaseActivity; + class ShowLibraryAction extends FBAction { private final FBReader myBaseActivity; @@ -37,9 +39,9 @@ class ShowLibraryAction extends FBAction { public void run() { final BookModel model = Reader.Model; - Intent intent = new Intent(myBaseActivity.getApplicationContext(), LibraryTabActivity.class); + Intent intent = new Intent(myBaseActivity.getApplicationContext(), LibraryBaseActivity.class); if (model != null && model.Book != null) { - intent.putExtra(LibraryTabActivity.CURRENT_BOOK_PATH_KEY, model.Book.File.getPath()); + //intent.putExtra(LibraryBaseActivity.CURRENT_BOOK_PATH_KEY, model.Book.File.getPath()); } myBaseActivity.startActivity(intent); } diff --git a/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java b/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java index afcf2a941..264d0fdd9 100644 --- a/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java +++ b/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java @@ -19,46 +19,130 @@ package org.geometerplus.android.fbreader.library; +import java.util.ArrayList; + import android.app.ListActivity; import android.os.Bundle; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; +import android.view.*; +import android.widget.*; -import org.geometerplus.fbreader.library.LibraryTree; +import org.geometerplus.zlibrary.core.resources.ZLResource; + +import org.geometerplus.fbreader.tree.FBTree; + +import org.geometerplus.zlibrary.ui.android.R; + +public class LibraryBaseActivity extends ListActivity { + private final ZLResource myResource = ZLResource.resource("libraryView"); -abstract class LibraryBaseActivity extends ListActivity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + setListAdapter(new LibraryAdapter()); + } + + @Override + public void onListItemClick(ListView listView, View view, int position, long rowId) { } private final class LibraryAdapter extends BaseAdapter { + private final ArrayList myItems = new ArrayList(); + + public LibraryAdapter() { + myItems.add(new TopLevelTree(myResource.getResource("searchResults"))); + myItems.add(new TopLevelTree(myResource.getResource("recent"))); + myItems.add(new TopLevelTree(myResource.getResource("byAuthor"))); + myItems.add(new TopLevelTree(myResource.getResource("byTag"))); + myItems.add(new TopLevelTree(myResource.getResource("fileTree"))); + } + + @Override public final int getCount() { - return 4; + return myItems.size(); } - public final LibraryTree getItem(int position) { - switch (position) { - case 0: - return null; - case 1: - return null; - case 2: - return null; - case 3: - return null; - } - return null; + @Override + public final FBTree getItem(int position) { + return myItems.get(position); } + @Override public final long getItemId(int position) { return position; } + //private ZLImage myFBReaderIcon = + // ZLAndroidLibrary.Instance().createImage(R.drawable.fbreader); + + private int myCoverWidth = -1; + private int myCoverHeight = -1; + + @Override public View getView(int position, View convertView, final ViewGroup parent) { - final LibraryTree tree = getItem(position); - return convertView;//setupNetworkTreeItemView(convertView, parent, tree); + final FBTree tree = getItem(position); + final View view = (convertView != null) ? convertView : + LayoutInflater.from(parent.getContext()).inflate(R.layout.library_ng_tree_item, parent, false); + + ((TextView)view.findViewById(R.id.library_ng_tree_item_name)).setText(tree.getName()); + ((TextView)view.findViewById(R.id.library_ng_tree_item_childrenlist)).setText(tree.getSecondString()); + + if (myCoverWidth == -1) { + view.measure(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + myCoverHeight = view.getMeasuredHeight(); + myCoverWidth = myCoverHeight * 15 / 32; + view.requestLayout(); + } + + final ImageView coverView = (ImageView)view.findViewById(R.id.library_ng_tree_item_icon); + coverView.getLayoutParams().width = myCoverWidth; + coverView.getLayoutParams().height = myCoverHeight; + coverView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + coverView.requestLayout(); + coverView.setImageResource(R.drawable.fbreader); + //setupCover(coverView, tree, myCoverWidth, myCoverWidth); + + return view; } } + + /* + private void setupCover(final ImageView coverView, FBTree tree, int width, int height) { + Bitmap coverBitmap = null; + ZLImage cover = tree.getCover(); + if (cover == null) { + cover = myFBReaderIcon; + } + if (cover != null) { + ZLAndroidImageData data = null; + final ZLAndroidImageManager mgr = (ZLAndroidImageManager) ZLAndroidImageManager.Instance(); + data = mgr.getImageData(cover); + if (data != null) { + coverBitmap = data.getBitmap(2 * width, 2 * height); + } + } + if (coverBitmap != null) { + coverView.setImageBitmap(coverBitmap); + } else { + coverView.setImageDrawable(null); + } + } + */ +} + +class TopLevelTree extends FBTree { + private final ZLResource myResource; + + public TopLevelTree(ZLResource resource) { + myResource = resource; + } + + @Override + public String getName() { + return myResource.getValue(); + } + + @Override + public String getSummary() { + return myResource.getResource("summary").getValue(); + } } diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java index ce7885610..91b464dff 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkBaseActivity.java @@ -111,15 +111,10 @@ abstract class NetworkBaseActivity extends ListActivity // this set is used to track whether this activity will be notified, when specific cover will be synchronized. private HashSet myAwaitedCovers = new HashSet(); - private ZLImage myFBReaderIcon = - ((ZLAndroidLibrary)ZLAndroidLibrary.Instance()).createImage(R.drawable.fbreader); private void setupCover(final ImageView coverView, NetworkTree tree, int width, int height) { Bitmap coverBitmap = null; ZLImage cover = tree.getCover(); - if (cover == null) { - cover = myFBReaderIcon; - } if (cover != null) { ZLAndroidImageData data = null; final ZLAndroidImageManager mgr = (ZLAndroidImageManager) ZLAndroidImageManager.Instance(); @@ -154,7 +149,7 @@ abstract class NetworkBaseActivity extends ListActivity if (coverBitmap != null) { coverView.setImageBitmap(coverBitmap); } else { - coverView.setImageDrawable(null); + coverView.setImageResource(R.drawable.fbreader); } } @@ -177,6 +172,7 @@ abstract class NetworkBaseActivity extends ListActivity final ImageView coverView = (ImageView)view.findViewById(R.id.network_tree_item_icon); coverView.getLayoutParams().width = myCoverWidth; + coverView.getLayoutParams().height = myCoverHeight; coverView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); coverView.requestLayout(); setupCover(coverView, tree, myCoverWidth, myCoverWidth);