1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-04 18:29:23 +02:00

list of cancel actions

This commit is contained in:
Nikolay Pultsin 2011-01-29 23:13:57 +00:00
parent a2bd14443e
commit b638a3f431
6 changed files with 140 additions and 19 deletions

View file

@ -154,6 +154,11 @@
<node name="search" value="Search"/>
</node>
</node>
<node name="cancelMenu">
<node name="previousBook" value="Open previous book"/>
<node name="goto" value="Go to position"/>
<node name="close" value="Close FBReader"/>
</node>
<node name="menu">
<node name="preferences" value="Settings"/>
<node name="bookInfo" value="Book info"/>

View file

@ -0,0 +1,39 @@
<?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:orientation="horizontal"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:orientation="vertical"
>
<TextView
android:id="@+id/cancel_item_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
<TextView
android:id="@+id/cancel_item_summary"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>

View file

@ -21,25 +21,76 @@ package org.geometerplus.android.fbreader;
import android.content.Intent;
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.fbreader.fbreader.FBAction;
import org.geometerplus.fbreader.fbreader.FBReaderApp;
class CancelAction extends FBAction {
private final FBReader myBaseActivity;
enum Type {
OPEN_BOOK,
GOTO,
CLOSE
}
static final class Description {
final Type Type;
final String Title;
final String Summary;
Description(Type type, String title, String summary) {
Type = type;
Title = title;
Summary = summary;
}
}
CancelAction(FBReader baseActivity, FBReaderApp fbreader) {
super(fbreader);
myBaseActivity = baseActivity;
}
private void fillDescriptionList() {
final ZLResource resource = ZLResource.resource("cancelMenu");
myBaseActivity.CancelActionsList.clear();
myBaseActivity.CancelActionsList.add(new Description(
Type.OPEN_BOOK, resource.getResource("previousBook").getValue(), "this is a summary"
));
myBaseActivity.CancelActionsList.add(new Description(
Type.GOTO, resource.getResource("goto").getValue(), "this is a summary"
));
myBaseActivity.CancelActionsList.add(new Description(
Type.GOTO, resource.getResource("goto").getValue(), "this is a summary"
));
myBaseActivity.CancelActionsList.add(new Description(
Type.GOTO, resource.getResource("goto").getValue(), "this is a summary"
));
myBaseActivity.CancelActionsList.add(new Description(
Type.CLOSE, resource.getResource("close").getValue(), null
));
}
public void run() {
if (Reader.getCurrentView() != Reader.BookTextView) {
Reader.showBookTextView();
} else {
fillDescriptionList();
if (myBaseActivity.CancelActionsList.size() == 1) {
Reader.closeWindow();
} else {
final Intent intent = new Intent();
intent.setClass(myBaseActivity, CancelActivity.class);
myBaseActivity.startActivity(intent);
//Reader.closeWindow();
intent.putExtra(CancelActivity.LIST_SIZE, myBaseActivity.CancelActionsList.size());
int index = 0;
for (Description description : myBaseActivity.CancelActionsList) {
intent.putExtra(CancelActivity.ITEM_TITLE + index, description.Title);
intent.putExtra(CancelActivity.ITEM_SUMMARY + index, description.Summary);
++index;
}
myBaseActivity.startActivityForResult(intent, FBReader.CANCEL_CODE);
}
}
}
}

View file

@ -20,25 +20,37 @@
package org.geometerplus.android.fbreader;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.widget.*;
import android.view.*;
import org.geometerplus.zlibrary.ui.android.R;
public class CancelActivity extends ListActivity {
static final String LIST_SIZE = "listSize";
static final String ITEM_TITLE = "title";
static final String ITEM_SUMMARY = "summary";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setListAdapter(new ActionListAdapter());
final ActionListAdapter adapter = new ActionListAdapter(getIntent());
setListAdapter(adapter);
getListView().setOnItemClickListener(adapter);
}
private class ActionListAdapter extends BaseAdapter implements AdapterView.OnItemClickListener {
private final Intent myIntent;
ActionListAdapter(Intent intent) {
myIntent = intent;
}
private class ActionListAdapter extends BaseAdapter {
@Override
public final int getCount() {
return 5;
return myIntent.getIntExtra(LIST_SIZE, 0);
}
@Override
@ -56,16 +68,18 @@ public class CancelActivity extends ListActivity {
final View view = convertView != null
? convertView
: LayoutInflater.from(parent.getContext()).inflate(R.layout.cancel_item, parent, false);
final TextView titleView = (TextView)view.findViewById(R.id.cancel_item_title);
final TextView summaryView = (TextView)view.findViewById(R.id.cancel_item_summary);
if (position == 0) {
titleView.setText("Open previous book");
} else if (position == getCount() - 1) {
titleView.setText("Close FBReader");
} else {
titleView.setText("Go to page");
}
((TextView)view.findViewById(R.id.cancel_item_title)).setText(
myIntent.getStringExtra(ITEM_TITLE + position)
);
((TextView)view.findViewById(R.id.cancel_item_summary)).setText(
myIntent.getStringExtra(ITEM_SUMMARY + position)
);
return view;
}
public final void onItemClick(AdapterView<?> parent, View view, int position, long id) {
setResult((int)id);
finish();
}
}
}

View file

@ -19,6 +19,7 @@
package org.geometerplus.android.fbreader;
import java.util.ArrayList;
import java.util.LinkedList;
import android.app.SearchManager;
@ -58,6 +59,7 @@ public final class FBReader extends ZLAndroidActivity {
public static final String BOOK_PATH_KEY = "BookPath";
final static int REPAINT_CODE = 1;
final static int CANCEL_CODE = 2;
private int myFullScreenFlag;
@ -252,6 +254,9 @@ public final class FBReader extends ZLAndroidActivity {
return true;
}
final ArrayList<CancelAction.Description> CancelActionsList =
new ArrayList<CancelAction.Description>(5);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
@ -270,6 +275,14 @@ public final class FBReader extends ZLAndroidActivity {
fbreader.repaintView();
break;
}
case CANCEL_CODE:
if (resultCode >= 0 && resultCode < CancelActionsList.size()) {
final CancelAction.Description description = CancelActionsList.get(resultCode);
if (description.Type == CancelAction.Type.CLOSE) {
finish();
}
}
break;
}
}

View file

@ -89,7 +89,6 @@ public class TOCActivity extends ListActivity {
}
private final class TOCAdapter extends ZLTreeAdapter {
TOCAdapter(TOCTree root) {
super(getListView(), root);
}