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

Library.Instance() is back, separate activity for library search

This commit is contained in:
Nikolay Pultsin 2011-09-29 10:44:19 +01:00
parent f7408cadff
commit 7fec42eecb
6 changed files with 30 additions and 21 deletions

View file

@ -76,12 +76,15 @@
<activity android:name="org.geometerplus.android.fbreader.image.ImageViewActivity" android:process=":imageView" android:configChanges="orientation|keyboardHidden"/> <activity android:name="org.geometerplus.android.fbreader.image.ImageViewActivity" android:process=":imageView" android:configChanges="orientation|keyboardHidden"/>
<activity android:name="org.geometerplus.android.fbreader.library.BookInfoActivity" android:configChanges="orientation|keyboardHidden" android:process=":library"/> <activity android:name="org.geometerplus.android.fbreader.library.BookInfoActivity" android:configChanges="orientation|keyboardHidden" android:process=":library"/>
<receiver android:name="org.geometerplus.android.fbreader.library.KillerCallback" android:process=":library" /> <receiver android:name="org.geometerplus.android.fbreader.library.KillerCallback" android:process=":library" />
<activity android:name="org.geometerplus.android.fbreader.library.LibraryActivity" android:launchMode="singleTask" android:process=":library" android:configChanges="orientation|keyboardHidden"> <activity android:name="org.geometerplus.android.fbreader.library.LibrarySearchActivity" android:process=":library" android:theme="@android:style/Theme.NoDisplay">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEARCH" /> <action android:name="android.intent.action.SEARCH" />
</intent-filter> </intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
</activity> </activity>
<activity android:name="org.geometerplus.android.fbreader.library.LibraryActivity" android:launchMode="singleTask" android:process=":library" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.library.LibrarySearchActivity" />
</activity>
<activity android:name="org.geometerplus.android.fbreader.TOCActivity" android:configChanges="orientation|keyboardHidden" /> <activity android:name="org.geometerplus.android.fbreader.TOCActivity" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.BookmarksActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden"> <activity android:name="org.geometerplus.android.fbreader.BookmarksActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden">
<intent-filter> <intent-filter>

View file

@ -76,12 +76,15 @@
<activity android:name="org.geometerplus.android.fbreader.image.ImageViewActivity" android:process=":imageView" android:configChanges="orientation|keyboardHidden"/> <activity android:name="org.geometerplus.android.fbreader.image.ImageViewActivity" android:process=":imageView" android:configChanges="orientation|keyboardHidden"/>
<activity android:name="org.geometerplus.android.fbreader.library.BookInfoActivity" android:configChanges="orientation|keyboardHidden" android:process=":library"/> <activity android:name="org.geometerplus.android.fbreader.library.BookInfoActivity" android:configChanges="orientation|keyboardHidden" android:process=":library"/>
<receiver android:name="org.geometerplus.android.fbreader.library.KillerCallback" android:process=":library" /> <receiver android:name="org.geometerplus.android.fbreader.library.KillerCallback" android:process=":library" />
<activity android:name="org.geometerplus.android.fbreader.library.LibraryActivity" android:launchMode="singleTask" android:process=":library" android:configChanges="orientation|keyboardHidden"> <activity android:name="org.geometerplus.android.fbreader.library.LibrarySearchActivity" android:process=":library" android:theme="@android:style/Theme.NoDisplay">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEARCH" /> <action android:name="android.intent.action.SEARCH" />
</intent-filter> </intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
</activity> </activity>
<activity android:name="org.geometerplus.android.fbreader.library.LibraryActivity" android:launchMode="singleTask" android:process=":library" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable" android:value="org.geometerplus.android.fbreader.library.LibrarySearchActivity" />
</activity>
<activity android:name="org.geometerplus.android.fbreader.TOCActivity" android:configChanges="orientation|keyboardHidden" /> <activity android:name="org.geometerplus.android.fbreader.TOCActivity" android:configChanges="orientation|keyboardHidden" />
<activity android:name="org.geometerplus.android.fbreader.BookmarksActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden"> <activity android:name="org.geometerplus.android.fbreader.BookmarksActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden">
<intent-filter> <intent-filter>

View file

@ -1,5 +1,6 @@
Romanian string Romanian string
'FBReader is not installed' message in litres plugin 'FBReader is not installed' message in litres plugin
do we cache cover images?
states: states:
A registered, logged in A registered, logged in

View file

