diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 13316b832..055e70778 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -37,10 +37,6 @@
-
-
-
-
@@ -78,5 +74,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndroidManifest.xml.pattern b/AndroidManifest.xml.pattern
index 0c0a6e88d..57d548838 100644
--- a/AndroidManifest.xml.pattern
+++ b/AndroidManifest.xml.pattern
@@ -37,10 +37,6 @@
-
-
-
-
@@ -78,5 +74,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TODO.network b/TODO.network
index b0d996c59..ebd8c1a52 100644
--- a/TODO.network
+++ b/TODO.network
@@ -10,8 +10,11 @@ DONE Сделать кнопку "Остановить загрузку" для
DELAYED более низкоуровневая обраотка остновки, чтобы не нужно было ждать загрузки item'а...
DONE сделать menu item "Идет остановка загрузки"
DELAYED сделать кнопку "Остановить загрузку" в Notification'е
-** убрать иконку сетевого поиска из библиотеки --> перенести в NetworkLibrary
-** сетевой поиск (посмотреть на activity в metadata)
+DONE убрать иконку сетевого поиска из библиотеки --> перенести в NetworkLibrary
+** сетевой поиск
+ ** NetworkSearchService
+ ** модель + функционал поиска
+ ** отображение результатов
** восставление пароля (use default e-mail)
** пополнение счета в litres с помощью sms
** Focus в Authentication dialog
@@ -31,6 +34,8 @@ DONE показывать обложки для книжек с smashwords
* сделать BookInfoActivity
* возможность перечитать из файла метаинформацию для отдельной книги
+BUG: Почему в SearchActivity нигде не вызывается метод onFailure()????
+
------------------------------
DONE Синхронизировать ресурсы (русские, французские и китайские)
diff --git a/data/resources/application/en.xml b/data/resources/application/en.xml
index 8abf0e254..28bf7e8fa 100644
--- a/data/resources/application/en.xml
+++ b/data/resources/application/en.xml
@@ -12,7 +12,6 @@
-
@@ -47,6 +46,9 @@
+
+
+
diff --git a/data/resources/application/fr.xml b/data/resources/application/fr.xml
index 64b84fe2f..4ff30f6ee 100644
--- a/data/resources/application/fr.xml
+++ b/data/resources/application/fr.xml
@@ -13,7 +13,6 @@
-
@@ -48,6 +47,9 @@
+
+
+
diff --git a/data/resources/application/ru.xml b/data/resources/application/ru.xml
index 9dd9a74d2..1fff5707b 100644
--- a/data/resources/application/ru.xml
+++ b/data/resources/application/ru.xml
@@ -12,7 +12,6 @@
-
@@ -47,6 +46,9 @@
+
+
+
diff --git a/data/resources/application/zh.xml b/data/resources/application/zh.xml
index 2cd149508..53362c4db 100644
--- a/data/resources/application/zh.xml
+++ b/data/resources/application/zh.xml
@@ -12,8 +12,7 @@
-
-
+
@@ -48,6 +47,9 @@
+
+
+
diff --git a/src/org/geometerplus/android/fbreader/LibraryTabActivity.java b/src/org/geometerplus/android/fbreader/LibraryTabActivity.java
index 135bc559f..cc0661018 100644
--- a/src/org/geometerplus/android/fbreader/LibraryTabActivity.java
+++ b/src/org/geometerplus/android/fbreader/LibraryTabActivity.java
@@ -121,7 +121,6 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
addMenuItem(menu, 1, "localSearch", R.drawable.ic_menu_search);
- addMenuItem(menu, 2, "networkSearch", R.drawable.ic_menu_networksearch).setEnabled(false);
return true;
}
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java
index 47b4dbcbb..9c17cb9a8 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java
@@ -147,6 +147,7 @@ public class NetworkLibraryActivity extends ListActivity implements MenuItem.OnM
myEventListeners.clear();
requestWindowFeature(Window.FEATURE_NO_TITLE);
+ setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
myConnection = new BookDownloaderServiceConnection();
bindService(
@@ -459,12 +460,34 @@ public class NetworkLibraryActivity extends ListActivity implements MenuItem.OnM
}
+ private MenuItem addMenuItem(Menu menu, int index, String resourceKey, int iconId) {
+ final String label = myResource.getResource("menu").getResource(resourceKey).getValue();
+ final MenuItem item = menu.add(0, index, Menu.NONE, label);
+ item.setOnMenuItemClickListener(this);
+ item.setIcon(iconId);
+ return item;
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- return super.onCreateOptionsMenu(menu);
+ super.onCreateOptionsMenu(menu);
+ addMenuItem(menu, 1, "networkSearch", R.drawable.ic_menu_networksearch);
+ return true;
}
public boolean onMenuItemClick(MenuItem item) {
+ switch (item.getItemId()) {
+ case 1:
+ return onSearchRequested();
+ default:
+ return true;
+ }
+ }
+
+ @Override
+ public boolean onSearchRequested() {
+ final NetworkLibrary library = NetworkLibrary.Instance();
+ startSearch(library.NetworkSearchPatternOption.getValue(), true, null, false);
return true;
}
}
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkSearchActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkSearchActivity.java
new file mode 100644
index 000000000..af0eae08c
--- /dev/null
+++ b/src/org/geometerplus/android/fbreader/network/NetworkSearchActivity.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2010 Geometer Plus
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+package org.geometerplus.android.fbreader.network;
+
+import android.os.*;
+import android.app.*;
+import android.content.Intent;
+
+import org.geometerplus.fbreader.network.NetworkLibrary;
+
+
+public class NetworkSearchActivity extends Activity {
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));
+
+ final Intent intent = getIntent();
+ if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
+ final String pattern = intent.getStringExtra(SearchManager.QUERY);
+ }
+ finish();
+ }
+
+
+ protected boolean runSearch(final String pattern) {
+ final NetworkLibrary library = NetworkLibrary.Instance();
+ library.NetworkSearchPatternOption.setValue(pattern);
+ // run search
+ return true; // return error status
+ }
+
+ protected Activity getParentActivity() {
+ return NetworkLibraryActivity.Instance;
+ }
+}
diff --git a/src/org/geometerplus/fbreader/network/NetworkLibrary.java b/src/org/geometerplus/fbreader/network/NetworkLibrary.java
index f66a2f182..5eb3303e8 100644
--- a/src/org/geometerplus/fbreader/network/NetworkLibrary.java
+++ b/src/org/geometerplus/fbreader/network/NetworkLibrary.java
@@ -24,6 +24,7 @@ import java.util.*;
import org.geometerplus.zlibrary.core.filesystem.*;
import org.geometerplus.zlibrary.core.util.ZLNetworkUtil;
+import org.geometerplus.zlibrary.core.options.ZLStringOption;
import org.geometerplus.fbreader.tree.FBTree;
import org.geometerplus.fbreader.network.tree.*;
@@ -39,6 +40,8 @@ public class NetworkLibrary {
return ourInstance;
}
+ public final ZLStringOption NetworkSearchPatternOption = new ZLStringOption("NetworkSearch", "Pattern", "");
+
private final ArrayList myLinks = new ArrayList();
private final RootTree myRootTree = new RootTree();