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

Merge branch 'master' into file-manager

Conflicts:
	src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java
This commit is contained in:
Nikolay Pultsin 2010-12-15 17:43:02 +03:00
commit 829c475bf4
3 changed files with 90 additions and 39 deletions

View file

@ -9,7 +9,7 @@ DONE Search
* Show wait message during search
* File view
DONE Activity caption
* Book deleting
DONE Book deleting
* Show book info activity instead of immediate opening/menu
* Main menu
DONE Context menu

View file

@ -213,103 +213,103 @@
<node name="rightIndent" value="Отступ справа"/>
<node name="more" value="Другие стили">
<node name="summary" value="Отдельные настройки для заголовков, эпиграфов, и т.д."/>
<node name="Regular Paragraph" value="обычного текста">
<node name="Regular Paragraph" value="Обычный текст">
<node name="summary" value=""/>
</node>
<node name="Title" value="заголовка">
<node name="Title" value="Заголовок">
<node name="summary" value=""/>
</node>
<node name="Section Title" value="названия главы">
<node name="Section Title" value="Название главы">
<node name="summary" value=""/>
</node>
<node name="Poem Title" value="названия стихотворения">
<node name="Poem Title" value="Название стихотворения">
<node name="summary" value=""/>
</node>
<node name="Subtitle" value="подзаголовка">
<node name="Subtitle" value="Подзаголовок">
<node name="summary" value=""/>
</node>
<node name="Annotation" value="аннотации">
<node name="Annotation" value="Аннотация">
<node name="summary" value=""/>
</node>
<node name="Epigraph" value="эпиграфа">
<node name="Epigraph" value="Эпиграф">
<node name="summary" value=""/>
</node>
<node name="Stanza" value="строфы">
<node name="Stanza" value="Строфа">
<node name="summary" value=""/>
</node>
<node name="Verse" value="стихов">
<node name="Verse" value="Стихи">
<node name="summary" value=""/>
</node>
<node name="Preformatted text" value="текста внутри &lt;pre&gt;">
<node name="Preformatted text" value="Текст внутри &lt;pre&gt;">
<node name="summary" value=""/>
</node>
<node name="Image" value="рисунка">
<node name="Image" value="Рисунок">
<node name="summary" value=""/>
</node>
<node name="Cite" value="цитаты">
<node name="Cite" value="Цитата">
<node name="summary" value=""/>
</node>
<node name="Author" value="имени автора">
<node name="Author" value="Имя автора">
<node name="summary" value=""/>
</node>
<node name="Date" value="даты">
<node name="Date" value="Дата">
<node name="summary" value=""/>
</node>
<node name="Internal Hyperlink" value="ссылки">
<node name="Internal Hyperlink" value="Ссылка">
<node name="summary" value=""/>
</node>
<node name="Footnote" value="сноски">
<node name="Footnote" value="Сноска">
<node name="summary" value=""/>
</node>
<node name="Emphasis" value="выделения (emphasis)">
<node name="Emphasis" value="Выделение (emphasis)">
<node name="summary" value=""/>
</node>
<node name="Strong" value="выделения (strong)">
<node name="Strong" value="Выделение (strong)">
<node name="summary" value=""/>
</node>
<node name="Subscript" value="нижнего индекса">
<node name="Subscript" value="Нижний индекс">
<node name="summary" value=""/>
</node>
<node name="Superscript" value="верхнего индекса">
<node name="Superscript" value="Верхний индекс">
<node name="summary" value=""/>
</node>
<node name="Code" value="текста программы">
<node name="Code" value="Текст программы">
<node name="summary" value=""/>
</node>
<node name="StrikeThrough" value="зачеркнутого текста">
<node name="StrikeThrough" value="Зачеркнутый текст">
<node name="summary" value=""/>
</node>
<node name="Italic" value="курсива">
<node name="Italic" value="Курсив">
<node name="summary" value=""/>
</node>
<node name="Bold" value="жирного текста">
<node name="Bold" value="Жирный текст">
<node name="summary" value=""/>
</node>
<node name="Definition" value="определения">
<node name="Definition" value="Определение">
<node name="summary" value=""/>
</node>
<node name="Definition Description" value="текста определения">
<node name="Definition Description" value="Текст определения">
<node name="summary" value=""/>
</node>
<node name="Header 1" value="текста внутри &lt;h1&gt;">
<node name="Header 1" value="Текст внутри &lt;h1&gt;">
<node name="summary" value=""/>
</node>
<node name="Header 2" value="текста внутри &lt;h2&gt;">
<node name="Header 2" value="Текст внутри &lt;h2&gt;">
<node name="summary" value=""/>
</node>
<node name="Header 3" value="текста внутри &lt;h3&gt;">
<node name="Header 3" value="Текст внутри &lt;h3&gt;">
<node name="summary" value=""/>
</node>
<node name="Header 4" value="текста внутри &lt;h4&gt;">
<node name="Header 4" value="Текст внутри &lt;h4&gt;">
<node name="summary" value=""/>
</node>
<node name="Header 5" value="текста внутри &lt;h5&gt;">
<node name="Header 5" value="Текст внутри &lt;h5&gt;">
<node name="summary" value=""/>
</node>
<node name="Header 6" value="текста внутри &lt;h6&gt;">
<node name="Header 6" value="Текст внутри &lt;h6&gt;">
<node name="summary" value=""/>
</node>
<node name="External Hyperlink" value="внешней ссылки">
<node name="External Hyperlink" value="Внешняя ссылка">
<node name="summary" value=""/>
</node>
</node>

