Repository: incubator-taverna-mobile Updated Branches: refs/heads/master 4d6ecbc90 -> e1aa16800
refactored the workflow code and enhance code quality 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/08342b63 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/08342b63 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/08342b63 Branch: refs/heads/master Commit: 08342b63441f86b5bf22a4de0424b800072bd8a5 Parents: 03b5b4c Author: Rajan Maurya <[email protected]> Authored: Tue Nov 1 12:36:06 2016 +0530 Committer: Rajan Maurya <[email protected]> Committed: Tue Nov 1 12:36:06 2016 +0530 ---------------------------------------------------------------------- .../mobile/ui/adapter/WorkflowAdapter.java | 17 ++-- .../mobile/ui/workflow/WorkflowFragment.java | 90 +++++++------------- .../mobile/ui/workflow/WorkflowMvpView.java | 2 +- .../mobile/ui/workflow/WorkflowPresenter.java | 7 +- .../workflowdetail/WorkflowDetailActivity.java | 14 +-- .../apache/taverna/mobile/utils/Constants.java | 4 + app/src/main/res/layout/fragment_dashboard.xml | 3 +- app/src/main/res/values/colors.xml | 36 ++++++++ 8 files changed, 91 insertions(+), 82 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/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 dc6908c..cb06667 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 @@ -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; @@ -41,6 +35,12 @@ import android.widget.ImageView; import android.widget.ProgressBar; 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; @@ -66,7 +66,6 @@ public class WorkflowAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde public void addWorkflow(Workflow workflow) { this.mWorkflowList.add(workflow); this.notifyDataSetChanged(); - } @Override @@ -76,12 +75,10 @@ public class WorkflowAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde if (viewType == VIEW_ITEM) { View v = LayoutInflater.from(parent.getContext()).inflate( R.layout.item_recyclerview_dashboard, parent, false); - vh = new ViewHolder(v); } else { View v = LayoutInflater.from(parent.getContext()).inflate( R.layout.item_progressbar, parent, false); - vh = new ProgressViewHolder(v); } return vh; @@ -95,7 +92,6 @@ public class WorkflowAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde String date = workflow.getCreatedAt() .substring(0, workflow.getCreatedAt().indexOf(' ')); - ((ViewHolder) holder).tvDate.setText(date); ((ViewHolder) holder).tvTitle.setText(workflow.getTitle()); ((ViewHolder) holder).tvType.setText(workflow.getType().getContent()); @@ -114,7 +110,6 @@ public class WorkflowAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde @Override public int getItemCount() { - //Log.d(TAG, "getItemCount: " + mWorkflowList.size()); return mWorkflowList.size(); } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/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 44033f4..d04b15d 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 @@ -27,7 +27,6 @@ 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.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -42,6 +41,7 @@ import org.apache.taverna.mobile.ui.adapter.RecyclerItemClickListner; import org.apache.taverna.mobile.ui.adapter.WorkflowAdapter; import org.apache.taverna.mobile.ui.workflowdetail.WorkflowDetailActivity; import org.apache.taverna.mobile.utils.ConnectionInfo; +import org.apache.taverna.mobile.utils.Constants; import org.apache.taverna.mobile.utils.ScrollChildSwipeRefreshLayout; import java.util.ArrayList; @@ -51,7 +51,7 @@ import butterknife.BindView; import butterknife.ButterKnife; public class WorkflowFragment extends Fragment implements WorkflowMvpView, - RecyclerItemClickListner.OnItemClickListener { + RecyclerItemClickListner.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener { public final String LOG_TAG = getClass().getSimpleName(); @BindView(R.id.rv_workflows) @@ -63,130 +63,103 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView, @BindView(R.id.swipe_refresh) ScrollChildSwipeRefreshLayout mSwipeRefresh; - private DataManager dataManager; - private WorkflowPresenter mWorkflowPresenter; - private WorkflowAdapter mWorkflowAdapter; - private int mPageNumber = 1; private List<Workflow> mWorkflowList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mWorkflowList = new ArrayList<>(); - dataManager = new DataManager(); + DataManager dataManager = new DataManager(); mWorkflowPresenter = new WorkflowPresenter(dataManager); - } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false); ButterKnife.bind(this, rootView); mWorkflowPresenter.attachView(this); final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); - mRecyclerView.setLayoutManager(layoutManager); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); mRecyclerView.hasFixedSize(); - - mWorkflowAdapter = new WorkflowAdapter(mWorkflowList, getContext()); - + mWorkflowAdapter = new WorkflowAdapter(mWorkflowList, getActivity()); mRecyclerView.setAdapter(mWorkflowAdapter); mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListner(getActivity(), this)); - showProgressbar(true); mWorkflowPresenter.loadAllWorkflow(mPageNumber); mRecyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener(layoutManager) { @Override public void onLoadMore(int current_page) { - if (ConnectionInfo.isConnectingToInternet(getContext()) && mWorkflowList.size() % 10 == 0) { mWorkflowList.add(null); mWorkflowAdapter.notifyItemInserted(mWorkflowList.size()); ++mPageNumber; mWorkflowPresenter.loadAllWorkflow(mPageNumber); - Log.d(LOG_TAG, "Loading more"); } else if (!ConnectionInfo.isConnectingToInternet(getContext())) { - Log.d(LOG_TAG, "Internet not available. Not loading more posts."); - showErrorSnackBar(); + showSnackBar(getActivity().getString(R.string.no_internet_connection)); } } }); - mSwipeRefresh.setColorSchemeResources(R.color.colorAccent, R.color.colorAccent, R.color - .colorPrimary); - mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - if (ConnectionInfo.isConnectingToInternet(getContext())) { - - mPageNumber = 1; - mWorkflowPresenter.loadAllWorkflow(mPageNumber); - - mSwipeRefresh.setRefreshing(true); + mSwipeRefresh.setColorSchemeColors(getActivity() + .getResources().getIntArray(R.array.swipeRefreshColors)); + mSwipeRefresh.setOnRefreshListener(this); - Log.d(LOG_TAG, "Swipe Refresh"); + return rootView; + } - } else { - Log.d(LOG_TAG, "NO Internet Connection"); - showErrorSnackBar(); - if (mSwipeRefresh.isRefreshing()) { - mSwipeRefresh.setRefreshing(false); - } - } + @Override + public void onRefresh() { + if (ConnectionInfo.isConnectingToInternet(getContext())) { + mPageNumber = 1; + mWorkflowPresenter.loadAllWorkflow(mPageNumber); + mSwipeRefresh.setRefreshing(true); + } else { + showSnackBar(getActivity().getString(R.string.no_internet_connection)); + if (mSwipeRefresh.isRefreshing()) { + mSwipeRefresh.setRefreshing(false); } - }); - - - return rootView; + } } @Override - public void showProgressbar(boolean b) { - - if (b) { + public void showProgressbar(boolean show) { + mSwipeRefresh.setRefreshing(show); + if (show && mWorkflowAdapter.getItemCount() == 0) { mProgressBar.setVisibility(View.VISIBLE); + mSwipeRefresh.setRefreshing(false); } else { mProgressBar.setVisibility(View.GONE); - mRecyclerView.setVisibility(View.VISIBLE); } } @Override - public void showErrorSnackBar() { - - final Snackbar snackbar = Snackbar.make(mRecyclerView, "NO Internet Connection", Snackbar - .LENGTH_INDEFINITE); - snackbar.setAction("OK", new View.OnClickListener() { + public void showSnackBar(String message) { + final Snackbar snackbar = Snackbar.make(mRecyclerView, message, Snackbar.LENGTH_INDEFINITE); + snackbar.setAction(getActivity().getString(R.string.ok), new View.OnClickListener() { @Override public void onClick(View view) { snackbar.dismiss(); } }); - snackbar.show(); } @Override public void showWorkflows(Workflows workflows) { - - if (mSwipeRefresh.isRefreshing()) { - mSwipeRefresh.setRefreshing(false); + if (mPageNumber == 1) { mWorkflowList.clear(); } - mWorkflowList.addAll(workflows.getWorkflowList()); mWorkflowAdapter.notifyDataSetChanged(); } @@ -196,7 +169,6 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView, if (mPageNumber != 1) { mWorkflowList.remove(mWorkflowList.size() - 1); mWorkflowAdapter.notifyDataSetChanged(); - } } @@ -210,8 +182,8 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView, public void onItemClick(View childView, int position) { if (mWorkflowList.get(position) != null && position != -1) { Intent intent = new Intent(getActivity(), WorkflowDetailActivity.class); - intent.putExtra("id", mWorkflowList.get(position).getId()); - intent.putExtra("title", mWorkflowList.get(position).getTitle()); + intent.putExtra(Constants.WORKFLOW_ID, mWorkflowList.get(position).getId()); + intent.putExtra(Constants.WORKFLOW_TITLE, mWorkflowList.get(position).getTitle()); startActivity(intent); } } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowMvpView.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowMvpView.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowMvpView.java index 677eb1d..2d09336 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowMvpView.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowMvpView.java @@ -26,7 +26,7 @@ public interface WorkflowMvpView extends MvpView { void showProgressbar(boolean b); - void showErrorSnackBar(); + void showSnackBar(String message); void showWorkflows(Workflows workflows); http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java index 5d62a25..22192f7 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java @@ -33,7 +33,7 @@ import rx.schedulers.Schedulers; public class WorkflowPresenter extends BasePresenter<WorkflowMvpView> { - public final String LOG_TAG = getClass().getSimpleName(); + public final String LOG_TAG = WorkflowPresenter.class.getSimpleName(); private DataManager mDataManager; private Subscription mSubscriptions; @@ -54,6 +54,7 @@ public class WorkflowPresenter extends BasePresenter<WorkflowMvpView> { } public void loadAllWorkflow(int pageNumber) { + getMvpView().showProgressbar(true); if (mSubscriptions != null) mSubscriptions.unsubscribe(); mSubscriptions = mDataManager.getAllWorkflow(getQueryOptions(pageNumber)) .observeOn(AndroidSchedulers.mainThread()) @@ -61,25 +62,25 @@ public class WorkflowPresenter extends BasePresenter<WorkflowMvpView> { .subscribe(new Observer<Workflows>() { @Override public void onCompleted() { - getMvpView().showProgressbar(false); } @Override public void onError(Throwable e) { getMvpView().showProgressbar(false); + getMvpView().showSnackBar("Failed to load workflow"); } @Override public void onNext(Workflows workflows) { getMvpView().removeLoadMoreProgressbar(); getMvpView().showWorkflows(workflows); + getMvpView().showProgressbar(false); } }); } private Map<String, String> getQueryOptions(int pageNumber) { - Map<String, String> option = new HashMap<>(); option.put("elements", "title,type,uploader,preview,created-at"); option.put("page", String.valueOf(pageNumber)); http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailActivity.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailActivity.java index 1f03ac1..8aa5d70 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailActivity.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailActivity.java @@ -19,14 +19,15 @@ package org.apache.taverna.mobile.ui.workflowdetail; -import org.apache.taverna.mobile.R; - 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; @@ -43,20 +44,21 @@ public class WorkflowDetailActivity extends AppCompatActivity { ButterKnife.bind(this); setSupportActionBar(mToolbar); - ActionBar actionbar = getSupportActionBar(); + String workflowTitle = getIntent().getStringExtra(Constants.WORKFLOW_TITLE); + String workflowId = getIntent().getStringExtra(Constants.WORKFLOW_ID); + if (actionbar != null) { actionbar.setHomeButtonEnabled(true); actionbar.setDisplayHomeAsUpEnabled(true); - actionbar.setTitle(getIntent().getStringExtra("title")); + actionbar.setTitle(workflowTitle); } if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() - .add(R.id.frame_container - , WorkflowDetailFragment.newInstance(getIntent().getStringExtra("id"))) + .add(R.id.frame_container, WorkflowDetailFragment.newInstance(workflowId)) .commit(); } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java b/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java index 17499c2..b4a0832 100644 --- a/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java +++ b/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java @@ -26,4 +26,8 @@ public class Constants { public static final String ARGS_URL = "url"; public static final String WORKFLOW_URL = "Workflow_url"; + + public static final String WORKFLOW_ID = "workflow_id"; + + public static final String WORKFLOW_TITLE = "workflow_title"; } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/app/src/main/res/layout/fragment_dashboard.xml ---------------------------------------------------------------------- diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml index 0f960dc..c16fb63 100644 --- a/app/src/main/res/layout/fragment_dashboard.xml +++ b/app/src/main/res/layout/fragment_dashboard.xml @@ -40,8 +40,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" - android:padding="@dimen/item_offset" - android:visibility="gone"/> + android:padding="@dimen/item_offset"/> </org.apache.taverna.mobile.utils.ScrollChildSwipeRefreshLayout> <ProgressBar http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/08342b63/app/src/main/res/values/colors.xml ---------------------------------------------------------------------- diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 718bedb..1225ace 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -23,4 +23,40 @@ <color name="button_click_background">#e0e0e0</color> <color name="black_background">#EE2196F3</color> <color name="grey_background">#e0e0e0</color> + + <!-- A light Holo shade of blue --> + <color name="blue_light">#ff33b5e5</color> + <!-- A light Holo shade of gray --> + <color name="gray_light">#33999999</color> + <!-- A dark Holo shade of gray --> + <color name="gray_dark">#BB666666</color> + <!-- A light Holo shade of green --> + <color name="green_light">#ff99cc00</color> + <!-- A light Holo shade of red --> + <color name="red_light">#ffff4444</color> + <!-- A dark Holo shade of blue --> + <color name="blue_dark">#ff0099cc</color> + <!-- A dark Holo shade of green --> + <color name="green_dark">#ff669900</color> + <!-- A dark Holo shade of red --> + <color name="red_dark">#ffcc0000</color> + <!-- A Holo shade of purple --> + <color name="purple">#ffaa66cc</color> + <!-- A light Holo shade of orange --> + <color name="orange_light">#ffffbb33</color> + <!-- A dark Holo shade of orange --> + <color name="orange_dark">#ffff8800</color> + <!-- A really bright Holo shade of blue --> + <color name="blue_bright">#ff00ddff</color> + <!-- A really bright Holo shade of gray --> + <color name="gray_bright">#33CCCCCC</color> + + <!--Swipe Refresh Colors--> + <array name="swipeRefreshColors"> + <item>@color/blue_light</item> + <item>@color/green_light</item> + <item>@color/red_light</item> + <item>@color/orange_light</item> + </array> + </resources> \ No newline at end of file
