X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/671fef617b9bc67300e3d2cddbbfbe9fb8b4937b..ecdb95fa0cef923d76ce8d17b2d535247707466b:/src/com/owncloud/android/ui/fragment/ShareFileFragment.java diff --git a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java index 1b95186b..a0296533 100644 --- a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java +++ b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java @@ -2,6 +2,7 @@ * ownCloud Android client application * * @author masensio + * @author David A. Velasco * Copyright (C) 2015 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify @@ -32,12 +33,15 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; +import android.widget.Toast; import com.owncloud.android.R; +import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.shares.OCShare; +import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.ShareActivity; import com.owncloud.android.ui.adapter.ShareUserListAdapter; import com.owncloud.android.utils.DisplayUtils; @@ -46,12 +50,14 @@ import com.owncloud.android.utils.MimetypeIconUtil; import java.util.ArrayList; /** - * Fragment for Sharing a file with users + * Fragment for Sharing a file with sharees (users or groups) * * A simple {@link Fragment} subclass. + * * Activities that contain this fragment must implement the * {@link ShareFileFragment.OnShareFragmentInteractionListener} interface * to handle interaction events. + * * Use the {@link ShareFileFragment#newInstance} factory method to * create an instance of this fragment. */ @@ -68,9 +74,9 @@ public class ShareFileFragment extends Fragment private OCFile mFile; private Account mAccount; + // other members private ArrayList mShares; private ShareUserListAdapter mUserGroupsAdapter = null; - private OnShareFragmentInteractionListener mListener; /** @@ -93,6 +99,9 @@ public class ShareFileFragment extends Fragment // Required empty public constructor } + /** + * {@inheritDoc} + */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -102,6 +111,9 @@ public class ShareFileFragment extends Fragment } } + /** + * {@inheritDoc} + */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -137,8 +149,14 @@ public class ShareFileFragment extends Fragment addUserGroupButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - // Show Search Fragment - mListener.showSearchUsersAndGroups(mShares); + boolean shareWithUsersEnable = AccountUtils.hasSearchUsersSupport(mAccount); + if (shareWithUsersEnable) { + // Show Search Fragment + mListener.showSearchUsersAndGroups(); + } else { + String message = getString(R.string.share_sharee_unavailable); + Toast.makeText(getActivity(), message, Toast.LENGTH_LONG).show(); + } } }); @@ -149,8 +167,8 @@ public class ShareFileFragment extends Fragment public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - // Load data to the list (start process with an Async Task) - mListener.refreshUsersOrGroupsListFromServer(); + // Load data into the list + refreshUsersOrGroupsListFromDB(); } @Override @@ -171,21 +189,33 @@ public class ShareFileFragment extends Fragment } /** - * Get users and groups fromn the DB to fill in the "share with" list + * Get users and groups from the DB to fill in the "share with" list + * + * Depends on the parent Activity provides a {@link com.owncloud.android.datamodel.FileDataStorageManager} + * instance ready to use. If not ready, does nothing. */ public void refreshUsersOrGroupsListFromDB (){ - // Get Users and Groups - mShares = ((ShareActivity) mListener).getStorageManager().getSharesWithForAFile(mFile.getRemotePath(), - mAccount.name); + if (((FileActivity) mListener).getStorageManager() != null) { + // Get Users and Groups + mShares = ((FileActivity) mListener).getStorageManager().getSharesWithForAFile( + mFile.getRemotePath(), + mAccount.name + ); - // Update list of users/groups - updateListOfUserGroups(); + // Update list of users/groups + updateListOfUserGroups(); + } } private void updateListOfUserGroups() { // Update list of users/groups - mUserGroupsAdapter = new ShareUserListAdapter(getActivity().getApplicationContext(), - R.layout.share_user_item, mShares, this); + // TODO Refactoring: create a new {@link ShareUserListAdapter} instance with every call should not be needed + mUserGroupsAdapter = new ShareUserListAdapter( + getActivity(), + R.layout.share_user_item, + mShares, + this + ); // Show data TextView noShares = (TextView) getView().findViewById(R.id.shareNoUsers); @@ -221,7 +251,7 @@ public class ShareFileFragment extends Fragment * >Communicating with Other Fragments for more information. */ public interface OnShareFragmentInteractionListener { - void showSearchUsersAndGroups(ArrayList shares); + void showSearchUsersAndGroups(); void refreshUsersOrGroupsListFromServer(); void unshareWith(OCShare share); }