added Search functionality in Favourite section
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/4999704e Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/4999704e Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/4999704e Branch: refs/heads/master Commit: 4999704e20e5d7650d1fdb8e1127df0d2b37acbf Parents: 25524c5 Author: Sagar <[email protected]> Authored: Sat Jan 21 16:22:12 2017 +0530 Committer: Sagar <[email protected]> Committed: Sat Jan 21 16:22:12 2017 +0530 ---------------------------------------------------------------------- .../ui/adapter/FavouriteWorkflowsAdapter.java | 15 ++- .../FavouriteWorkflowsFragment.java | 114 ++++++++++++++++--- .../FavouriteWorkflowDetailActivity.java | 10 +- 3 files changed, 114 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/4999704e/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java index 7e7e10d..c5c462f 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java @@ -25,12 +25,6 @@ package org.apache.taverna.mobile.ui.adapter; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; - -import org.apache.taverna.mobile.R; -import org.apache.taverna.mobile.data.model.Workflow; - import android.content.Context; import android.net.Uri; import android.support.v7.widget.RecyclerView; @@ -40,6 +34,12 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; + +import org.apache.taverna.mobile.R; +import org.apache.taverna.mobile.data.model.Workflow; + import java.util.List; import butterknife.BindView; @@ -107,6 +107,9 @@ public class FavouriteWorkflowsAdapter extends RecyclerView.Adapter<RecyclerView return mWorkflowList.size(); } + public Workflow getItem(int position) { + return mWorkflowList != null ? mWorkflowList.get(position) : null; + } class ViewHolder extends RecyclerView.ViewHolder { http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/4999704e/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java index 134bd54..e4188ff 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java @@ -19,13 +19,8 @@ package org.apache.taverna.mobile.ui.favouriteworkflow; -import org.apache.taverna.mobile.R; -import org.apache.taverna.mobile.data.DataManager; -import org.apache.taverna.mobile.data.model.Workflow; -import org.apache.taverna.mobile.ui.adapter.FavouriteWorkflowsAdapter; -import org.apache.taverna.mobile.ui.adapter.RecyclerItemClickListner; -import org.apache.taverna.mobile.ui.favouriteworkflowdetail.FavouriteWorkflowDetailActivity; - +import android.app.SearchManager; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; @@ -33,11 +28,24 @@ import android.support.v4.app.Fragment; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.SearchView; +import android.text.TextUtils; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; +import android.widget.Toast; + +import org.apache.taverna.mobile.R; +import org.apache.taverna.mobile.data.DataManager; +import org.apache.taverna.mobile.data.model.Workflow; +import org.apache.taverna.mobile.ui.adapter.FavouriteWorkflowsAdapter; +import org.apache.taverna.mobile.ui.adapter.RecyclerItemClickListner; +import org.apache.taverna.mobile.ui.favouriteworkflowdetail.FavouriteWorkflowDetailActivity; +import org.apache.taverna.mobile.utils.Constants; import java.util.ArrayList; import java.util.List; @@ -46,13 +54,12 @@ import butterknife.BindView; import butterknife.ButterKnife; public class FavouriteWorkflowsFragment extends Fragment - implements FavouriteWorkflowsMvpView, RecyclerItemClickListner.OnItemClickListener { + implements FavouriteWorkflowsMvpView, RecyclerItemClickListner.OnItemClickListener, + SearchView.OnCloseListener, SearchView.OnQueryTextListener { public final String LOG_TAG = getClass().getSimpleName(); - public static final String EXTRA_ID = "id"; - public static final String EXTRA_TITLE = "title"; @BindView(R.id.rv_fav_workflows) RecyclerView mRecyclerView; @@ -69,6 +76,8 @@ public class FavouriteWorkflowsFragment extends Fragment private FavouriteWorkflowsAdapter mFavouriteWorkflowsAdapter; private List<Workflow> mWorkflowList; + private SearchView searchView; + private FavouriteWorkflowsAdapter mSearchFavouriteWorkflowAdapter; @Override @@ -80,6 +89,7 @@ public class FavouriteWorkflowsFragment extends Fragment mFavouriteWorkflowsPresenter = new FavouriteWorkflowsPresenter(dataManager); mWorkflowList = new ArrayList<>(); + setHasOptionsMenu(true); } @Override @@ -153,14 +163,90 @@ public class FavouriteWorkflowsFragment extends Fragment @Override public void onItemClick(View childView, int position) { - Intent intent = new Intent(getActivity(), FavouriteWorkflowDetailActivity.class); - intent.putExtra(EXTRA_ID, mWorkflowList.get(position).getId()); - intent.putExtra(EXTRA_TITLE, mWorkflowList.get(position).getTitle()); - startActivity(intent); + + if (searchView.isIconified() || TextUtils.isEmpty(searchView.getQuery())) { + if (mFavouriteWorkflowsAdapter.getItem(position) != null && position != -1) { + Intent intent = new Intent(getActivity(), FavouriteWorkflowDetailActivity.class); + intent.putExtra(Constants.WORKFLOW_ID, mFavouriteWorkflowsAdapter + .getItem(position).getId()); + intent.putExtra(Constants.WORKFLOW_TITLE, mFavouriteWorkflowsAdapter + .getItem(position).getTitle()); + startActivity(intent); + } + } else { + if (mSearchFavouriteWorkflowAdapter.getItem(position) != null && position != -1) { + Intent intent = new Intent(getActivity(), FavouriteWorkflowDetailActivity.class); + intent.putExtra(Constants.WORKFLOW_ID, mSearchFavouriteWorkflowAdapter + .getItem(position).getId()); + intent.putExtra(Constants.WORKFLOW_TITLE, mSearchFavouriteWorkflowAdapter + .getItem(position).getTitle()); + startActivity(intent); + } + } } @Override public void onItemLongPress(View childView, int position) { } + + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context + .SEARCH_SERVICE); + searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); + + searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity() + .getComponentName())); + searchView.setSubmitButtonEnabled(false); + searchView.setOnQueryTextListener(this); + searchView.setOnCloseListener(this); + } + + + private void performSearch(String search) { + mSearchFavouriteWorkflowAdapter = new FavouriteWorkflowsAdapter(new ArrayList<Workflow>(), + getContext()); + FavouriteWorkflowsAdapter wk = mFavouriteWorkflowsAdapter; + if (!TextUtils.isEmpty(search)) { + if (null != wk) + for (int i = 0; i < wk.getItemCount(); i++) { + Workflow workflow = wk.getItem(i); + if (workflow.getTitle().toLowerCase().contains(search.toLowerCase())) { + mSearchFavouriteWorkflowAdapter.addWorkflow(workflow); + } + } + + mRecyclerView.swapAdapter(mSearchFavouriteWorkflowAdapter, true); + if (mSearchFavouriteWorkflowAdapter.getItemCount() == 0) + + Toast.makeText(getActivity(), getString(R.string.msg_no_workflow_found), Toast + .LENGTH_SHORT).show(); + } else { + mRecyclerView.swapAdapter(mFavouriteWorkflowsAdapter, true); + } + } + + @Override + public boolean onQueryTextSubmit(String query) { + performSearch(query); + searchView.clearFocus(); + return true; + } + + @Override + public boolean onQueryTextChange(String newText) { + performSearch(newText); + return true; + } + + + @Override + public boolean onClose() { + return false; + } + + } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/4999704e/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java index fe9c07b..6e84a9e 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java @@ -19,15 +19,15 @@ package org.apache.taverna.mobile.ui.favouriteworkflowdetail; -import org.apache.taverna.mobile.R; -import org.apache.taverna.mobile.ui.favouriteworkflow.FavouriteWorkflowsFragment; - import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import org.apache.taverna.mobile.R; +import org.apache.taverna.mobile.utils.Constants; + import butterknife.BindView; import butterknife.ButterKnife; @@ -50,7 +50,7 @@ public class FavouriteWorkflowDetailActivity extends AppCompatActivity { if (actionbar != null) { actionbar.setHomeButtonEnabled(true); actionbar.setDisplayHomeAsUpEnabled(true); - actionbar.setTitle(getIntent().getStringExtra(FavouriteWorkflowsFragment.EXTRA_TITLE)); + actionbar.setTitle(getIntent().getStringExtra(Constants.WORKFLOW_TITLE)); } @@ -59,7 +59,7 @@ public class FavouriteWorkflowDetailActivity extends AppCompatActivity { .add(R.id.frame_container , FavouriteWorkflowDetailFragment .newInstance(getIntent() - .getStringExtra(FavouriteWorkflowsFragment.EXTRA_ID))) + .getStringExtra(Constants.WORKFLOW_ID))) .commit(); }
