diff --git a/project.properties b/project.properties index d3b638c90..700a734df 100644 --- a/project.properties +++ b/project.properties @@ -8,6 +8,6 @@ # project structure. java.encoding=utf-8 -proguard.config=proguard.cfg +#proguard.config=proguard.cfg # Project target. target=android-9 diff --git a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java index 2d68dff1f..bff2495b6 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java +++ b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java @@ -149,7 +149,6 @@ public class BookCollectionShadow extends AbstractBookCollection implements Serv try { return SerializerUtil.deserializeBook(myInterface.getRecentBook(index)); } catch (RemoteException e) { - e.printStackTrace(); return null; } } diff --git a/src/org/geometerplus/fbreader/book/Book.java b/src/org/geometerplus/fbreader/book/Book.java index 31cef7053..5f8a06f14 100644 --- a/src/org/geometerplus/fbreader/book/Book.java +++ b/src/org/geometerplus/fbreader/book/Book.java @@ -69,6 +69,7 @@ public class Book { final FormatPlugin plugin = getPlugin(file); File = plugin.realBookFile(file); readMetaInfo(plugin); + myIsSaved = false; } public void reloadInfoFromFile() { @@ -79,7 +80,7 @@ public class Book { } } - private FormatPlugin getPlugin(ZLFile file) throws BookReadingException { + private static FormatPlugin getPlugin(ZLFile file) throws BookReadingException { final FormatPlugin plugin = PluginCollection.Instance().getPlugin(file); if (plugin == null) { throw new BookReadingException("pluginNotFound", file); diff --git a/src/org/geometerplus/fbreader/book/BookCollection.java b/src/org/geometerplus/fbreader/book/BookCollection.java index 0475619d5..40cfbfa2c 100644 --- a/src/org/geometerplus/fbreader/book/BookCollection.java +++ b/src/org/geometerplus/fbreader/book/BookCollection.java @@ -28,6 +28,7 @@ import org.geometerplus.zlibrary.text.view.ZLTextPosition; import org.geometerplus.fbreader.Paths; import org.geometerplus.fbreader.bookmodel.BookReadingException; +import org.geometerplus.fbreader.formats.*; public class BookCollection extends AbstractBookCollection { private final BooksDatabase myDatabase; @@ -57,6 +58,15 @@ public class BookCollection extends AbstractBookCollection { if (bookFile == null) { return null; } + final FormatPlugin plugin = PluginCollection.Instance().getPlugin(bookFile); + if (plugin == null) { + return null; + } + try { + bookFile = plugin.realBookFile(bookFile); + } catch (BookReadingException e) { + return null; + } Book book = myBooksByFile.get(bookFile); if (book != null) { @@ -92,7 +102,6 @@ public class BookCollection extends AbstractBookCollection { } saveBook(book, false); - addBook(book, false); return book; } @@ -158,8 +167,9 @@ public class BookCollection extends AbstractBookCollection { return false; } + final boolean result = book.save(myDatabase, force); addBook(book, true); - return book.save(myDatabase, force); + return result; } public void removeBook(Book book, boolean deleteFromDisk) { @@ -289,7 +299,6 @@ public class BookCollection extends AbstractBookCollection { final Book book = getBookByFile(file); if (book != null) { saveBook(book, false); - addBook(book, false); } } myFilesToRescan.clear(); @@ -394,7 +403,6 @@ public class BookCollection extends AbstractBookCollection { public void run() { for (Book book : newBooks) { saveBook(book, false); - addBook(book, false); } } });