1 package de.dhbwloe.campusapp.fragments;
4 import android.os.Bundle;
5 import android.support.v4.app.Fragment;
6 import android.util.Log;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.ViewGroup;
10 import android.widget.AdapterView;
11 import android.widget.ListView;
12 import android.widget.ProgressBar;
14 import java.util.ArrayList;
15 import java.util.List;
17 import de.dhbwloe.campusapp.CampusAppContext;
18 import de.dhbwloe.campusapp.CampusAppFragment;
19 import de.dhbwloe.campusapp.R;
20 import de.dhbwloe.campusapp.search.DhbwSearchHelper;
21 import de.dhbwloe.campusapp.search.SearchIndices;
22 import de.dhbwloe.campusapp.search.SearchResultListener;
23 import de.dhbwloe.campusapp.search.SearchTarget;
24 import de.dhbwloe.campusapp.search.StuvSearchHelper;
27 * A simple {@link Fragment} subclass.
29 public class AppSearchStuv extends CampusAppFragment implements AppSearchProvider {
30 private String sSearchQuery;
31 private boolean bQueryExecuted = false;
32 private boolean bExecuteOnload = false;
33 private AppSearchListAdapter appSearchAdapter;
34 private StuvSearchHelper seachHelper;
35 private ArrayList<AppSearchListItem> searchResultItems = new ArrayList<AppSearchListItem>();
36 private ProgressBar progressBar;
39 public void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState);
42 if((savedState = getArguments()) != null)
43 sSearchQuery = savedState.getString("query");
44 if(savedInstanceState != null && (savedState = savedInstanceState.getBundle("SearchStuv")) != null) {
45 sSearchQuery = savedState.getString("query");
46 if(savedState.getBoolean("executed")) {
53 public void onSaveInstanceState(Bundle savedInstanceState) {
54 Bundle bundle = new Bundle();
55 bundle.putString("query", sSearchQuery);
56 bundle.putBoolean("executed", bQueryExecuted);
57 savedInstanceState.putBundle("SearchStuv", bundle);
58 super.onSaveInstanceState(savedInstanceState);
62 public View onCreateView(LayoutInflater inflater, ViewGroup container,
63 Bundle savedInstanceState) {
64 if(AppContext == null)
65 AppContext = CampusAppContext.getInstance();
66 oFragmentView = inflater.inflate(R.layout.fragment_appsearch_list, container, false);
68 Bundle args = getArguments();
70 String queryString = args.getString("query");
71 if(queryString != null)
72 sSearchQuery = queryString;
75 ListView searchResultList = (ListView) oFragmentView.findViewById(R.id.searchResultItems);
76 if(appSearchAdapter == null)
77 appSearchAdapter = new AppSearchListAdapter(oFragmentView.getContext(), R.layout.fragment_appsearch_listitem, searchResultItems);
78 searchResultList.setAdapter(appSearchAdapter);
80 searchResultList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
82 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
83 AppSearchListItem item = searchResultItems.get(position);
86 navigateToResult(item);
93 public void executeSearch(final boolean reset) {
94 if(AppContext == null)
95 AppContext = CampusAppContext.getInstance();
96 if(bQueryExecuted && !reset)
98 bQueryExecuted = true;
99 progressBar = (ProgressBar) oFragmentView.findViewById(R.id.searchProgress);
100 progressBar.setVisibility(View.VISIBLE);
102 searchResultItems.clear();
104 if(seachHelper == null)
105 seachHelper = new StuvSearchHelper();
106 seachHelper.search(sSearchQuery, new SearchResultListener() {
108 public void onSearchResultsReceived(List<AppSearchListItem> results) {
109 Log.i("SearchStuv", "Success: "+results.size());
110 for(AppSearchListItem result : results)
111 searchResultItems.add(result);
112 progressBar.setVisibility(View.GONE);
113 if(appSearchAdapter != null)
114 appSearchAdapter.notifyDataSetChanged();
118 public void onSearchFailed(String error) {
119 Log.i("SearchDhbw", "Failed: " + error);
120 progressBar.setVisibility(View.GONE);
126 private void navigateToResult(AppSearchListItem result) {
127 SearchTarget target = result.getTarget();
129 target.navigate(AppContext.getNavigationManager());