android:layout_weight="1"/>
<Spinner
- android:id="@+id/search_class_spinner"
+ android:id="@+id/search_qtype_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
- android:entries="@array/advanced_search_index"/>
+ android:entries="@array/search_qtype"/>
<Spinner
android:id="@+id/search_format_spinner"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_gravity="right"/>
<Spinner
- android:id="@+id/chose_organisation"
+ android:id="@+id/search_org_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:spinnerMode="dialog"/>
<ImageButton
- android:id="@+id/searchButton"
+ android:id="@+id/search_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/abc_ic_search"
android:padding="5dip" >
<Spinner
- android:id="@+id/advanced_spinner_index"
+ android:id="@+id/advanced_search_qtype_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:entries="@array/advanced_search_index" />
+ android:entries="@array/search_qtype" />
<Spinner
- android:id="@+id/advanced_spinner_option"
+ android:id="@+id/advanced_search_contains_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:entries="@array/advanced_search_options"/>
+ android:entries="@array/advanced_search_contains"/>
</LinearLayout>
<LinearLayout
android:gravity="center_horizontal"
android:orientation="horizontal"
android:padding="5dip" >
- <!--
- android:background="@drawable/bottom_rounded_menu_background"
- -->
<Button
android:id="@+id/advanced_search_cancel"
android:hint="@string/search_hint"
android:singleLine="true"/>
<Spinner
- android:id="@+id/search_class_spinner"
+ android:id="@+id/search_qtype_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
- android:entries="@array/advanced_search_index"/>
+ android:entries="@array/search_qtype"/>
<Spinner
android:id="@+id/search_format_spinner"
android:layout_width="120dp"
>
<Spinner
- android:id="@+id/chose_organisation"
+ android:id="@+id/search_org_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:spinnerMode="dialog"/>
<ImageButton
- android:id="@+id/searchButton"
+ android:id="@+id/search_button"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_margin="0dp"
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string-array name="advanced_search_index">
+ <string-array name="search_qtype">
<item>Keyword</item>
<item>Title</item>
<item>Author</item>
<item>Series</item>
</string-array>
- <string-array name="advanced_search_options">
+ <string-array name="advanced_search_contains">
<item>Contains</item>
<item>Does not contain</item>
<item>Matches exactly</item>
*/
package org.evergreen_ils.searchCatalog;
+import java.util.ArrayList;
import java.util.StringTokenizer;
-import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
+import android.text.TextUtils;
import android.view.MenuItem;
import org.evergreen_ils.R;
-import org.evergreen_ils.accountAccess.AccountAccess;
import org.evergreen_ils.utils.ui.ActionBarUtils;
import org.evergreen_ils.views.splashscreen.SplashActivity;
-import android.app.Activity;
-import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
private final String TAG = AdvancedSearchActivity.class.getName();
- private Context context;
-
- private StringBuilder advancedSearchFormattedText;
+ private ArrayList<String> searchTerms;
+ private String advancedSearchFormattedText;
public static final int RESULT_ADVANCED_SEARCH = 10;
setContentView(R.layout.advanced_search);
ActionBarUtils.initActionBarForActivity(this);
- advancedSearchFormattedText = new StringBuilder();
-
- context = this;
+ searchTerms = new ArrayList<String>();
+ advancedSearchFormattedText = new String();
final LinearLayout layout = (LinearLayout) findViewById(R.id.advanced_search_filters);
-
Button addFilter = (Button) findViewById(R.id.advanced_search_add_filter_button);
-
- final Spinner search_index = (Spinner) findViewById(R.id.advanced_spinner_index);
- final Spinner search_option = (Spinner) findViewById(R.id.advanced_spinner_option);
+ final Spinner search_qtype_spinner = (Spinner) findViewById(R.id.advanced_search_qtype_spinner);
+ final Spinner search_contains_spinner = (Spinner) findViewById(R.id.advanced_search_contains_spinner);
final EditText search_filter_text = (EditText) findViewById(R.id.advanced_search_text);
addFilter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- int searchOptionVal = search_option.getSelectedItemPosition();
-
- String searchText = search_index.getSelectedItem().toString()
- .toLowerCase()
- + ": ";
+ int contains_pos = search_contains_spinner.getSelectedItemPosition();
+ String query = "";
+ String qtype = search_qtype_spinner.getSelectedItem().toString().toLowerCase();
+ String filter = search_filter_text.getText().toString();
- advancedSearchFormattedText.append(search_index
- .getSelectedItem().toString().toLowerCase()
- + ": ");
-
- switch (searchOptionVal) {
-
- case 0: {
+ switch (contains_pos) {
+ case 0:
// contains
- advancedSearchFormattedText.append(search_filter_text
- .getText().toString());
- searchText = searchText
- + search_filter_text.getText().toString();
- }
+ query = qtype + ": " + filter;
break;
- case 1: {
+ case 1:
// excludes
- StringTokenizer str = new StringTokenizer(
- search_filter_text.getText().toString());
+ query = qtype + ":";
+ StringTokenizer str = new StringTokenizer(filter);
while (str.hasMoreTokens()) {
String token = str.nextToken(" ");
- advancedSearchFormattedText.append(" -" + token);
- searchText = searchText + " -" + token;
+ query = query + " -" + token;
}
-
- }
break;
- case 2: {
+ case 2:
// matches exactly
- advancedSearchFormattedText.append(" \""
- + search_filter_text.getText().toString() + "\"");
- searchText = searchText + " \""
- + search_filter_text.getText().toString() + "\"";
- }
+ query = qtype + " \"" + filter + "\"";
break;
-
}
-
- TextView text = new TextView(context);
- text.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
- LayoutParams.WRAP_CONTENT));
- text.setText(searchText);
+ searchTerms.add(query);
+ TextView text = new TextView(AdvancedSearchActivity.this);
+ text.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
+ text.setText(query);
layout.addView(text);
-
}
});
Button cancel = (Button) findViewById(R.id.advanced_search_cancel);
-
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
});
Button search = (Button) findViewById(R.id.advanced_search_button);
-
search.setOnClickListener(new OnClickListener() {
-
@Override
public void onClick(View v) {
Intent returnIntent = new Intent();
- returnIntent.putExtra("advancedSearchText",
- advancedSearchFormattedText.toString());
+ returnIntent.putExtra("advancedSearchText", TextUtils.join(" ", searchTerms));
setResult(RESULT_ADVANCED_SEARCH, returnIntent);
finish();
}
// global, it is initialized when orgTree and fm_ild is downloaded
- public static LinkedHashMap<String, String> availableOrgStatuses;
+ public static LinkedHashMap<String, String> availableOrgStatuses = new LinkedHashMap<String, String>();
- public LinkedHashMap<String, String> statusInformation = null;
+ public LinkedHashMap<String, String> statusInformation = new LinkedHashMap<String, String>();
public CopyInformation(List<Object> list) {
List<OSRFObject> ccs_list = (List<OSRFObject>) Utils.doRequestSimple(conn(), SERVICE,
METHOD_COPY_STATUS_ALL, new Object[] {});
+ // todo wtf, why is SearchCatalog loading up a member var of CopyInformation???
CopyInformation.availableOrgStatuses = new LinkedHashMap<String, String>();
if (ccs_list != null) {
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
-import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
R.layout.search_result_item, recordList);
//searchOptionsMenu = findViewById(R.id.search_preference_options);
- searchClassSpinner = (Spinner) findViewById(R.id.search_class_spinner);
+ searchClassSpinner = (Spinner) findViewById(R.id.search_qtype_spinner);
searchFormatSpinner = (Spinner) findViewById(R.id.search_format_spinner);
searchResultsNumber = (TextView) findViewById(R.id.search_result_number);
initSearchFormatSpinner();
});
- searchButton = (ImageButton) findViewById(R.id.searchButton);
+ searchButton = (ImageButton) findViewById(R.id.search_button);
searchButton.setOnClickListener(new OnClickListener() {
@Override
}
//ArrayAdapter<String> adapter = CompatSpinnerAdapter.CreateCompatSpinnerAdapter(this, list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.org_item_layout, list);
- choseOrganisation = (Spinner) findViewById(R.id.chose_organisation);
+ choseOrganisation = (Spinner) findViewById(R.id.search_org_spinner);
choseOrganisation.setAdapter(adapter);
choseOrganisation.setSelection(selectedOrgPos);
choseOrganisation.setOnItemSelectedListener(new OnItemSelectedListener() {