Added class (Keyword/Title/Author/Subject/Series) spinner to search activity.
authorkenstir <kenstir@gmail.com>
Mon, 6 Jan 2014 01:31:54 +0000 (20:31 -0500)
committerkenstir <kenstir@gmail.com>
Mon, 6 Jan 2014 01:31:54 +0000 (20:31 -0500)
Open-ILS/src/Android/core/res/layout-land/search_result_list.xml
Open-ILS/src/Android/core/res/layout/search_result_list.xml
Open-ILS/src/Android/core/res/menu/menu_search.xml
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/AdvancedSearchActivity.java
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SampleUnderlinesNoFade.java
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalog.java
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalogListView.java

index 9ae05b0..e0f3c7a 100644 (file)
                 android:singleLine="true"
                 android:layout_weight="1"/>
 
-    </LinearLayout>
-
-    <LinearLayout
-            android:id="@+id/search_spinner_container"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_below="@id/search_text_container">
+        <Spinner
+                android:id="@+id/search_class_spinner"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="right"
+                android:entries="@array/advanced_search_index"/>
 
         <Spinner
                 android:id="@+id/chose_organisation"
 
     </LinearLayout>
 
-    <!--
-    <LinearLayout
-            android:id="@+id/search_preference_options"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:layout_below="@id/header"
-            android:layout_centerHorizontal="true"
-            android:background="@drawable/background_grey_image"
-            android:gravity="center"
-            >
-    </LinearLayout>
-    -->
-
     <LinearLayout android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:id="@+id/search_text"
-                  android:layout_below="@id/search_spinner_container"
+                  android:layout_below="@id/search_text_container"
             >
         <TextView
                 android:id="@+id/search_result_number"
index b27f074..3f8c534 100644 (file)
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:background="@drawable/background_grey_image"
         >
 
     <LinearLayout
             android:id="@+id/search_text_container"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:focusable="true"
             android:focusableInTouchMode="true"
             android:layout_marginTop="4dip"
             >
 
-        <EditText
-                android:id="@+id/searchText"
-                android:layout_width="fill_parent"
+        <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:hint="@string/search_hint"
-                android:singleLine="true"/>
+                android:orientation="horizontal">
+            <EditText
+                    android:id="@+id/searchText"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:hint="@string/search_hint"
+                    android:singleLine="true"/>
+            <Spinner
+                    android:id="@+id/search_class_spinner"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="right"
+                    android:entries="@array/advanced_search_index"/>
+        </LinearLayout>
 
         <LinearLayout
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 >
index a7758e0..ea3c81f 100644 (file)
@@ -2,10 +2,6 @@
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:yourapp="http://schemas.android.com/apk/res-auto">
-    <item android:id="@+id/action_search"
-          android:icon="@drawable/abc_ic_search"
-          android:title="@string/title_search"
-          yourapp:showAsAction="ifRoom"/>
     <item android:id="@+id/action_advanced_search"
           android:icon="@drawable/abc_ic_search"
           android:title="@string/advanced_search"/>
index 36b768a..4eeef10 100644 (file)
@@ -23,6 +23,7 @@ import java.util.StringTokenizer;
 
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.ActionBarActivity;
+import android.view.MenuItem;
 import org.evergreen_ils.R;
 import org.evergreen_ils.accountAccess.AccountAccess;
 import org.evergreen_ils.views.splashscreen.SplashActivity;
@@ -158,4 +159,14 @@ public class AdvancedSearchActivity extends ActionBarActivity {
 
     }
 
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        int id = item.getItemId();
+        if (id == android.R.id.home) {
+            onBackPressed();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
 }
index 09978e9..385a2d5 100644 (file)
@@ -114,7 +114,7 @@ public class SampleUnderlinesNoFade extends BaseSampleActivity {
                     }
                 });
                 
