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;
+    }
+
 }

Reply via email to