Add unshare with user option to share with view
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / fragment / ShareFileFragment.java
index 90304d2..4546cc0 100644 (file)
 package com.owncloud.android.ui.fragment;
 
 import android.accounts.Account;
-import android.accounts.AuthenticatorException;
-import android.accounts.OperationCanceledException;
 import android.app.Activity;
 import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
-import com.owncloud.android.lib.common.OwnCloudAccount;
-import com.owncloud.android.lib.common.OwnCloudClient;
-import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
-import com.owncloud.android.lib.common.accounts.AccountUtils;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
-import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.shares.OCShare;
 import com.owncloud.android.lib.resources.shares.ShareType;
-import com.owncloud.android.operations.GetSharesForFileOperation;
-import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.ShareActivity;
-import com.owncloud.android.ui.adapter.LocalFileListAdapter;
 import com.owncloud.android.ui.adapter.ShareUserListAdapter;
-import com.owncloud.android.utils.CopyTmpFileAsyncTask;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.GetShareWithUserAsyncTask;
 import com.owncloud.android.utils.MimetypeIconUtil;
 
-import java.io.IOException;
 import java.util.ArrayList;
 
 /**
@@ -74,7 +63,7 @@ import java.util.ArrayList;
  * create an instance of this fragment.
  */
 public class ShareFileFragment extends Fragment
-        implements GetShareWithUserAsyncTask.OnGetSharesWithUserTaskListener{
+        implements GetShareWithUserAsyncTask.OnGetSharesWithUserTaskListener, View.OnTouchListener {
     private static final String TAG = ShareFileFragment.class.getSimpleName();
 
     // the fragment initialization parameters
@@ -172,7 +161,7 @@ public class ShareFileFragment extends Fragment
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
 
-        getShares(mFile);
+        getShares();
     }
 
     // TODO: Rename method, update argument and hook method into UI event
@@ -200,26 +189,14 @@ public class ShareFileFragment extends Fragment
     }
 
     // Get users and groups to fill the "share with" list
-    private void getShares(OCFile file){
+    private void getShares(){
         mShares = new ArrayList<>();
 
-        RemoteOperationResult result = null;
-
-        // Show loading
-        // TODO: Activate loading
-//        ( (ShareActivity) getActivity()).showWaitingLoadDialog();
         // Get Users and Groups
-        GetShareWithUserAsyncTask getTask = new GetShareWithUserAsyncTask(this);
         FileDataStorageManager fileDataStorageManager =
                 new FileDataStorageManager(mAccount, getActivity().getContentResolver());
         mShares = fileDataStorageManager.getSharesWithForAFile(mFile.getRemotePath(), mAccount.name);
 
-//        Object[] params = { mFile, mAccount, fileDataStorageManager};
-//        getTask.execute(params);
-
-//        // Remove loading
-//        ((ShareActivity) getActivity()).dismissWaitingLoadDialog();
-
         // Update list of users/groups
         updateListOfUserGroups();
     }
@@ -260,12 +237,38 @@ public class ShareFileFragment extends Fragment
             usersList.setVisibility(View.VISIBLE);
             usersList.setAdapter(mUserGroupsAdapter);
 
+            // Add unshare options
+            registerLongClickListener(usersList);
+
         } else {
             noShares.setVisibility(View.VISIBLE);
             usersList.setVisibility(View.GONE);
         }
     }
 
+    private void registerLongClickListener(final ListView listView) {
+        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
+            @Override
+            public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
+                                           long id) {
+                // Show unshare button
+                ImageView unshareButton = (ImageView) view.findViewById(R.id.unshareButton);
+                if (unshareButton.getVisibility() == View.GONE) {
+                    unshareButton.setVisibility(View.VISIBLE);
+                } else {
+                    unshareButton.setVisibility(View.GONE);
+                }
+                return false;
+            }
+        });
+    }
+
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+        return false;
+    }
+
+
     // TODO: review if it is necessary
     /**
      * This interface must be implemented by activities that contain this