mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-04 10:19:33 +02:00
library activity has been moved to a separate process
This commit is contained in:
parent
2b4a247c1f
commit
95c96af494
8 changed files with 33 additions and 21 deletions
|
@ -60,7 +60,7 @@
|
|||
</intent-filter>
|
||||
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
|
||||
</activity>
|
||||
<activity android:name="org.geometerplus.android.fbreader.BookSearchActivity">
|
||||
<activity android:name="org.geometerplus.android.fbreader.BookSearchActivity" android:process=":library">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEARCH" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
@ -74,7 +74,7 @@
|
|||
</intent-filter>
|
||||
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
|
||||
</activity>
|
||||
<activity android:name="org.geometerplus.android.fbreader.LibraryTabActivity" android:configChanges="orientation|keyboardHidden">
|
||||
<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.TOCActivity" android:configChanges="orientation|keyboardHidden" />
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
</intent-filter>
|
||||
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
|
||||
</activity>
|
||||
<activity android:name="org.geometerplus.android.fbreader.BookSearchActivity">
|
||||
<activity android:name="org.geometerplus.android.fbreader.BookSearchActivity" android:process=":library">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEARCH" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
@ -74,7 +74,7 @@
|
|||
</intent-filter>
|
||||
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
|
||||
</activity>
|
||||
<activity android:name="org.geometerplus.android.fbreader.LibraryTabActivity" android:configChanges="orientation|keyboardHidden">
|
||||
<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.TOCActivity" android:configChanges="orientation|keyboardHidden" />
|
||||
|
|
|
@ -189,7 +189,9 @@ public final class FBReader extends ZLAndroidActivity {
|
|||
}
|
||||
|
||||
protected ZLApplication createApplication(String fileName) {
|
||||
new SQLiteBooksDatabase();
|
||||
if (SQLiteBooksDatabase.Instance() == null) {
|
||||
new SQLiteBooksDatabase("READER");
|
||||
}
|
||||
return new FBReaderApp(fileName);
|
||||
}
|
||||
|
||||
|
|
|
@ -82,6 +82,10 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt
|
|||
|
||||
Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));
|
||||
|
||||
if (SQLiteBooksDatabase.Instance() == null) {
|
||||
new SQLiteBooksDatabase("LIBRARY");
|
||||
}
|
||||
|
||||
if (myLibrary == null) {
|
||||
myLibrary = new Library();
|
||||
}
|
||||
|
|
|
@ -39,9 +39,11 @@ import org.geometerplus.zlibrary.ui.android.library.ZLAndroidApplication;
|
|||
import org.geometerplus.fbreader.library.*;
|
||||
|
||||
final class SQLiteBooksDatabase extends BooksDatabase {
|
||||
private final String myInstanceId;
|
||||
private final SQLiteDatabase myDatabase;
|
||||
|
||||
SQLiteBooksDatabase() {
|
||||
SQLiteBooksDatabase(String instanceId) {
|
||||
myInstanceId = instanceId;
|
||||
myDatabase = ZLAndroidApplication.Instance().openOrCreateDatabase("books.db", Context.MODE_PRIVATE, null);
|
||||
migrate();
|
||||
}
|
||||
|
@ -121,6 +123,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
|
|||
}
|
||||
|
||||
protected Book loadBook(long bookId) {
|
||||
System.err.println("loading book info for " + bookId + " (" + myInstanceId + ")");
|
||||
Book book = null;
|
||||
final Cursor cursor = myDatabase.rawQuery("SELECT file_id,title,encoding,language FROM Books WHERE book_id = " + bookId, null);
|
||||
if (cursor.moveToNext()) {
|
||||
|
@ -133,6 +136,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
|
|||
}
|
||||
|
||||
protected Book loadBookByFile(long fileId, ZLFile file) {
|
||||
System.err.println("loading book info for " + file.getPath() + " (" + myInstanceId + ")");
|
||||
if (fileId == -1) {
|
||||
return null;
|
||||
}
|
||||
|
@ -170,7 +174,8 @@ final class SQLiteBooksDatabase extends BooksDatabase {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected Map<Long,Book> listBooks(FileInfoSet infos) {
|
||||
protected Map<Long,Book> loadBooks(FileInfoSet infos) {
|
||||
System.err.println("loading all books info for " + myInstanceId);
|
||||
Cursor cursor = myDatabase.rawQuery(
|
||||
"SELECT book_id,file_id,title,encoding,language FROM Books", null
|
||||
);
|
||||
|
@ -531,6 +536,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
|
|||
}
|
||||
|
||||
protected Collection<FileInfo> loadFileInfos() {
|
||||
System.err.println("loading all files info for " + myInstanceId);
|
||||
Cursor cursor = myDatabase.rawQuery(
|
||||
"SELECT file_id,name,parent_id,size FROM Files", null
|
||||
);
|
||||
|
@ -628,7 +634,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
|
|||
});
|
||||
}
|
||||
|
||||
protected List<Long> listRecentBookIds() {
|
||||
protected List<Long> loadRecentBookIds() {
|
||||
final Cursor cursor = myDatabase.rawQuery(
|
||||
"SELECT book_id FROM RecentBooks ORDER BY book_index", null
|
||||
);
|
||||
|
@ -640,7 +646,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
|
|||
return ids;
|
||||
}
|
||||
|
||||
protected List<Bookmark> listBookmarks(long bookId) {
|
||||
protected List<Bookmark> loadBookmarks(long bookId) {
|
||||
LinkedList<Bookmark> list = new LinkedList<Bookmark>();
|
||||
Cursor cursor = myDatabase.rawQuery(
|
||||
"SELECT Bookmarks.bookmark_id,Bookmarks.book_id,Books.title,Bookmarks.bookmark_text,Bookmarks.creation_time,Bookmarks.modification_time,Bookmarks.access_time,Bookmarks.access_counter,Bookmarks.model_id,Bookmarks.paragraph,Bookmarks.word,Bookmarks.char FROM Bookmarks INNER JOIN Books ON Books.book_id = Bookmarks.book_id WHERE book_id = ?", new String[] { "" + bookId }
|
||||
|
@ -665,7 +671,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
|
|||
return list;
|
||||
}
|
||||
|
||||
protected List<Bookmark> listAllBookmarks() {
|
||||
protected List<Bookmark> loadAllBookmarks() {
|
||||
LinkedList<Bookmark> list = new LinkedList<Bookmark>();
|
||||
myDatabase.execSQL("DELETE FROM Bookmarks WHERE book_id = -1");
|
||||
Cursor cursor = myDatabase.rawQuery(
|
||||
|
|
|
@ -31,7 +31,7 @@ public final class Bookmark extends ZLTextFixedPosition {
|
|||
public final static int LATEST = 3;
|
||||
|
||||
public static List<Bookmark> bookmarks() {
|
||||
return BooksDatabase.Instance().listAllBookmarks();
|
||||
return BooksDatabase.Instance().loadAllBookmarks();
|
||||
}
|
||||
|
||||
private long myId;
|
||||
|
|
|
@ -28,7 +28,7 @@ import org.geometerplus.zlibrary.text.view.ZLTextPosition;
|
|||
public abstract class BooksDatabase {
|
||||
private static BooksDatabase ourInstance;
|
||||
|
||||
static BooksDatabase Instance() {
|
||||
public static BooksDatabase Instance() {
|
||||
return ourInstance;
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ public abstract class BooksDatabase {
|
|||
protected abstract void executeAsATransaction(Runnable actions);
|
||||
|
||||
// returns map fileId -> book
|
||||
protected abstract Map<Long,Book> listBooks(FileInfoSet infos);
|
||||
protected abstract Map<Long,Book> loadBooks(FileInfoSet infos);
|
||||
protected abstract Book loadBook(long bookId);
|
||||
protected abstract Book loadBookByFile(long fileId, ZLFile file);
|
||||
|
||||
|
@ -81,15 +81,15 @@ public abstract class BooksDatabase {
|
|||
protected abstract void removeFileInfo(long fileId);
|
||||
protected abstract void saveFileInfo(FileInfo fileInfo);
|
||||
|
||||
protected abstract List<Long> listRecentBookIds();
|
||||
protected abstract List<Long> loadRecentBookIds();
|
||||
protected abstract void saveRecentBookIds(final List<Long> ids);
|
||||
|
||||
protected Bookmark createBookmark(long id, long bookId, String bookTitle, String text, Date creationDate, Date modificationDate, Date accessDate, int accessCounter, String modelId, int paragraphIndex, int wordIndex, int charIndex) {
|
||||
return new Bookmark(id, bookId, bookTitle, text, creationDate, modificationDate, accessDate, accessCounter, modelId, paragraphIndex, wordIndex, charIndex);
|
||||
}
|
||||
|
||||
protected abstract List<Bookmark> listBookmarks(long bookId);
|
||||
protected abstract List<Bookmark> listAllBookmarks();
|
||||
protected abstract List<Bookmark> loadBookmarks(long bookId);
|
||||
protected abstract List<Bookmark> loadAllBookmarks();
|
||||
protected abstract long saveBookmark(Bookmark bookmark);
|
||||
protected abstract void deleteBookmark(Bookmark bookmark);
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ public final class Library {
|
|||
|
||||
FileInfoSet fileInfos = new FileInfoSet();
|
||||
|
||||
final Map<Long,Book> savedBooks = BooksDatabase.Instance().listBooks(fileInfos);
|
||||
final Map<Long,Book> savedBooks = BooksDatabase.Instance().loadBooks(fileInfos);
|
||||
|
||||
for (ZLPhysicalFile file : physicalFilesList) {
|
||||
collectBooks(file, fileInfos, savedBooks, !fileInfos.check(file));
|
||||
|
@ -251,7 +251,7 @@ public final class Library {
|
|||
}
|
||||
|
||||
final BooksDatabase db = BooksDatabase.Instance();
|
||||
for (long id : db.listRecentBookIds()) {
|
||||
for (long id : db.loadRecentBookIds()) {
|
||||
Book book = bookById.get(id);
|
||||
if (book != null) {
|
||||
myRecentBooks.createBookSubTree(book, true);
|
||||
|
@ -295,7 +295,7 @@ public final class Library {
|
|||
}
|
||||
|
||||
public static Book getRecentBook() {
|
||||
List<Long> recentIds = BooksDatabase.Instance().listRecentBookIds();
|
||||
List<Long> recentIds = BooksDatabase.Instance().loadRecentBookIds();
|
||||
return (recentIds.size() > 0) ? Book.getById(recentIds.get(0)) : null;
|
||||
}
|
||||
|
||||
|
@ -316,7 +316,7 @@ public final class Library {
|
|||
|
||||
public static void addBookToRecentList(Book book) {
|
||||
final BooksDatabase db = BooksDatabase.Instance();
|
||||
final List<Long> ids = db.listRecentBookIds();
|
||||
final List<Long> ids = db.loadRecentBookIds();
|
||||
final Long bookId = book.getId();
|
||||
ids.remove(bookId);
|
||||
ids.add(0, bookId);
|
||||
|
@ -361,7 +361,7 @@ public final class Library {
|
|||
myLibraryByTag.removeBook(book);
|
||||
if (myRecentBooks.removeBook(book)) {
|
||||
final BooksDatabase db = BooksDatabase.Instance();
|
||||
final List<Long> ids = db.listRecentBookIds();
|
||||
final List<Long> ids = db.loadRecentBookIds();
|
||||
ids.remove(book.getId());
|
||||
db.saveRecentBookIds(ids);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue