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;
26 * A simple {@link Fragment} subclass.
28 public class AppSearchDhbw extends CampusAppFragment implements AppSearchProvider {
29 private String sSearchQuery;
30 private boolean bQueryExecuted = false;
31 private AppSearchListAdapter appSearchAdapter;
32 private DhbwSearchHelper seachHelper;
33 private ArrayList<AppSearchListItem> searchResultItems = new ArrayList<AppSearchListItem>();
34 private ProgressBar progressBar;
37 public void onCreate(Bundle savedInstanceState) {
38 Log.i("AppSearchDhbw", "Event: onCreate");
39 super.onCreate(savedInstanceState);
43 public void onSaveInstanceState(Bundle savedInstanceState) {
44 Log.i("AppSearchDhbw", "Event: onSaveInstanceState");
45 Bundle bundle = new Bundle();
46 bundle.putString("query", sSearchQuery);
47 bundle.putBoolean("executed", bQueryExecuted);
48 savedInstanceState.putBundle("SearchDhbw", bundle);
49 super.onSaveInstanceState(savedInstanceState);
53 public View onCreateView(LayoutInflater inflater, ViewGroup container,
54 Bundle savedInstanceState) {
55 Log.i("AppSearchDhbw", "Event: onCreateView");
57 if((savedState = getArguments()) != null)
58 sSearchQuery = savedState.getString("query");
59 else if(savedInstanceState != null && (savedState = savedInstanceState.getBundle("SearchDhbw")) != null) {
60 Log.i("AppSearchDhbw", "Parsed instance state");
61 sSearchQuery = savedState.getString("query");
62 if(savedState.getBoolean("executed")) {
63 bQueryExecuted = true;
66 if(AppContext == null)
67 AppContext = CampusAppContext.getInstance();
68 oFragmentView = inflater.inflate(R.layout.fragment_appsearch_list, container, false);
70 Bundle args = getArguments();
72 String queryString = args.getString("query");
73 if(queryString != null)
74 sSearchQuery = queryString;
77 ListView searchResultList = (ListView) oFragmentView.findViewById(R.id.searchResultItems);
78 appSearchAdapter = new AppSearchListAdapter(oFragmentView.getContext(), R.layout.fragment_appsearch_listitem, searchResultItems);
79 searchResultList.setAdapter(appSearchAdapter);
81 searchResultList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
83 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
84 AppSearchListItem item = searchResultItems.get(position);
87 navigateToResult(item);
94 public void executeSearch(boolean reset) {
95 Log.i("AppSearchDhbw", "Action: executeSearch");
96 if(AppContext == null)
97 AppContext = CampusAppContext.getInstance();
98 if(bQueryExecuted && !reset)
100 bQueryExecuted = true;
101 progressBar = (ProgressBar) oFragmentView.findViewById(R.id.searchProgress);
102 progressBar.setVisibility(View.VISIBLE);
104 searchResultItems.clear();
106 if(seachHelper == null)
107 seachHelper = new DhbwSearchHelper();
108 seachHelper.search(sSearchQuery, new SearchResultListener() {
110 public void onSearchResultsReceived(List<AppSearchListItem> results) {
111 Log.i("SearchDhbw", "Success: "+results.size());
112 for(AppSearchListItem result : results)
113 searchResultItems.add(result);
114 progressBar.setVisibility(View.GONE);
115 if(appSearchAdapter != null)
116 appSearchAdapter.notifyDataSetChanged();
118 Log.i("SearchDhbw", "appSearchAdapter is null in executeSearch");
122 public void onSearchFailed(String error) {
123 Log.i("SearchDhbw", "Failed: " + error);
124 progressBar.setVisibility(View.GONE);
129 private void navigateToResult(AppSearchListItem result) {
130 SearchTarget target = result.getTarget();
132 target.navigate(AppContext.getNavigationManager());