Grundaufbau der App
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / AppSearchStuv.java
1 package de.dhbwloe.campusapp.fragments;
2
3
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
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import de.dhbwloe.campusapp.CampusAppContext;
17 import de.dhbwloe.campusapp.CampusAppFragment;
18 import de.dhbwloe.campusapp.R;
19 import de.dhbwloe.campusapp.search.DhbwSearchHelper;
20 import de.dhbwloe.campusapp.search.SearchIndices;
21 import de.dhbwloe.campusapp.search.SearchResultListener;
22 import de.dhbwloe.campusapp.search.SearchTarget;
23 import de.dhbwloe.campusapp.search.StuvSearchHelper;
24
25 /**
26  * A simple {@link Fragment} subclass.
27  */
28 public class AppSearchStuv extends CampusAppFragment implements AppSearchProvider {
29     private String sSearchQuery;
30     private boolean bQueryExecuted = false;
31     private boolean bExecuteOnload = false;
32     private AppSearchListAdapter appSearchAdapter;
33     private StuvSearchHelper seachHelper;
34     private ArrayList<AppSearchListItem> searchResultItems = new ArrayList<AppSearchListItem>();
35
36     @Override
37     public void onCreate(Bundle savedInstanceState) {
38         super.onCreate(savedInstanceState);
39         Bundle savedState;
40         if((savedState = getArguments()) != null)
41             sSearchQuery = savedState.getString("query");
42         if(savedInstanceState != null && (savedState = savedInstanceState.getBundle("SearchStuv")) != null) {
43             sSearchQuery = savedState.getString("query");
44             if(savedState.getBoolean("executed")) {
45                 executeSearch(false);
46             }
47         }
48     }
49
50     @Override
51     public void onSaveInstanceState(Bundle savedInstanceState) {
52         Bundle bundle = new Bundle();
53         bundle.putString("query", sSearchQuery);
54         bundle.putBoolean("executed", bQueryExecuted);
55         savedInstanceState.putBundle("SearchStuv", bundle);
56         super.onSaveInstanceState(savedInstanceState);
57     }
58
59     @Override
60     public View onCreateView(LayoutInflater inflater, ViewGroup container,
61                              Bundle savedInstanceState) {
62         if(AppContext == null)
63             AppContext = CampusAppContext.getInstance();
64         oFragmentView = inflater.inflate(R.layout.fragment_appsearch_list, container, false);
65
66         Bundle args = getArguments();
67         if(args != null) {
68             String queryString = args.getString("query");
69             if(queryString != null)
70                 sSearchQuery = queryString;
71         }
72
73         ListView searchResultList = (ListView) oFragmentView.findViewById(R.id.searchResultItems);
74         if(appSearchAdapter == null)
75             appSearchAdapter = new AppSearchListAdapter(oFragmentView.getContext(), R.layout.fragment_appsearch_listitem, searchResultItems);
76         searchResultList.setAdapter(appSearchAdapter);
77
78         searchResultList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
79             @Override
80             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
81                 AppSearchListItem item = searchResultItems.get(position);
82                 if (item == null)
83                     return;
84                 navigateToResult(item);
85             }
86         });
87
88         return oFragmentView;
89     }
90
91     public void executeSearch(final boolean reset) {
92         if(AppContext == null)
93             AppContext = CampusAppContext.getInstance();
94         if(bQueryExecuted && !reset)
95             return;
96         bQueryExecuted = true;
97
98         searchResultItems.clear();
99
100         if(seachHelper == null)
101             seachHelper = new StuvSearchHelper();
102         seachHelper.search(sSearchQuery, new SearchResultListener() {
103             @Override
104             public void onSearchResultsReceived(List<AppSearchListItem> results) {
105                 Log.i("SearchStuv", "Success: "+results.size());
106                 for(AppSearchListItem result : results)
107                     searchResultItems.add(result);
108                 if(appSearchAdapter != null)
109                     appSearchAdapter.notifyDataSetChanged();
110             }
111
112             @Override
113             public void onSearchFailed(String error) {
114                 Log.i("SearchDhbw", "Failed: " + error);
115             }
116         });
117
118     }
119
120     private void navigateToResult(AppSearchListItem result) {
121         SearchTarget target = result.getTarget();
122
123         target.navigate(AppContext.getNavigationManager());
124     }
125
126 }