View file

@ -22,6 +22,7 @@ package org.geometerplus.android.fbreader.library;
import java.util.List;
import android.app.*;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
@ -65,13 +66,26 @@ abstract class LibraryBaseActivity extends ListActivity {
protected final ZLResource myResource = ZLResource.resource("libraryView");
protected String mySelectedBookPath;
private static int CHILD_LIST_REQUEST = 0;
private static int RESULT_DONT_INVALIDATE_VIEWS = 0;
private static int RESULT_INVALIDATE_VIEWS = 1;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setResult(RESULT_DONT_INVALIDATE_VIEWS);
Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));
mySelectedBookPath = getIntent().getStringExtra(SELECTED_BOOK_PATH_KEY);
}
@Override
protected void onActivityResult(int requestCode, int returnCode, Intent intent) {
if (requestCode == CHILD_LIST_REQUEST && returnCode == RESULT_INVALIDATE_VIEWS) {
getListView().invalidateViews();
setResult(RESULT_INVALIDATE_VIEWS);
}
}
@Override
public boolean onSearchRequested() {
startSearch(BookSearchPatternOption.getValue(), true, null, false);
@ -221,26 +235,62 @@ abstract class LibraryBaseActivity extends ListActivity {
final int position = ((AdapterView.AdapterContextMenuInfo)item.getMenuInfo()).position;
final FBTree tree = ((LibraryAdapter)getListAdapter()).getItem(position);
if (tree instanceof BookTree) {
final BookTree bookTree = (BookTree)tree;
final Book book = ((BookTree)tree).Book;
switch (item.getItemId()) {
case OPEN_BOOK_ITEM_ID:
openBook(bookTree.Book);
openBook(book);
return true;
case ADD_TO_FAVORITES_ITEM_ID:
<<<<<<< HEAD
LibraryInstance.addBookToFavorites(bookTree.Book);
return true;
case REMOVE_FROM_FAVORITES_ITEM_ID:
LibraryInstance.removeBookFromFavorites(bookTree.Book);
=======
Library.addBookToFavorites(book);
return true;
case REMOVE_FROM_FAVORITES_ITEM_ID:
Library.removeBookFromFavorites(book);
>>>>>>> master
getListView().invalidateViews();
return true;
case DELETE_BOOK_ITEM_ID:
// TODO: implement
tryToDeleteBook(book);
return true;
}
}
return super.onContextItemSelected(item);
}
private class BookDeleter implements DialogInterface.OnClickListener {
private final Book myBook;
private final int myMode;
BookDeleter(Book book, int removeMode) {
myBook = book;
myMode = removeMode;
}
public void onClick(DialogInterface dialog, int which) {
Library.removeBook(myBook, myMode);
getListView().invalidateViews();
setResult(RESULT_INVALIDATE_VIEWS);
}
}
private void tryToDeleteBook(Book book) {
final ZLResource dialogResource = ZLResource.resource("dialog");
final ZLResource buttonResource = dialogResource.getResource("button");
final ZLResource boxResource = dialogResource.getResource("deleteBookBox");
new AlertDialog.Builder(this)
.setTitle(book.getTitle())
.setMessage(boxResource.getResource("message").getValue())
.setIcon(0)
.setPositiveButton(buttonResource.getResource("yes").getValue(), new BookDeleter(book, Library.REMOVE_FROM_DISK))
.setNegativeButton(buttonResource.getResource("no").getValue(), null)
.create().show();
}
protected class OpenTreeRunnable implements Runnable {
private final String myTreePath;
private final String myParameter;
@ -259,11 +309,12 @@ abstract class LibraryBaseActivity extends ListActivity {
public void run() {
final Runnable postRunnable = new Runnable() {
public void run() {
startActivity(
startActivityForResult(
new Intent(LibraryBaseActivity.this, LibraryTreeActivity.class)
.putExtra(SELECTED_BOOK_PATH_KEY, mySelectedBookPath)
.putExtra(TREE_PATH_KEY, myTreePath)
.putExtra(PARAMETER_KEY, myParameter)
.putExtra(PARAMETER_KEY, myParameter),
CHILD_LIST_REQUEST
);
}
};