Commit 4eefdbff authored by Sajal Narang's avatar Sajal Narang

Add search to Placement blog

parent f6421496
......@@ -30,6 +30,7 @@ import com.squareup.picasso.Picasso;
import app.insti.api.UnsafeOkHttpClient;
import app.insti.data.Body;
import app.insti.data.User;
import app.insti.fragment.BackHandledFragment;
import app.insti.fragment.BodyFragment;
import app.insti.fragment.CalendarFragment;
import app.insti.fragment.ExploreFragment;
......@@ -50,7 +51,7 @@ import static app.insti.Constants.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE;
import static app.insti.Constants.RESULT_LOAD_IMAGE;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, BackHandledFragment.BackHandlerInterface {
private static final String TAG = "MainActivity";
......@@ -58,6 +59,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
FeedFragment feedFragment;
private User currentUser;
private boolean showNotifications = false;
private BackHandledFragment selectedFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -168,13 +170,16 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (feedFragment != null && feedFragment.isVisible()) {
finish();
} else {
super.onBackPressed();
if(selectedFragment == null || !selectedFragment.onBackPressed()) {
// Selected fragment did not consume the back press event.
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (feedFragment != null && feedFragment.isVisible()) {
finish();
} else {
super.onBackPressed();
}
}
}
......@@ -364,4 +369,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
@Override
public void setSelectedFragment(BackHandledFragment backHandledFragment) {
this.selectedFragment = backHandledFragment;
}
}
......@@ -31,6 +31,9 @@ public interface DbDao {
@Query("SELECT * FROM placementBlogPosts")
List<PlacementBlogPost> getAllPlacementBlogPosts();
@Query("SELECT * FROM placementBlogPosts WHERE title LIKE :query OR content LIKE :query")
List<PlacementBlogPost> searchPlacementBlogPosts(String query);
@Query("SELECT * FROM trainingBlogPosts")
List<TrainingBlogPost> getAllTrainingBlogPosts();
......
......@@ -10,8 +10,12 @@ import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
......@@ -21,6 +25,7 @@ import java.util.List;
import app.insti.ActivityBuffer;
import app.insti.Constants;
import app.insti.ItemClickListener;
import app.insti.MainActivity;
import app.insti.R;
import app.insti.adapter.PlacementBlogAdapter;
import app.insti.api.RetrofitInterface;
......@@ -37,6 +42,7 @@ import retrofit2.Response;
public class PlacementBlogFragment extends BaseFragment {
private RecyclerView placementFeedRecyclerView;
private PlacementBlogAdapter placementBlogAdapter;
private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase;
private boolean freshBlogDisplayed = false;
......@@ -62,6 +68,8 @@ public class PlacementBlogFragment extends BaseFragment {
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("Placement Blog");
setHasOptionsMenu(true);
appDatabase = AppDatabase.getAppDatabase(getContext());
new PlacementBlogFragment.showPlacementBlogFromDB().execute();
......@@ -104,7 +112,7 @@ public class PlacementBlogFragment extends BaseFragment {
/* Skip if we're already destroyed */
if (getActivity() == null || getView() == null) return;
final PlacementBlogAdapter placementBlogAdapter = new PlacementBlogAdapter(result, new ItemClickListener() {
placementBlogAdapter = new PlacementBlogAdapter(result, new ItemClickListener() {
@Override
public void onItemClick(View v, int position) {
openWebURL(result.get(position).getLink());
......@@ -188,4 +196,42 @@ public class PlacementBlogFragment extends BaseFragment {
}
}
}
private class performSearch extends AsyncTask<String, Void, List<PlacementBlogPost>> {
@Override
protected List<PlacementBlogPost> doInBackground(String... args) {
return appDatabase.dbDao().searchPlacementBlogPosts(args[0]);
}
protected void onPostExecute(List<PlacementBlogPost> result) {
displayPlacementFeed(result);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_view_menu, menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView sv = new SearchView(((MainActivity) getActivity()).getSupportActionBar().getThemedContext());
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItem.SHOW_AS_ACTION_IF_ROOM);
item.setActionView(sv);
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
performSearch(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
System.out.println("tap");
return false;
}
});
}
private void performSearch(String query) {
new performSearch().execute("%" + query + "%");
showLoader = false;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment