android:layout_height="wrap_content"
android:layout_gravity="right"
android:entries="@array/advanced_search_index"/>
-
+ <Spinner
+ android:id="@+id/search_format_spinner"
+ android:layout_width="120dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right"
+ android:entries="@array/search_format_options"/>
<Spinner
android:id="@+id/chose_organisation"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:entries="@array/advanced_search_index"/>
+ <Spinner
+ android:id="@+id/search_format_spinner"
+ android:layout_width="120dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right"
+ android:entries="@array/search_format_options"/>
</LinearLayout>
<LinearLayout
<ImageButton
android:id="@+id/searchButton"
- android:layout_width="wrap_content"
+ android:layout_width="120dp"
android:layout_height="wrap_content"
- android:paddingBottom="5dp"
- android:paddingLeft="10dp"
- android:paddingRight="10dp"
- android:paddingTop="5dp"
+ android:layout_margin="0dp"
android:src="@drawable/abc_ic_search"/>
</LinearLayout>
</LinearLayout>
<item>Does not contain</item>
<item>Matches exactly</item>
</string-array>
+
+ <string-array name="search_format_options">
+ <item>All Formats</item>
+ <item>All Books</item>
+ <item>All Music</item>
+ <!--<item>Audiocassette music recording</item>-->
+ <item>Blu-ray</item>
+ <!--<item>Braille</item>-->
+ <!--<item>Cassette audiobook</item>-->
+ <item>CD Audiobook</item>
+ <item>CD Music recording</item>
+ <item>DVD</item>
+ <item>E-audio</item>
+ <item>E-book</item>
+ <item>E-video</item>
+ <!--<item>Equipment, games, toys</item>-->
+ <!--<item>Kit</item>-->
+ <item>Large Print Book</item>
+ <!--<item>Map</item>-->
+ <!--<item>Microform</item>-->
+ <!--<item>Music Score</item>-->
+ <!--<item>Phonograph music recording</item>-->
+ <!--<item>Phonograph spoken recording</item>-->
+ <item>Picture</item>
+ <item>Serials and magazines</item>
+ <item>Software and video games</item>
+ <!--<item>VHS</item>-->
+ </string-array>
<string-array name="notification_preferences_list_values">
<item>1</item>
<!-- Search -->
- <string name="search_hint">Search keywords</string>
+ <string name="search_hint">Search words</string>
<string name="advanced_search">Advanced Search</string>
<string name="loading_dialog_text"></string>
<string name="dialog_please_wait"></string>
import java.util.ArrayList;
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 android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
}
});
- searchRecords = search.getSearchResults(search.searchText, search.searchClass, records.size());
+ searchRecords = search.getSearchResults(search.searchText, search.searchClass, search.searchFormat, records.size());
runOnUiThread(new Runnable() {
// recordList.clear();
if (searchRecords.size() > 0) {
- for (int j = 0; j < searchRecords
- .size(); j++)
+ for (int j = 0; j < searchRecords.size(); j++)
records.add(searchRecords.get(j));
// add extra record to display more
public String searchText = null;
public String searchClass = null;
+ public String searchFormat = null;
public static SearchCatalog getInstance(ConnectivityManager cm) {
/**
* Gets the search results
*
- * @param searchWords
+ * @param searchText
* the search words
* @return the search results
*/
- public ArrayList<RecordInfo> getSearchResults(String searchWords, String searchClass, Integer offset) {
+ public ArrayList<RecordInfo> getSearchResults(String searchText, String searchClass, String searchFormat, Integer offset) {
- searchText = searchWords;
+ this.searchText = searchText;
this.searchClass = searchClass;
+ this.searchFormat = searchFormat;
ArrayList<RecordInfo> resultsRecordInfo = new ArrayList<RecordInfo>();
HashMap complexParm = new HashMap<String, Integer>();
complexParm.put("org_unit", this.selectedOrganization.id);
if (this.selectedOrganization.level != null)
complexParm.put("depth", this.selectedOrganization.level - 1);
+// if (!this.searchFormat.isEmpty())
+// complexParm.put("format", this.searchFormat);
}
complexParm.put("limit", searchLimit);
complexParm.put("offset", offset);
Log.d(TAG, "Exception in JSON " + e.getMessage());
}
- //kcxxx: for searching by format
- //searchWords = searchWords + " search_format(vhs)";
+ String queryString = searchText;
+ if (!searchFormat.isEmpty())
+ queryString += " search_format(" + searchFormat + ")";
// do request and check for connectivity
Object resp = Utils.doRequest(conn, SERVICE, METHOD_MULTICLASS_QUERY,
- new Object[] { complexParm, searchWords, 1 });
+ new Object[] { complexParm, queryString, 1 });
ArrayList<String> ids = new ArrayList<String>();
private View searchOptionsMenu = null;
private Spinner searchClassSpinner;
+ private Spinner searchFormatSpinner;
// marks when the fetching record thread is started
private boolean loadingElements = false;
return searchClassSpinner.getSelectedItem().toString().toLowerCase();
}
+ // todo: find a way to get these programmatically. C/W MARS has an extended set of search formats.
+ private String getSearchFormat() {
+ String value = "";
+ String s = searchFormatSpinner.getSelectedItem().toString();
+ if (!s.isEmpty()) value=s;
+ if (s.equalsIgnoreCase("All Formats")) value="";
+ else if (s.equalsIgnoreCase("All Books")) value="book";
+ else if (s.equalsIgnoreCase("All Music")) value="music";
+ else if (s.equalsIgnoreCase("Audiocassette music recording")) value="casmusic";
+ else if (s.equalsIgnoreCase("Blu-ray")) value="blu-ray";
+ else if (s.equalsIgnoreCase("Braille")) value="braille";
+ else if (s.equalsIgnoreCase("Cassette audiobook")) value="casaudiobook";
+ else if (s.equalsIgnoreCase("CD Audiobook")) value="cdaudiobook";
+ else if (s.equalsIgnoreCase("CD Music recording")) value="cdmusic";
+ else if (s.equalsIgnoreCase("DVD")) value="dvd";
+ else if (s.equalsIgnoreCase("E-audio")) value="eaudio";
+ else if (s.equalsIgnoreCase("E-book")) value="ebook";
+ else if (s.equalsIgnoreCase("E-video")) value="evideo";
+ else if (s.equalsIgnoreCase("Equipment, games, toys")) value="equip";
+ else if (s.equalsIgnoreCase("Kit")) value="kit";
+ else if (s.equalsIgnoreCase("Large Print Book")) value="lpbook";
+ else if (s.equalsIgnoreCase("Map")) value="map";
+ else if (s.equalsIgnoreCase("Microform")) value="microform";
+ else if (s.equalsIgnoreCase("Music Score")) value="score";
+ else if (s.equalsIgnoreCase("Phonograph music recording")) value="phonomusic";
+ else if (s.equalsIgnoreCase("Phonograph spoken recording")) value="phonospoken";
+ else if (s.equalsIgnoreCase("Picture")) value="picture";
+ else if (s.equalsIgnoreCase("Serials and magazines")) value="serial";
+ else if (s.equalsIgnoreCase("Software and video games")) value="software";
+ else if (s.equalsIgnoreCase("VHS")) value="vhs";
+ return value;
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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);
+ searchFormatSpinner = (Spinner) findViewById(R.id.search_format_spinner);
searchResultsNumber = (TextView) findViewById(R.id.search_result_number);
// Get reference to ListView holder
if (text.length() < 1)
return;
int searchQueryType = searchClassSpinner.getSelectedItemPosition();
- Log.d(TAG, "type="+searchQueryType+" class="+getSearchClass());
+ Log.d(TAG, "type="+searchQueryType+" class="+getSearchClass()+" format="+getSearchFormat());
runOnUiThread(new Runnable() {
@Override
}
});
- searchResults = search.getSearchResults(text, getSearchClass(), 0);
+ searchResults = search.getSearchResults(text, getSearchClass(), getSearchFormat(), 0);
runOnUiThread(new Runnable() {
searchResults.clear();
- searchResults = search.getSearchResults(text, getSearchClass(), recordList.size());
+ searchResults = search.getSearchResults(text, getSearchClass(), getSearchFormat(), recordList.size());
runOnUiThread(new Runnable() {
String text = getSearchText();
searchResults.clear();
searchResults = search.getSearchResults(text, getSearchClass(),
+ getSearchFormat(),
adapter.getCount());
runOnUiThread(new Runnable() {