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.TextView;
14 import java.util.ArrayList;
15 import java.util.Date;
17 import de.dhbwloe.campusapp.CampusAppContext;
18 import de.dhbwloe.campusapp.CampusAppFragment;
19 import de.dhbwloe.campusapp.R;
20 import de.dhbwloe.campusapp.search.SearchIndices;
21 import de.dhbwloe.campusapp.search.SearchTarget;
24 * A simple {@link Fragment} subclass.
26 public class AppSearchInternal extends CampusAppFragment implements AppSearchProvider {
27 private String sSearchQuery;
28 private boolean bQueryExecuted = false;
29 private AppSearchListAdapter appSearchAdapter;
30 private ArrayList<AppSearchListItem> searchResultItems = new ArrayList<AppSearchListItem>();
33 public void onCreate(Bundle savedInstanceState) {
34 Log.i("AppSearchInternal", "Event: onCreate");
35 super.onCreate(savedInstanceState);
37 if((savedState = getArguments()) != null)
38 sSearchQuery = savedState.getString("query");
39 else if(savedInstanceState != null && (savedState = savedInstanceState.getBundle("SearchInternal")) != null) {
40 sSearchQuery = savedState.getString("query");
41 if(savedState.getBoolean("executed")) {
48 public void onSaveInstanceState(Bundle savedInstanceState) {
49 Log.i("AppSearchInternal", "Event: onSaveInstanceState");
50 Bundle bundle = new Bundle();
51 bundle.putString("query", sSearchQuery);
52 bundle.putBoolean("executed", bQueryExecuted);
53 savedInstanceState.putBundle("SearchInternal", bundle);
54 super.onSaveInstanceState(savedInstanceState);
57 private void parseIstanceState(Bundle bundle) {
58 if(sSearchQuery != null)
60 Bundle args = getArguments();
62 String queryString = args.getString("query");
63 if(queryString != null)
64 sSearchQuery = queryString;
66 if(sSearchQuery == null && bundle != null) {
67 String queryString = bundle.getString("query");
68 if(queryString != null)
69 sSearchQuery = queryString;
74 public View onCreateView(LayoutInflater inflater, ViewGroup container,
75 Bundle savedInstanceState) {
76 Log.i("AppSearchInternal", "Event: onCreateView");
77 if(AppContext == null)
78 AppContext = CampusAppContext.getInstance();
79 oFragmentView = inflater.inflate(R.layout.fragment_appsearch_list, container, false);
81 parseIstanceState(savedInstanceState);
83 ListView searchResultList = (ListView) oFragmentView.findViewById(R.id.searchResultItems);
84 appSearchAdapter = new AppSearchListAdapter(oFragmentView.getContext(), R.layout.fragment_appsearch_listitem, searchResultItems);
85 searchResultList.setAdapter(appSearchAdapter);
87 searchResultList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
89 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
90 AppSearchListItem item = searchResultItems.get(position);
93 navigateToResult(item);
100 public void executeSearch(boolean reset) {
101 if(sSearchQuery == null)
102 parseIstanceState(null);
103 Log.i("AppSearchInternal", "Action: executeSearch "+sSearchQuery);
104 if(AppContext == null)
105 AppContext = CampusAppContext.getInstance();
106 if(bQueryExecuted && !reset)
108 bQueryExecuted = true;
110 searchResultItems.clear();
112 SearchIndices[] indices = AppContext.getDatabaseManager().performSearchRequest(sSearchQuery, 40);
113 for(int i = 0; i < indices.length; i++) {
114 SearchTarget target = new SearchTarget(indices[i].getTarget());
115 AppSearchListItem item = new AppSearchListItem(indices[i].getTitle(), indices[i].getDescription(), target);
116 searchResultItems.add(item);
118 if(appSearchAdapter != null)
119 appSearchAdapter.notifyDataSetChanged();
123 private void navigateToResult(AppSearchListItem result) {
124 SearchTarget target = result.getTarget();
126 target.navigate(AppContext.getNavigationManager());