add licence working to fragment using presenter and MvpView
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/608a61cf Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/608a61cf Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/608a61cf Branch: refs/heads/master Commit: 608a61cf761fbec6a4e3edd9c17d75c880e483e6 Parents: 0e59d8e Author: Sagar <[email protected]> Authored: Sat Jul 2 00:34:02 2016 +0530 Committer: Sagar <[email protected]> Committed: Sat Jul 2 00:34:02 2016 +0530 ---------------------------------------------------------------------- .../workflowdetail/WorkflowDetailFragment.java | 61 +++++++++++++++++++- .../workflowdetail/WorkflowDetailMvpView.java | 3 + .../workflowdetail/WorkflowDetailPresenter.java | 34 +++++++++++ 3 files changed, 96 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/608a61cf/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailFragment.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailFragment.java index 22b96ea..bcd4f57 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailFragment.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailFragment.java @@ -7,6 +7,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import org.apache.taverna.mobile.R; import org.apache.taverna.mobile.data.DataManager; import org.apache.taverna.mobile.data.model.DetailWorkflow; +import org.apache.taverna.mobile.data.model.License; import org.apache.taverna.mobile.data.model.User; import org.apache.taverna.mobile.utils.ConnectionInfo; @@ -14,6 +15,7 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; +import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -21,6 +23,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; +import android.widget.Button; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RelativeLayout; @@ -64,6 +67,8 @@ public class WorkflowDetailFragment extends Fragment implements WorkflowDetailMv @BindView(R.id.rootLayout) RelativeLayout rootLayout; + private AlertDialog alertDialog; + private DataManager dataManager; private WorkflowDetailPresenter mWorkflowDetailPresenter; @@ -74,6 +79,8 @@ public class WorkflowDetailFragment extends Fragment implements WorkflowDetailMv private String id; + private String licenceId = null; + public static WorkflowDetailFragment newInstance(String id) { Bundle args = new Bundle(); @@ -134,9 +141,20 @@ public class WorkflowDetailFragment extends Fragment implements WorkflowDetailMv @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()){ + switch (item.getItemId()) { case R.id.licence: + if (licenceId == null) { + + showErrorSnackBar("Please wait"); + } else if (licenceId.isEmpty()) { + + showErrorSnackBar("No Licence Found"); + } else { + + mWorkflowDetailPresenter.loadLicenseDetail(licenceId); + } + return true; } @@ -158,7 +176,8 @@ public class WorkflowDetailFragment extends Fragment implements WorkflowDetailMv public void showWorkflowDetail(DetailWorkflow detailWorkflow) { uploaderName.setText(detailWorkflow.getUploader().getContent()); - date.setText(detailWorkflow.getUpdatedAt()); + date.setText(detailWorkflow.getUpdatedAt() + .substring(0, detailWorkflow.getUpdatedAt().indexOf(' '))); type.setText(detailWorkflow.getType().getContent()); title.setText(detailWorkflow.getTitle()); description.loadData(detailWorkflow.getDescription(), "text/html", "utf-8"); @@ -169,6 +188,13 @@ public class WorkflowDetailFragment extends Fragment implements WorkflowDetailMv .placeholder(R.drawable.placeholder) .error(R.drawable.placeholder) .into(workflowImage); + + if (detailWorkflow.getLicenseType().getId() == null) { + licenceId = ""; + } else { + licenceId = detailWorkflow.getLicenseType().getId(); + } + } @Override @@ -200,6 +226,37 @@ public class WorkflowDetailFragment extends Fragment implements WorkflowDetailMv } @Override + public void showLicence(License license) { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getContext()); + + LayoutInflater inflater = getActivity().getLayoutInflater(); + + View dialogView = inflater.inflate(R.layout.dialog_licence_detail_workflow, null); + + dialogBuilder.setView(dialogView); + + TextView title = ButterKnife.findById(dialogView, R.id.tvDialogTitle); + TextView date = ButterKnife.findById(dialogView, R.id.tvDialogDate); + WebView text = ButterKnife.findById(dialogView, R.id.wvDialogText); + Button buttonOk = ButterKnife.findById(dialogView, R.id.bDialogOK); + + buttonOk.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + alertDialog.dismiss(); + } + }); + + text.loadDataWithBaseURL("", license.getDescription(), "text/html", "utf-8", ""); + date.setText(license.getCreatedAt().substring(0, license.getCreatedAt().indexOf(' '))); + title.setText(license.getTitle()); + + alertDialog = dialogBuilder.create(); + + alertDialog.show(); + } + + @Override public void onDestroyView() { super.onDestroyView(); mWorkflowDetailPresenter.detachView(); http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/608a61cf/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailMvpView.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailMvpView.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailMvpView.java index 3d98952..30e1687 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailMvpView.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailMvpView.java @@ -2,6 +2,7 @@ package org.apache.taverna.mobile.ui.workflowdetail; import org.apache.taverna.mobile.data.model.DetailWorkflow; +import org.apache.taverna.mobile.data.model.License; import org.apache.taverna.mobile.data.model.User; import org.apache.taverna.mobile.ui.base.MvpView; @@ -14,4 +15,6 @@ public interface WorkflowDetailMvpView extends MvpView { void setImage(User user); void showErrorSnackBar(String error); + + void showLicence(License license); } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/608a61cf/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailPresenter.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailPresenter.java index 4bb5cff..c52584a 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailPresenter.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflowdetail/WorkflowDetailPresenter.java @@ -2,6 +2,7 @@ package org.apache.taverna.mobile.ui.workflowdetail; import org.apache.taverna.mobile.data.DataManager; import org.apache.taverna.mobile.data.model.DetailWorkflow; +import org.apache.taverna.mobile.data.model.License; import org.apache.taverna.mobile.data.model.User; import org.apache.taverna.mobile.ui.base.BasePresenter; @@ -88,6 +89,32 @@ public class WorkflowDetailPresenter extends BasePresenter<WorkflowDetailMvpView }); } + public void loadLicenseDetail(String id) { + + if (mSubscriptions != null) mSubscriptions.unsubscribe(); + mSubscriptions = mDataManager.getLicenseDetail(id, getLicenceQueryOptions()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Observer<License>() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + + getMvpView().showErrorSnackBar("Something went wrong please try after " + + "sometime"); + } + + @Override + public void onNext(License license) { + getMvpView().showLicence(license); + } + }); + } + private Map<String, String> getDetailQueryOptions() { Map<String, String> option = new HashMap<>(); @@ -103,4 +130,11 @@ public class WorkflowDetailPresenter extends BasePresenter<WorkflowDetailMvpView return option; } + private Map<String, String> getLicenceQueryOptions() { + + Map<String, String> option = new HashMap<>(); + option.put("elements", "title,description,url,created-at"); + return option; + } + }
