Skip to content
This repository was archived by the owner on Oct 9, 2020. It is now read-only.

Commit f5a62c8

Browse files
committed
Merge pull request #76 from mananwason/search1
#52 Search functionality completed
2 parents a2324ae + 762ffbf commit f5a62c8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1097
-173
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,28 +31,21 @@
3131
<activity
3232
android:name=".activities.TracksActivity"
3333
android:label="@string/title_section_tracks"/>
34+
<activity
35+
android:name=".activities.LocationActivtiy"
36+
android:label="@string/title_section_location"/>
3437
<activity
3538
android:name=".activities.SpeakersActivity"
3639
android:label="@string/title_section_speakerlist"/>
3740

3841
<activity
39-
android:name=".activities.SearchResultsActivity"
40-
android:label="@string/app_name"
41-
android:launchMode="singleTop">
42-
<intent-filter>
43-
<action android:name="android.intent.action.SEARCH"/>
44-
</intent-filter>
45-
<intent-filter>
46-
<action android:name="android.intent.action.VIEW"/>
47-
</intent-filter>
48-
42+
android:name=".activities.SessionDetailActivity"
43+
android:label="@string/session">
4944
<meta-data
5045
android:name="android.app.searchable"
5146
android:resource="@xml/searchable"/>
47+
5248
</activity>
53-
<activity
54-
android:name=".activities.SessionDetailActivity"
55-
android:label="@string/session"/>
5649
</application>
5750

5851
</manifest>
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package org.fossasia.openevent.activities;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.app.AppCompatActivity;
5+
import android.support.v7.widget.DefaultItemAnimator;
6+
import android.support.v7.widget.LinearLayoutManager;
7+
import android.support.v7.widget.RecyclerView;
8+
import android.support.v7.widget.SearchView;
9+
import android.support.v7.widget.Toolbar;
10+
import android.util.Log;
11+
import android.view.Menu;
12+
import android.view.MenuItem;
13+
14+
import org.fossasia.openevent.R;
15+
import org.fossasia.openevent.adapters.SessionsListAdapter;
16+
import org.fossasia.openevent.data.Microlocation;
17+
import org.fossasia.openevent.data.Session;
18+
import org.fossasia.openevent.dbutils.DbSingleton;
19+
import org.fossasia.openevent.utils.IntentStrings;
20+
21+
import java.text.ParseException;
22+
import java.util.ArrayList;
23+
import java.util.List;
24+
25+
/**
26+
* Created by MananWason on 8/18/2015.
27+
*/
28+
public class LocationActivtiy extends AppCompatActivity implements SearchView.OnQueryTextListener {
29+
SessionsListAdapter sessionsListAdapter;
30+
private Microlocation selectedLocation;
31+
private List<Session> mSessions;
32+
private RecyclerView sessionRecyclerView;
33+
private String location;
34+
35+
@Override
36+
protected void onCreate(Bundle savedInstanceState) {
37+
super.onCreate(savedInstanceState);
38+
setContentView(R.layout.activity_locations);
39+
DbSingleton dbSingleton = DbSingleton.getInstance();
40+
location = getIntent().getStringExtra(IntentStrings.MICROLOCATIONS);
41+
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_locations);
42+
setSupportActionBar(toolbar);
43+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
44+
45+
try {
46+
selectedLocation = dbSingleton.getLocationByLocationname(location);
47+
} catch (ParseException e) {
48+
e.printStackTrace();
49+
}
50+
51+
sessionRecyclerView = (RecyclerView) findViewById(R.id.recyclerView_locations);
52+
mSessions = dbSingleton.getSessionbyLocationName(location);
53+
sessionsListAdapter = new SessionsListAdapter(mSessions);
54+
sessionRecyclerView.setLayoutManager(new LinearLayoutManager(this));
55+
sessionRecyclerView.setAdapter(sessionsListAdapter);
56+
sessionRecyclerView.setItemAnimator(new DefaultItemAnimator());
57+
}
58+
59+
60+
@Override
61+
public boolean onOptionsItemSelected(MenuItem item) {
62+
switch (item.getItemId()) {
63+
case android.R.id.home:
64+
finish();
65+
return true;
66+
67+
}
68+
return super.onOptionsItemSelected(item);
69+
}
70+
71+
72+
@Override
73+
public boolean onCreateOptionsMenu(Menu menu) {
74+
getMenuInflater().inflate(R.menu.menu_speakers_activity, menu);
75+
SearchView searchView =
76+
(SearchView) menu.findItem(R.id.search_sessions).getActionView();
77+
searchView.setOnQueryTextListener(this);
78+
return true;
79+
}
80+
81+
@Override
82+
public boolean onQueryTextSubmit(String query) {
83+
return false;
84+
}
85+
86+
@Override
87+
public boolean onQueryTextChange(String query) {
88+
DbSingleton dbSingleton = DbSingleton.getInstance();
89+
90+
mSessions = dbSingleton.getSessionbyLocationName(location);
91+
final List<Session> filteredModelList = filter(mSessions, query);
92+
Log.d("xyz", mSessions.size() + " " + filteredModelList.size());
93+
94+
sessionsListAdapter.animateTo(filteredModelList);
95+
sessionRecyclerView.scrollToPosition(0);
96+
return false;
97+
}
98+
99+
private List<Session> filter(List<Session> sessions, String query) {
100+
query = query.toLowerCase();
101+
102+
final List<Session> filteredTracksList = new ArrayList<>();
103+
for (Session session : sessions) {
104+
final String text = session.getTitle().toLowerCase();
105+
if (text.contains(query)) {
106+
filteredTracksList.add(session);
107+
}
108+
}
109+
return filteredTracksList;
110+
}
111+
}

app/src/main/java/org/fossasia/openevent/activities/MainActivity.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import android.support.v7.widget.Toolbar;
1515
import android.util.Log;
1616
import android.view.Menu;
17-
import android.view.MenuInflater;
1817
import android.view.MenuItem;
1918
import android.view.View;
2019
import android.widget.FrameLayout;
@@ -40,6 +39,7 @@
4039
import org.fossasia.openevent.events.SponsorDownloadEvent;
4140
import org.fossasia.openevent.events.TracksDownloadEvent;
4241
import org.fossasia.openevent.fragments.BookmarksFragment;
42+
import org.fossasia.openevent.fragments.LocationsFragment;
4343
import org.fossasia.openevent.fragments.SpeakerFragment;
4444
import org.fossasia.openevent.fragments.SponsorsFragment;
4545
import org.fossasia.openevent.fragments.TracksFragment;
@@ -183,7 +183,6 @@ private void downloadFailed() {
183183
}
184184

185185
private void setupDrawerContent(NavigationView navigationView, final Menu menu) {
186-
final MenuInflater inflater = getMenuInflater();
187186
navigationView.setNavigationItemSelectedListener(
188187
new NavigationView.OnNavigationItemSelectedListener() {
189188
@Override
@@ -197,25 +196,26 @@ public boolean onNavigationItemSelected(MenuItem menuItem) {
197196
fragmentManager.beginTransaction()
198197
.replace(R.id.content_frame, new TracksFragment()).commit();
199198
getSupportActionBar().setTitle(R.string.menu_tracks);
200-
inflater.inflate(R.menu.menu_tracks, menu);
201199
break;
202200
case R.id.nav_bookmarks:
203201
fragmentManager.beginTransaction()
204202
.replace(R.id.content_frame, new BookmarksFragment()).commit();
205203
getSupportActionBar().setTitle(R.string.menu_bookmarks);
206-
inflater.inflate(R.menu.menu_bookmarks, menu);
207204
break;
208205
case R.id.nav_speakers:
209206
fragmentManager.beginTransaction()
210207
.replace(R.id.content_frame, new SpeakerFragment()).commit();
211208
getSupportActionBar().setTitle(R.string.menu_speakers);
212-
inflater.inflate(R.menu.menu_speakers, menu);
213209
break;
214210
case R.id.nav_sponsors:
215211
fragmentManager.beginTransaction()
216212
.replace(R.id.content_frame, new SponsorsFragment()).commit();
217213
getSupportActionBar().setTitle(R.string.menu_sponsor);
218-
inflater.inflate(R.menu.menu_sponsors, menu);
214+
break;
215+
case R.id.nav_locations:
216+
fragmentManager.beginTransaction()
217+
.replace(R.id.content_frame, new LocationsFragment()).commit();
218+
getSupportActionBar().setTitle(R.string.menu_locations);
219219
break;
220220
case R.id.nav_map:
221221
Bundle latlng = new Bundle();
@@ -238,7 +238,6 @@ public boolean onNavigationItemSelected(MenuItem menuItem) {
238238
.provideMapModule()
239239
.provideMapFragment()).commit();
240240
getSupportActionBar().setTitle(R.string.menu_map);
241-
inflater.inflate(R.menu.menu_map, menu);
242241
break;
243242
}
244243
mDrawerLayout.closeDrawers();

app/src/main/java/org/fossasia/openevent/activities/SearchResultsActivity.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

app/src/main/java/org/fossasia/openevent/activities/SessionDetailActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
import android.view.MenuItem;
1212
import android.widget.TextView;
1313

14-
import org.fossasia.openevent.adapters.SpeakersListAdapter;
1514
import org.fossasia.openevent.R;
15+
import org.fossasia.openevent.adapters.SpeakersListAdapter;
1616
import org.fossasia.openevent.data.Session;
1717
import org.fossasia.openevent.data.Speaker;
1818
import org.fossasia.openevent.dbutils.DbSingleton;

app/src/main/java/org/fossasia/openevent/activities/SpeakersActivity.java

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,40 @@
66
import android.support.v7.widget.DefaultItemAnimator;
77
import android.support.v7.widget.LinearLayoutManager;
88
import android.support.v7.widget.RecyclerView;
9+
import android.support.v7.widget.SearchView;
910
import android.support.v7.widget.Toolbar;
11+
import android.util.Log;
1012
import android.view.Menu;
1113
import android.view.MenuItem;
1214
import android.widget.ImageView;
1315
import android.widget.TextView;
1416

15-
import org.fossasia.openevent.adapters.SessionsListAdapter;
1617
import org.fossasia.openevent.R;
18+
import org.fossasia.openevent.adapters.SessionsListAdapter;
1719
import org.fossasia.openevent.data.Session;
1820
import org.fossasia.openevent.data.Speaker;
1921
import org.fossasia.openevent.dbutils.DbSingleton;
2022
import org.fossasia.openevent.utils.SpeakerIntent;
2123

2224
import java.text.ParseException;
25+
import java.util.ArrayList;
2326
import java.util.List;
2427

2528
/**
2629
* Created by MananWason on 30-06-2015.
2730
*/
28-
public class SpeakersActivity extends AppCompatActivity {
31+
public class SpeakersActivity extends AppCompatActivity implements SearchView.OnQueryTextListener{
2932
SessionsListAdapter sessionsListAdapter;
3033
private Speaker selectedSpeaker;
31-
32-
34+
private List<Session> mSessions;
35+
private RecyclerView sessionRecyclerView;
36+
private String speaker;
3337
@Override
3438
protected void onCreate(Bundle savedInstanceState) {
3539
super.onCreate(savedInstanceState);
3640
setContentView(R.layout.activity_speakers);
3741
DbSingleton dbSingleton = DbSingleton.getInstance();
38-
String speaker = getIntent().getStringExtra(Speaker.SPEAKER);
42+
speaker = getIntent().getStringExtra(Speaker.SPEAKER);
3943
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_speakers);
4044
setSupportActionBar(toolbar);
4145
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@@ -60,16 +64,12 @@ protected void onCreate(Bundle savedInstanceState) {
6064
speakerIntent.clickedImage(fb);
6165
speakerIntent.clickedImage(twitter);
6266

63-
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView_speakers);
64-
try {
65-
List<Session> sessionList = dbSingleton.getSessionbySpeakersName(speaker);
66-
sessionsListAdapter = new SessionsListAdapter(sessionList);
67-
} catch (ParseException e) {
68-
e.printStackTrace();
69-
}
70-
recyclerView.setLayoutManager(new LinearLayoutManager(this));
71-
recyclerView.setAdapter(sessionsListAdapter);
72-
recyclerView.setItemAnimator(new DefaultItemAnimator());
67+
sessionRecyclerView = (RecyclerView) findViewById(R.id.recyclerView_speakers);
68+
mSessions = dbSingleton.getSessionbySpeakersName(speaker);
69+
sessionsListAdapter = new SessionsListAdapter(mSessions);
70+
sessionRecyclerView.setLayoutManager(new LinearLayoutManager(this));
71+
sessionRecyclerView.setAdapter(sessionsListAdapter);
72+
sessionRecyclerView.setItemAnimator(new DefaultItemAnimator());
7373
}
7474

7575

@@ -92,6 +92,39 @@ public boolean onOptionsItemSelected(MenuItem item) {
9292
@Override
9393
public boolean onCreateOptionsMenu(Menu menu) {
9494
getMenuInflater().inflate(R.menu.menu_speakers_activity, menu);
95+
SearchView searchView =
96+
(SearchView) menu.findItem(R.id.search_sessions).getActionView();
97+
searchView.setOnQueryTextListener(this);
9598
return true;
9699
}
100+
101+
@Override
102+
public boolean onQueryTextSubmit(String query) {
103+
return false;
104+
}
105+
106+
@Override
107+
public boolean onQueryTextChange(String query) {
108+
DbSingleton dbSingleton = DbSingleton.getInstance();
109+
110+
mSessions = dbSingleton.getSessionbySpeakersName(speaker);
111+
final List<Session> filteredModelList = filter(mSessions, query);
112+
Log.d("xyz", mSessions.size() + " " + filteredModelList.size());
113+
114+
sessionsListAdapter.animateTo(filteredModelList);
115+
sessionRecyclerView.scrollToPosition(0);
116+
return false;
117+
}
118+
private List<Session> filter(List<Session> sessions, String query) {
119+
query = query.toLowerCase();
120+
121+
final List<Session> filteredTracksList = new ArrayList<>();
122+
for (Session session : sessions) {
123+
final String text = session.getTitle().toLowerCase();
124+
if (text.contains(query)) {
125+
filteredTracksList.add(session);
126+
}
127+
}
128+
return filteredTracksList;
129+
}
97130
}

0 commit comments

Comments
 (0)