-                searchRecords = search.getSearchResults(search.searchText, records.size());
+                searchRecords = search.getSearchResults(search.searchText, search.searchClass, records.size());
 
                 runOnUiThread(new Runnable() {
 
index 71760d3..f8cc568 100644 (file)
@@ -114,6 +114,7 @@ public class SearchCatalog {
     public Integer searchLimit = 10;
     
     public String searchText = null;
+    public String searchClass = null;
 
     private ConnectivityManager cm;
 
@@ -160,10 +161,10 @@ public class SearchCatalog {
      *            the search words
      * @return the search results
      */
-    public ArrayList<RecordInfo> getSearchResults(String searchWords,
-            Integer offset) {
+    public ArrayList<RecordInfo> getSearchResults(String searchWords, String searchClass, Integer offset) {
 
         searchText = searchWords;
+        this.searchClass = searchClass;
         
         ArrayList<RecordInfo> resultsRecordInfo = new ArrayList<RecordInfo>();
 
@@ -180,14 +181,12 @@ public class SearchCatalog {
                     complexParm.put("depth",
                             this.selectedOrganization.level - 1);
             }
-            // TODO change here, multiple result per page
             complexParm.put("limit", searchLimit);
-
             complexParm.put("offset", offset);
-
+            if (searchClass != null) complexParm.put("default_class", searchClass);
             /*
-             * complexParm.put("offset",0); complexParm.put("visibility_limit",
-             * 3000); complexParm.put("default_class","keyword");
+             * complexParm.put("offset",0);
+             * complexParm.put("visibility_limit", 3000);
              */
 
         } catch (Exception e) {
index 12ed74c..dd4c757 100644 (file)
@@ -105,10 +105,19 @@ public class SearchCatalogListView extends ActionBarActivity {
     private Runnable searchForResultsRunnable = null;
 
     private View searchOptionsMenu = null;
+    private Spinner searchClassSpinner;
 
     // marks when the fetching record thread is started
     private boolean loadingElements = false;
 
+    private String getSearchText() {
+        return searchText.getText().toString();
+    }
+
+    private String getSearchClass() {
+        return searchClassSpinner.getSelectedItem().toString().toLowerCase();
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -140,6 +149,8 @@ public class SearchCatalogListView extends ActionBarActivity {
                 R.layout.search_result_item, recordList);
 
         //searchOptionsMenu = findViewById(R.id.search_preference_options);
+        //final Spinner searchFormatSpinner = (Spinner) findViewById(R.id.search_format_spinner);
+        searchClassSpinner = (Spinner) findViewById(R.id.search_class_spinner);
         searchResultsNumber = (TextView) findViewById(R.id.search_result_number);
 
         // Get reference to ListView holder
@@ -159,9 +170,11 @@ public class SearchCatalogListView extends ActionBarActivity {
             @Override
             public void run() {
 
-                final String text = searchText.getText().toString();
+                final String text = getSearchText();
                 if (text.length() < 1)
                     return;
+                int searchQueryType = searchClassSpinner.getSelectedItemPosition();
+                Log.d(TAG, "type="+searchQueryType+" class="+getSearchClass());
 
                 runOnUiThread(new Runnable() {
                     @Override
@@ -180,7 +193,7 @@ public class SearchCatalogListView extends ActionBarActivity {
                     }
                 });
 
-                searchResults = search.getSearchResults(text, 0);
+                searchResults = search.getSearchResults(text, getSearchClass(), 0);
 
                 runOnUiThread(new Runnable() {
 
@@ -237,8 +250,7 @@ public class SearchCatalogListView extends ActionBarActivity {
 
                             searchResults.clear();
 
-                            searchResults = search.getSearchResults(text,
-                                    recordList.size());
+                            searchResults = search.getSearchResults(text, getSearchClass(), recordList.size());
 
                             runOnUiThread(new Runnable() {
 
@@ -337,13 +349,10 @@ public class SearchCatalogListView extends ActionBarActivity {
                                     @Override
                                     public void run() {
 
-                                        String text = searchText.getText()
-                                                .toString();
+                                        String text = getSearchText();
                                         searchResults.clear();
-
-                                        searchResults = search
-                                                .getSearchResults(text,
-                                                        adapter.getCount());
+                                        searchResults = search.getSearchResults(text, getSearchClass(),
+                                                adapter.getCount());
 
                                         runOnUiThread(new Runnable() {
 
@@ -355,14 +364,8 @@ public class SearchCatalogListView extends ActionBarActivity {
                                                 Log.d(TAG, "Returned "
                                                         + searchResults.size()
                                                         + " elements from search");
-                                                if (searchResults.size() > 0) {
-
-                                                    for (int j = 0; j < searchResults
-                                                            .size(); j++)
-                                                        recordList
-                                                                .add(searchResults
-                                                                        .get(j));
-
+                                                for (int j = 0; j < searchResults.size(); j++) {
+                                                    recordList.add(searchResults.get(j));
                                                 }
 
                                                 searchResultsNumber.setText(adapter
@@ -596,7 +599,7 @@ public class SearchCatalogListView extends ActionBarActivity {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         int id = item.getItemId();
-        if (id == R.id.action_search) {
+        if (id == R.id.action_advanced_search) {
             startActivityForResult(new Intent(getApplicationContext(), AdvancedSearchActivity.class), 2);
             return true;
         }