Bläddra i källkod

Add unshare with user option to share with view

masensio 9 år sedan
förälder
incheckning
fff362d103

+ 25 - 6
res/layout/share_user_item.xml

@@ -20,14 +20,33 @@
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-    <TextView
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:text="@string/username"
-        android:id="@+id/userOrGroupName"
-        android:layout_margin="12dp"
-        android:textColor="@color/textColor"/>
+        android:orientation="horizontal"
+        android:weightSum="1"
+        android:longClickable="true">
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_weight="0.7"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="@string/username"
+            android:id="@+id/userOrGroupName"
+            android:layout_margin="12dp"
+            android:textColor="@color/textColor"/>
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_weight="0.3"
+            android:id="@+id/unshareButton"
+            android:src="@drawable/ic_cancel"
+            android:layout_marginRight="4dp"
+            android:layout_marginLeft="4dp"
+            android:layout_gravity="center_horizontal"
+            android:visibility="gone"/>
+    </LinearLayout>
 
     <View
         android:layout_width="match_parent"

+ 23 - 6
src/com/owncloud/android/ui/adapter/ShareUserListAdapter.java

@@ -25,14 +25,14 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
-import android.widget.BaseAdapter;
+import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.owncloud.android.R;
+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 java.io.File;
 import java.util.ArrayList;
 
 /**
@@ -43,6 +43,8 @@ public class ShareUserListAdapter extends ArrayAdapter {
     private Context mContext;
     private ArrayList<OCShare> mShares;
 
+    private ImageView mUnshareButton;
+
     public ShareUserListAdapter(Context context, int resource, ArrayList<OCShare>shares) {
         super(context, resource);
         mContext= context;
@@ -65,10 +67,9 @@ public class ShareUserListAdapter extends ArrayAdapter {
     }
 
     @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
+    public View getView(final int position, View convertView, ViewGroup parent) {
         LayoutInflater inflator = (LayoutInflater) mContext
                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-//        View rowView = inflater.inflate(R.layout.row_estacion, parent, false);
         View view = inflator.inflate(R.layout.share_user_item, parent, false);
 
         if (mShares != null && mShares.size() > position) {
@@ -76,12 +77,28 @@ public class ShareUserListAdapter extends ArrayAdapter {
 
             TextView userName = (TextView) view.findViewById(R.id.userOrGroupName);
             String name = share.getSharedWithDisplayName();
-            if (share.getShareType() == ShareType.GROUP){
+            if (share.getShareType() == ShareType.GROUP) {
                 name = name + "(group)";
             }
             userName.setText(name);
-        }
 
+            mUnshareButton = (ImageView) view.findViewById(R.id.unshareButton);
+            mUnshareButton.setVisibility(View.GONE);
+            mUnshareButton.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    // TODO: Unshare
+
+                    Log_OC.d("TAG - ShareUserListAdapter", "TODO Unshare - " +
+                            mShares.get(position).getSharedWithDisplayName());
+                }
+            });
+
+
+        }
         return view;
     }
+
+
+
 }

+ 1 - 1
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -53,8 +53,8 @@ import com.owncloud.android.ui.dialog.RemoveFileDialogFragment;
 import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
 import com.owncloud.android.ui.preview.PreviewImageFragment;
 import com.owncloud.android.ui.preview.PreviewMediaFragment;
-import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.ui.preview.PreviewTextFragment;
+import com.owncloud.android.utils.FileStorageUtils;
 
 import java.io.File;
 

+ 31 - 28
src/com/owncloud/android/ui/fragment/ShareFileFragment.java

@@ -21,46 +21,35 @@
 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