You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by ia...@apache.org on 2017/01/11 16:02:25 UTC
[3/4] incubator-taverna-mobile git commit: implementation of search
functionality
implementation of search functionality
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/d14f853f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/d14f853f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/d14f853f
Branch: refs/heads/ian_taverna_server
Commit: d14f853f4dafc83428e679d25699965ab1c78798
Parents: 0bad5eb
Author: Sagar <ku...@gmail.com>
Authored: Sat Dec 31 21:54:04 2016 +0530
Committer: Sagar <ku...@gmail.com>
Committed: Sat Dec 31 21:54:04 2016 +0530
----------------------------------------------------------------------
.../mobile/ui/adapter/WorkflowAdapter.java | 4 +
.../mobile/ui/workflow/WorkflowFragment.java | 96 ++++++++++++++++++--
app/src/main/res/values/strings.xml | 3 +-
3 files changed, 96 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/d14f853f/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
index 977eb7e..7510800 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
@@ -119,6 +119,10 @@ public class WorkflowAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
return mWorkflowList.get(position) != null ? VIEW_ITEM : VIEW_PROG;
}
+ 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/d14f853f/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
index 397a43c..8a93fa9 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
@@ -19,6 +19,8 @@
package org.apache.taverna.mobile.ui.workflow;
+import android.app.SearchManager;
+import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
@@ -27,10 +29,15 @@ import android.support.v4.widget.SwipeRefreshLayout;
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.Toast;
import org.apache.taverna.mobile.R;
import org.apache.taverna.mobile.data.DataManager;
@@ -51,7 +58,9 @@ import butterknife.BindView;
import butterknife.ButterKnife;
public class WorkflowFragment extends Fragment implements WorkflowMvpView,
- RecyclerItemClickListner.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener {
+ RecyclerItemClickListner.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener,
+ SearchView.OnQueryTextListener, SearchView
+ .OnCloseListener {
public final String LOG_TAG = getClass().getSimpleName();
@BindView(R.id.rv_workflows)
@@ -65,16 +74,20 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView,
private WorkflowPresenter mWorkflowPresenter;
private WorkflowAdapter mWorkflowAdapter;
+ private WorkflowAdapter mSearchWorkflowAdapter;
private int mPageNumber = 1;
private List<Workflow> mWorkflowList;
+ private SearchView searchView;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWorkflowList = new ArrayList<>();
DataManager dataManager = new DataManager();
mWorkflowPresenter = new WorkflowPresenter(dataManager);
+ setHasOptionsMenu(true);
}
@Override
@@ -184,11 +197,23 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView,
@Override
public void onItemClick(View childView, int position) {
- if (mWorkflowList.get(position) != null && position != -1) {
- Intent intent = new Intent(getActivity(), WorkflowDetailActivity.class);
- intent.putExtra(Constants.WORKFLOW_ID, mWorkflowList.get(position).getId());
- intent.putExtra(Constants.WORKFLOW_TITLE, mWorkflowList.get(position).getTitle());
- startActivity(intent);
+ if (searchView.isIconified()) {
+ if (mWorkflowAdapter.getItem(position) != null && position != -1) {
+ Intent intent = new Intent(getActivity(), WorkflowDetailActivity.class);
+ intent.putExtra(Constants.WORKFLOW_ID, mWorkflowAdapter.getItem(position).getId());
+ intent.putExtra(Constants.WORKFLOW_TITLE, mWorkflowAdapter.getItem(position)
+ .getTitle());
+ startActivity(intent);
+ }
+ } else {
+ if (mSearchWorkflowAdapter.getItem(position) != null && position != -1) {
+ Intent intent = new Intent(getActivity(), WorkflowDetailActivity.class);
+ intent.putExtra(Constants.WORKFLOW_ID, mSearchWorkflowAdapter.getItem(position)
+ .getId());
+ intent.putExtra(Constants.WORKFLOW_TITLE, mSearchWorkflowAdapter.getItem(position)
+ .getTitle());
+ startActivity(intent);
+ }
}
}
@@ -196,4 +221,63 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView,
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) {
+ mSearchWorkflowAdapter = new WorkflowAdapter(new ArrayList<Workflow>(),
+ getContext());
+ WorkflowAdapter wk = mWorkflowAdapter;
+ 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())) {
+ mSearchWorkflowAdapter.addWorkflow(workflow);
+ }
+ }
+
+ mRecyclerView.swapAdapter(mSearchWorkflowAdapter, true);
+ if (mSearchWorkflowAdapter.getItemCount() == 0)
+
+ Toast.makeText(getActivity(), getString(R.string.msg_no_workflow_found), Toast
+ .LENGTH_SHORT).show();
+ } else {
+ mRecyclerView.swapAdapter(mWorkflowAdapter, 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/d14f853f/app/src/main/res/values/strings.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d063b3f..3b1a0e5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -212,5 +212,6 @@ limitations under the License.
<string name="title_nav_about">About</string>
<string name="title_nav_my_workflows">My Workflows</string>
<string name="title_nav_os_licences">Licence info</string>
- <!-- Strings related to Settings -->
+ <!-- Strings related to message -->
+ <string name="msg_no_workflow_found">No matching criteria workflow found</string>
</resources>