1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 19:42:17 +02:00

NG library view (in progress)

This commit is contained in:
Nikolay Pultsin 2010-11-21 15:45:09 +00:00
parent b1f26805e0
commit a2f799f29b
7 changed files with 183 additions and 33 deletions

View file

@ -77,13 +77,16 @@
<activity android:name="org.geometerplus.android.fbreader.LibraryTabActivity" android:process=":library" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.BookSearchActivity" />
</activity>
<activity android:name="org.geometerplus.android.fbreader.library.LibraryBaseActivity" android:process=":library" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.BookSearchActivity" />
</activity>
<activity android:name="org.geometerplus.android.fbreader.TOCActivity" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.BookmarksActivity" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.BookmarkSearchActivity" />
</activity>
<activity android:name="org.geometerplus.android.fbreader.BookmarkEditActivity" android:theme="@android:style/Theme.Dialog" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.preferences.PreferenceActivity" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.preferences.BookInfoActivity" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.preferences.BookInfoActivity" android:process=":library" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.network.BookDownloader" android:process=":bookDownloader" android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
<action android:name="android.intent.action.VIEW" />

View file

@ -77,6 +77,9 @@
<activity android:name="org.geometerplus.android.fbreader.LibraryTabActivity" android:process=":library" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.BookSearchActivity" />
</activity>
<activity android:name="org.geometerplus.android.fbreader.library.LibraryBaseActivity" android:process=":library" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.BookSearchActivity" />
</activity>
<activity android:name="org.geometerplus.android.fbreader.TOCActivity" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.BookmarksActivity" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.BookmarkSearchActivity" />

View file

@ -6,10 +6,21 @@
<node name="demo" value="sample"/>
</node>
<node name="libraryView">
<node name="byAuthor" value="By author"/>
<node name="byTag" value="By tag"/>
<node name="recent" value="Recent"/>
<node name="searchResults" value="Found"/>
<node name="byAuthor" value="By author">
<node name="summary" value="Books sorted by author"/>
</node>
<node name="byTag" value="By tag">
<node name="summary" value="Books sorted by tag"/>
</node>
<node name="recent" value="Recent">
<node name="summary" value="Recently opened books"/>
</node>
<node name="searchResults" value="Found">
<node name="summary" value="Search results for: %s"/>
</node>
<node name="fileTree" value="File tree">
<node name="summary" value="Browse file system"/>
</node>
<node name="menu">
<node name="localSearch" value="Local search"/>
</node>

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingLeft="5dip"
android:orientation="horizontal"
android:gravity="top|left"
>
<ImageView
android:id="@+id/library_ng_tree_item_icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:adjustViewBounds="false"
/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="6dp"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:orientation="vertical"
>
<TextView
android:id="@+id/library_ng_tree_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
<TextView
android:id="@+id/library_ng_tree_item_childrenlist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_below="@id/library_ng_tree_item_name"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>

View file

@ -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);
}

View file

@ -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<TopLevelTree> myItems = new ArrayList<TopLevelTree>();
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();
}
}

View file

@ -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<String> myAwaitedCovers = new HashSet<String>();
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);