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:
parent
b1f26805e0
commit
a2f799f29b
7 changed files with 183 additions and 33 deletions
|
@ -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" />
|
||||
|
|
|
@ -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" />
|
||||
|
|
|
@ -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>
|
||||
|
|
51
res/layout/library_ng_tree_item.xml
Normal file
51
res/layout/library_ng_tree_item.xml
Normal 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>
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue