Grundaufbau der App
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / AppSearch.java
1 package de.dhbwloe.campusapp.fragments;
2
3
4 import android.os.Bundle;
5 import android.support.design.widget.TabLayout;
6 import android.support.v4.app.Fragment;
7 import android.support.v4.app.FragmentManager;
8 import android.support.v4.app.FragmentPagerAdapter;
9 import android.support.v4.view.ViewPager;
10 import android.util.Log;
11 import android.view.LayoutInflater;
12 import android.view.View;
13 import android.view.ViewGroup;
14 import android.widget.AdapterView;
15 import android.widget.ListView;
16
17 import java.text.SimpleDateFormat;
18 import java.util.ArrayList;
19 import java.util.Date;
20 import java.util.List;
21
22 import de.dhbwloe.campusapp.CampusAppContext;
23 import de.dhbwloe.campusapp.CampusAppFragment;
24 import de.dhbwloe.campusapp.R;
25 import de.dhbwloe.campusapp.search.SearchIndices;
26 import de.dhbwloe.campusapp.search.SearchTarget;
27
28 /**
29  * A simple {@link Fragment} subclass.
30  */
31 public class AppSearch extends CampusAppFragment {
32     private ViewPagerAdapter oAppSearchLViewPagerAdapter;
33     private String sSearchQuery;
34
35     @Override
36     public void onCreate(Bundle savedInstanceState) {
37         Log.i("AppSearch", "Event: onCreate");
38         super.onCreate(savedInstanceState);
39
40         Bundle bundle;
41         if((bundle = getArguments()) != null)
42             sSearchQuery = bundle.getString("query");
43         else if(savedInstanceState != null && (bundle = savedInstanceState.getBundle("AppSearch")) != null)
44             sSearchQuery = bundle.getString("query");
45
46     }
47
48     @Override
49     public void onSaveInstanceState(Bundle savedInstanceState) {
50         Log.i("AppSearch", "Event: onSaveInstanceState");
51         Bundle bundle = new Bundle();
52         bundle.putString("query", sSearchQuery);
53         savedInstanceState.putBundle("AppSearch", bundle);
54         super.onSaveInstanceState(savedInstanceState);
55     }
56
57     @Override
58     public View onCreateView(LayoutInflater inflater, ViewGroup container,
59                              Bundle savedInstanceState) {
60         Log.i("AppSearch", "Event: onCreateView");
61         if(AppContext == null)
62             AppContext = CampusAppContext.getInstance();
63         oFragmentView = inflater.inflate(R.layout.fragment_appsearch, container, false);
64
65         AppContext.setTitle("Search: " + sSearchQuery);
66
67         ViewPager viewPager = (ViewPager) oFragmentView.findViewById(R.id.viewpager);
68         setupViewPager(viewPager);
69
70         TabLayout tabLayout = (TabLayout) oFragmentView.findViewById(R.id.tabs);
71         tabLayout.setupWithViewPager(viewPager);
72
73         return oFragmentView;
74     }
75
76     private void setupViewPager(ViewPager viewPager) {
77         final ViewPagerAdapter adapter;
78         if(oAppSearchLViewPagerAdapter != null)
79             adapter = oAppSearchLViewPagerAdapter;
80         else {
81             adapter = new ViewPagerAdapter(getChildFragmentManager());
82             oAppSearchLViewPagerAdapter = adapter;
83
84             CampusAppFragment fragment;
85             Bundle args = new Bundle();
86             args.putString("query", sSearchQuery);
87             Log.i("AppSearch", "New result instances: "+sSearchQuery);
88
89             fragment = new AppSearchInternal();
90             fragment.setArguments(args);
91             adapter.addFragment("Campus App", fragment);
92
93             fragment = new AppSearchDhbw();
94             fragment.setArguments(args);
95             adapter.addFragment("DHBW Suche", fragment);
96
97             fragment = new AppSearchStuv();
98             fragment.setArguments(args);
99             adapter.addFragment("Stuv Suche", fragment);
100         }
101
102         viewPager.setAdapter(adapter);
103         int activeItem = viewPager.getCurrentItem();
104         AppSearchProvider activeProvider = (AppSearchProvider) adapter.getItem(activeItem);
105         activeProvider.executeSearch(false);
106
107         viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
108             @Override
109             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
110
111             }
112
113             @Override
114             public void onPageSelected(int position) {
115                 AppSearchProvider activeProvider = (AppSearchProvider) adapter.getItem(position);
116                 activeProvider.executeSearch(false);
117             }
118
119             @Override
120             public void onPageScrollStateChanged(int state) {
121
122             }
123         });
124     }
125
126
127     class ViewPagerAdapter extends FragmentPagerAdapter {
128         private final List<Fragment> mFragmentDataList = new ArrayList<>();
129         private final List<String> mFragmentTitleList = new ArrayList<>();
130
131         public ViewPagerAdapter(FragmentManager manager) {
132             super(manager);
133         }
134
135         @Override
136         public Fragment getItem(int position) {
137             return mFragmentDataList.get(position);
138         }
139
140         @Override
141         public int getCount() {
142             return mFragmentDataList.size();
143         }
144
145         public void addFragment(String title, Fragment fragment) {
146             mFragmentDataList.add(fragment);
147             mFragmentTitleList.add(title);
148         }
149
150         @Override
151         public CharSequence getPageTitle(int position) {
152             return mFragmentTitleList.get(position);
153         }
154     }
155
156 }