@ -519,8 +519,8 @@
<node name="summaryOff" value="Кнопки увеличения/уменьшения звука работают как обычно"/> <node name="summaryOff" value="Кнопки увеличения/уменьшения звука работают как обычно"/>
</node> </node>
<node name="invertVolumeKeys" value="Перелистывать кнопками в обратную сторону"> <node name="invertVolumeKeys" value="Перелистывать кнопками в обратную сторону">
<node name="summaryOn" value="Нижняя кнопка листает страницу вперед"/> <node name="summaryOn" value="Верхняя кнопка листает страницу вперед"/>
<node name="summaryOff" value="Верхняя кнопка листает страницу вперед"/> <node name="summaryOff" value="Нижняя кнопка листает страницу вперед"/>
</node> </node>
<node name="animation" value="Анимация"> <node name="animation" value="Анимация">
<node name="none" value="Выключить анимацию"/> <node name="none" value="Выключить анимацию"/>

View file

@ -19,7 +19,6 @@
package org.geometerplus.android.fbreader.library; package org.geometerplus.android.fbreader.library;
import android.app.SearchManager;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.Intent; import android.content.Intent;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -58,7 +57,7 @@ public class LibraryActivity extends TreeActivity implements MenuItem.OnMenuItem
myDatabase = new SQLiteBooksDatabase(this, "LIBRARY"); myDatabase = new SQLiteBooksDatabase(this, "LIBRARY");
} }
if (myLibrary == null) { if (myLibrary == null) {
myLibrary = new Library(); myLibrary = Library.Instance();
myLibrary.addChangeListener(this); myLibrary.addChangeListener(this);
myLibrary.startBuild(); myLibrary.startBuild();
} }
@ -140,19 +139,6 @@ public class LibraryActivity extends TreeActivity implements MenuItem.OnMenuItem
static final ZLStringOption BookSearchPatternOption = static final ZLStringOption BookSearchPatternOption =
new ZLStringOption("BookSearch", "Pattern", ""); new ZLStringOption("BookSearch", "Pattern", "");
@Override
protected void onNewIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
final String pattern = intent.getStringExtra(SearchManager.QUERY);
if (pattern != null && pattern.length() > 0) {
BookSearchPatternOption.setValue(pattern);
myLibrary.startBookSearch(pattern);
}
} else {
super.onNewIntent(intent);
}
}
private void openSearchResults() { private void openSearchResults() {
final FBTree tree = myLibrary.getRootTree().getSubTree(Library.ROOT_SEARCH_RESULTS); final FBTree tree = myLibrary.getRootTree().getSubTree(Library.ROOT_SEARCH_RESULTS);
if (tree != null) { if (tree != null) {

View file

@ -54,6 +54,14 @@ public final class Library {
public static final String ROOT_BY_TAG = "byTag"; public static final String ROOT_BY_TAG = "byTag";
public static final String ROOT_FILE_TREE = "fileTree"; public static final String ROOT_FILE_TREE = "fileTree";
private static Library ourInstance;
public static Library Instance() {
if (ourInstance == null) {
ourInstance = new Library();
}
return ourInstance;
}
public static ZLResource resource() { public static ZLResource resource() {
return ZLResource.resource("library"); return ZLResource.resource("library");
} }
@ -73,7 +81,7 @@ public final class Library {
fireModelChangedEvent(ChangeListener.Code.StatusChanged); fireModelChangedEvent(ChangeListener.Code.StatusChanged);
} }
public Library() { private Library() {
new FavoritesTree(myRootTree, ROOT_FAVORITES); new FavoritesTree(myRootTree, ROOT_FAVORITES);
new FirstLevelTree(myRootTree, ROOT_RECENT); new FirstLevelTree(myRootTree, ROOT_RECENT);
new FirstLevelTree(myRootTree, ROOT_BY_AUTHOR); new FirstLevelTree(myRootTree, ROOT_BY_AUTHOR);
@ -420,7 +428,15 @@ public final class Library {
db.setExistingFlag(newBooks, true); db.setExistingFlag(newBooks, true);
} }
public void startBuild() { private volatile boolean myBuildStarted = false;
public synchronized void startBuild() {
if (myBuildStarted) {
fireModelChangedEvent(ChangeListener.Code.StatusChanged);
return;
}
myBuildStarted = true;
setStatus(myStatusMask | STATUS_LOADING); setStatus(myStatusMask | STATUS_LOADING);
final Thread builder = new Thread("Library.build") { final Thread builder = new Thread("Library.build") {
public void run() { public void run() {