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;
13 import android.widget.TextView;
15 import java.util.ArrayList;
16 import java.util.Date;
18 import de.dhbwloe.campusapp.CampusAppContext;
19 import de.dhbwloe.campusapp.CampusAppFragment;
20 import de.dhbwloe.campusapp.R;
21 import de.dhbwloe.campusapp.search.SearchIndices;
22 import de.dhbwloe.campusapp.search.SearchTarget;
25 * A simple {@link Fragment} subclass.
27 public class AppSearchInternal extends CampusAppFragment implements AppSearchProvider {
28 private String sSearchQuery;
29 private boolean bQueryExecuted = false;
30 private AppSearchListAdapter appSearchAdapter;
31 private ArrayList<AppSearchListItem> searchResultItems = new ArrayList<AppSearchListItem>();
34 public void onCreate(Bundle savedInstanceState) {
35 Log.i("AppSearchInternal", "Event: onCreate");
36 super.onCreate(savedInstanceState);
38 if((savedState = getArguments()) != null)
39 sSearchQuery = savedState.getString("query");
40 else if(savedInstanceState != null && (savedState = savedInstanceState.getBundle("SearchInternal")) != null) {
41 sSearchQuery = savedState.getString("query");
42 if(savedState.getBoolean("executed")) {
49 public void onSaveInstanceState(Bundle savedInstanceState) {
50 Log.i("AppSearchInternal", "Event: onSaveInstanceState");
51 Bundle bundle = new Bundle();
52 bundle.putString("query", sSearchQuery);
53 bundle.putBoolean("executed", bQueryExecuted);
54 savedInstanceState.putBundle("SearchInternal", bundle);
55 super.onSaveInstanceState(savedInstanceState);
58 private void parseIstanceState(Bundle bundle) {
59 if(sSearchQuery != null)
61 Bundle args = getArguments();
63 String queryString = args.getString("query");
64 if(queryString != null)
65 sSearchQuery = queryString;
67 if(sSearchQuery == null && bundle != null) {
68 String queryString = bundle.getString("query");
69 if(queryString != null)
70 sSearchQuery = queryString;
75 public View onCreateView(LayoutInflater inflater, ViewGroup container,
76 Bundle savedInstanceState) {
77 Log.i("AppSearchInternal", "Event: onCreateView");
78 if(AppContext == null)
79 AppContext = CampusAppContext.getInstance();
80 oFragmentView = inflater.inflate(R.layout.fragment_appsearch_list, container, false);
82 parseIstanceState(savedInstanceState);
84 ListView searchResultList = (ListView) oFragmentView.findViewById(R.id.searchResultItems);
85 appSearchAdapter = new AppSearchListAdapter(oFragmentView.getContext(), R.layout.fragment_appsearch_listitem, searchResultItems);
86 searchResultList.setAdapter(appSearchAdapter);
88 searchResultList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
90 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
91 AppSearchListItem item = searchResultItems.get(position);
94 navigateToResult(item);
101 public void executeSearch(boolean reset) {
102 if(sSearchQuery == null)
103 parseIstanceState(null);
104 Log.i("AppSearchInternal", "Action: executeSearch "+sSearchQuery);
105 if(AppContext == null)
106 AppContext = CampusAppContext.getInstance();
107 if(bQueryExecuted && !reset)
109 bQueryExecuted = true;
111 searchResultItems.clear();
113 SearchIndices[] indices = AppContext.getDatabaseManager().performSearchRequest(sSearchQuery, 40);
114 for(int i = 0; i < indices.length; i++) {
115 SearchTarget target = new SearchTarget(indices[i].getTarget());
116 AppSearchListItem item = new AppSearchListItem(indices[i].getTitle(), indices[i].getDescription(), target);
117 searchResultItems.add(item);
119 if(appSearchAdapter != null)
120 appSearchAdapter.notifyDataSetChanged();
124 private void navigateToResult(AppSearchListItem result) {
125 SearchTarget target = result.getTarget();
127 target.navigate(AppContext.getNavigationManager());