3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 package de.dhbwloe.campusapp.fragments;
17 import android.os.Bundle;
18 import android.support.design.widget.TabLayout;
19 import android.support.v4.app.Fragment;
20 import android.support.v4.app.FragmentManager;
21 import android.support.v4.app.FragmentPagerAdapter;
22 import android.support.v4.view.ViewPager;
23 import android.util.Log;
24 import android.view.LayoutInflater;
25 import android.view.View;
26 import android.view.ViewGroup;
27 import android.widget.AdapterView;
28 import android.widget.ListView;
30 import java.text.SimpleDateFormat;
31 import java.util.ArrayList;
32 import java.util.Date;
33 import java.util.List;
35 import de.dhbwloe.campusapp.CampusAppContext;
36 import de.dhbwloe.campusapp.CampusAppFragment;
37 import de.dhbwloe.campusapp.R;
38 import de.dhbwloe.campusapp.search.SearchIndices;
39 import de.dhbwloe.campusapp.search.SearchTarget;
42 * A simple {@link Fragment} subclass.
44 public class AppSearch extends CampusAppFragment {
45 private ViewPagerAdapter oAppSearchLViewPagerAdapter;
46 private String sSearchQuery;
49 public void onCreate(Bundle savedInstanceState) {
50 Log.i("AppSearch", "Event: onCreate");
51 super.onCreate(savedInstanceState);
54 if((bundle = getArguments()) != null)
55 sSearchQuery = bundle.getString("query");
56 else if(savedInstanceState != null && (bundle = savedInstanceState.getBundle("AppSearch")) != null)
57 sSearchQuery = bundle.getString("query");
62 public void onSaveInstanceState(Bundle savedInstanceState) {
63 Log.i("AppSearch", "Event: onSaveInstanceState");
64 Bundle bundle = new Bundle();
65 bundle.putString("query", sSearchQuery);
66 savedInstanceState.putBundle("AppSearch", bundle);
67 super.onSaveInstanceState(savedInstanceState);
71 public View onCreateView(LayoutInflater inflater, ViewGroup container,
72 Bundle savedInstanceState) {
73 Log.i("AppSearch", "Event: onCreateView");
74 if(AppContext == null)
75 AppContext = CampusAppContext.getInstance();
76 oFragmentView = inflater.inflate(R.layout.fragment_appsearch, container, false);
78 AppContext.setTitle(AppContext.getResString(R.string.appsearch_title, sSearchQuery));
80 ViewPager viewPager = (ViewPager) oFragmentView.findViewById(R.id.viewpager);
81 setupViewPager(viewPager);
83 TabLayout tabLayout = (TabLayout) oFragmentView.findViewById(R.id.tabs);
84 tabLayout.setupWithViewPager(viewPager);
89 private void setupViewPager(ViewPager viewPager) {
90 final ViewPagerAdapter adapter;
91 if(oAppSearchLViewPagerAdapter != null)
92 adapter = oAppSearchLViewPagerAdapter;
94 adapter = new ViewPagerAdapter(getChildFragmentManager());
95 oAppSearchLViewPagerAdapter = adapter;
97 CampusAppFragment fragment;
98 Bundle args = new Bundle();
99 args.putString("query", sSearchQuery);
100 Log.i("AppSearch", "New result instances: " + sSearchQuery);
102 fragment = new AppSearchInternal();
103 fragment.setArguments(args);
104 adapter.addFragment(AppContext.getResString(R.string.appsearch_inapp), fragment);
106 fragment = new AppSearchDhbw();
107 fragment.setArguments(args);
108 adapter.addFragment(AppContext.getResString(R.string.appsearch_indhbw), fragment);
110 fragment = new AppSearchStuv();
111 fragment.setArguments(args);
112 adapter.addFragment(AppContext.getResString(R.string.appsearch_instuv), fragment);
115 viewPager.setAdapter(adapter);
116 int activeItem = viewPager.getCurrentItem();
117 AppSearchProvider activeProvider = (AppSearchProvider) adapter.getItem(activeItem);
118 activeProvider.executeSearch(false);
120 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
122 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
127 public void onPageSelected(int position) {
128 AppSearchProvider activeProvider = (AppSearchProvider) adapter.getItem(position);
129 activeProvider.executeSearch(false);
133 public void onPageScrollStateChanged(int state) {
140 class ViewPagerAdapter extends FragmentPagerAdapter {
141 private final List<Fragment> mFragmentDataList = new ArrayList<>();
142 private final List<String> mFragmentTitleList = new ArrayList<>();
144 public ViewPagerAdapter(FragmentManager manager) {
149 public Fragment getItem(int position) {
150 return mFragmentDataList.get(position);
154 public int getCount() {
155 return mFragmentDataList.size();
158 public void addFragment(String title, Fragment fragment) {
159 mFragmentDataList.add(fragment);
160 mFragmentTitleList.add(title);
164 public CharSequence getPageTitle(int position) {
165 return mFragmentTitleList.get(position);