diff --git a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java index 367cc9a46..d470e9dc8 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java +++ b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java @@ -50,6 +50,28 @@ public class BookCollectionShadow implements IBookCollection, ServiceConnection myContext.unbindService(this); } + public synchronized int size() { + if (myInterface == null) { + return 0; + } + try { + return myInterface.size(); + } catch (RemoteException e) { + return 0; + } + } + + public synchronized Book getRecentBook(int index) { + if (myInterface == null) { + return null; + } + try { + return SerializerUtil.deserializeBook(myInterface.recentBook(index)); + } catch (RemoteException e) { + return null; + } + } + public synchronized Book getBookById(long id) { if (myInterface == null) { return null; @@ -72,7 +94,7 @@ public class BookCollectionShadow implements IBookCollection, ServiceConnection } } - public void saveBookmark(Bookmark bookmark) { + public synchronized void saveBookmark(Bookmark bookmark) { if (myInterface != null) { try { bookmark.update(SerializerUtil.deserializeBookmark( @@ -83,7 +105,7 @@ public class BookCollectionShadow implements IBookCollection, ServiceConnection } } - public void deleteBookmark(Bookmark bookmark) { + public synchronized void deleteBookmark(Bookmark bookmark) { if (myInterface != null) { try { myInterface.deleteBookmark(SerializerUtil.serialize(bookmark)); diff --git a/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl b/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl index 4ecadc158..2ce213da6 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl +++ b/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl @@ -7,7 +7,9 @@ package org.geometerplus.android.fbreader.libraryService; import java.util.List; interface LibraryInterface { + int size(); String bookById(in long id); + String recentBook(in int index); List allBookmarks(); String saveBookmark(in String bookmark); diff --git a/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java b/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java index 4fb8651f9..964736069 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java +++ b/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java @@ -69,6 +69,14 @@ public class LibraryService extends Service { myCollection.startBuild(); } + public int size() { + return myCollection.size(); + } + + public String recentBook(int index) { + return SerializerUtil.serialize(myCollection.getRecentBook(index)); + } + public String bookById(long id) { return SerializerUtil.serialize(myCollection.getBookById(id)); } diff --git a/src/org/geometerplus/fbreader/library/IBookCollection.java b/src/org/geometerplus/fbreader/library/IBookCollection.java index a7dca050c..32ff31260 100644 --- a/src/org/geometerplus/fbreader/library/IBookCollection.java +++ b/src/org/geometerplus/fbreader/library/IBookCollection.java @@ -22,7 +22,9 @@ package org.geometerplus.fbreader.library; import java.util.List; public interface IBookCollection { + int size(); Book getBookById(long id); + Book getRecentBook(int index); List allBookmarks(); void saveBookmark(Bookmark bookmark);