mirror of
				https://github.com/pierre42100/ComunicAndroid
				synced 2025-10-31 01:24:43 +00:00 
			
		
		
		
	Created FriendshipStatusButton
This commit is contained in:
		| @@ -8,17 +8,16 @@ import android.support.v4.app.Fragment; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.Button; | ||||
| import android.widget.LinearLayout; | ||||
| import android.widget.TextView; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import org.communiquons.android.comunic.client.R; | ||||
| import org.communiquons.android.comunic.client.data.helpers.FriendsListHelper; | ||||
| import org.communiquons.android.comunic.client.data.helpers.GetUsersHelper; | ||||
| import org.communiquons.android.comunic.client.data.models.FriendshipStatus; | ||||
| import org.communiquons.android.comunic.client.data.models.UserInfo; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.OnFriendsStatusUpdateListener; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.onOpenUsersPageListener; | ||||
| import org.communiquons.android.comunic.client.ui.views.FriendshipStatusButton; | ||||
| import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage; | ||||
|  | ||||
| /** | ||||
| @@ -28,7 +27,7 @@ import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage; | ||||
|  * Created by pierre on 4/11/18. | ||||
|  */ | ||||
|  | ||||
| public class UserAccessDeniedFragment extends Fragment implements View.OnClickListener { | ||||
| public class UserAccessDeniedFragment extends Fragment implements OnFriendsStatusUpdateListener { | ||||
|  | ||||
|     /** | ||||
|      * The name in the bundle of the target user ID | ||||
| @@ -60,11 +59,6 @@ public class UserAccessDeniedFragment extends Fragment implements View.OnClickLi | ||||
|      */ | ||||
|     private UserInfo mUserInfo; | ||||
|  | ||||
|     /** | ||||
|      * Information about the friendship status | ||||
|      */ | ||||
|     private FriendshipStatus mFriendshipStatus; | ||||
|  | ||||
|     /** | ||||
|      * User account image | ||||
|      */ | ||||
| @@ -76,29 +70,9 @@ public class UserAccessDeniedFragment extends Fragment implements View.OnClickLi | ||||
|     private TextView mUserName; | ||||
|  | ||||
|     /** | ||||
|      * Buttons list container | ||||
|      * Friendship status button | ||||
|      */ | ||||
|     private LinearLayout mButtonsList; | ||||
|  | ||||
|     /** | ||||
|      * Send request button | ||||
|      */ | ||||
|     private Button mSendRequestButton; | ||||
|  | ||||
|     /** | ||||
|      * Cancel request button | ||||
|      */ | ||||
|     private Button mCancelRequestButton; | ||||
|  | ||||
|     /** | ||||
|      * Accept request button | ||||
|      */ | ||||
|     private Button mAcceptRequestButton; | ||||
|  | ||||
|     /** | ||||
|      * Reject request button | ||||
|      */ | ||||
|     private Button mRejectRequestButton; | ||||
|     private FriendshipStatusButton mFriendshipStatus; | ||||
|  | ||||
|     @Override | ||||
|     public void onCreate(@Nullable Bundle savedInstanceState) { | ||||
| @@ -133,22 +107,21 @@ public class UserAccessDeniedFragment extends Fragment implements View.OnClickLi | ||||
|     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { | ||||
|         super.onViewCreated(view, savedInstanceState); | ||||
|  | ||||
|         //Get user related fields | ||||
|         mUserImage = view.findViewById(R.id.user_account_image); | ||||
|         mUserName = view.findViewById(R.id.user_account_name); | ||||
|         mFriendshipStatus = view.findViewById(R.id.friendship_status); | ||||
|  | ||||
|         //Get the buttons | ||||
|         mButtonsList = view.findViewById(R.id.buttons_list); | ||||
|         mSendRequestButton = view.findViewById(R.id.button_send_request); | ||||
|         mCancelRequestButton = view.findViewById(R.id.button_cancel_request); | ||||
|         mAcceptRequestButton = view.findViewById(R.id.button_accept_request); | ||||
|         mRejectRequestButton = view.findViewById(R.id.button_reject_request); | ||||
|         mFriendshipStatus.setOnFriendsStatusUpdateListener(this); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onResume() { | ||||
|         super.onResume(); | ||||
|  | ||||
|         //Initialize FrienshipStatus button | ||||
|         mFriendshipStatus.setUserID(mUserID); | ||||
|         mFriendshipStatus.refreshIfRequired(); | ||||
|  | ||||
|         //Check if it is required to fetch user information | ||||
|         if(mUserInfo == null){ | ||||
|             getUserInfo(); | ||||
| @@ -204,157 +177,11 @@ public class UserAccessDeniedFragment extends Fragment implements View.OnClickLi | ||||
|         mUserName.setText(mUserInfo.getDisplayFullName()); | ||||
|         mUserImage.setUser(mUserInfo); | ||||
|  | ||||
|         //Check if we have got the friends | ||||
|         if(mFriendshipStatus == null){ | ||||
|             getFrienshipStatus(); | ||||
|         } | ||||
|         else { | ||||
|             onGotFriendshipStatus(mFriendshipStatus); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the information about the friendship between the two users | ||||
|      */ | ||||
|     private void getFrienshipStatus(){ | ||||
|  | ||||
|         //Perform the request in the background | ||||
|         new AsyncTask<Integer, Void, FriendshipStatus>(){ | ||||
|  | ||||
|             @Override | ||||
|             protected FriendshipStatus doInBackground(Integer... params) { | ||||
|                 return mFriendListHelper.getFrienshipStatus(params[0]); | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             protected void onPostExecute(FriendshipStatus status) { | ||||
|                 if(getActivity() == null) | ||||
|                     return; | ||||
|  | ||||
|                 onGotFriendshipStatus(status); | ||||
|             } | ||||
|         }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mUserID); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * This method is called once we got information about the friendship status | ||||
|      * | ||||
|      * @param status The status of the frienship or null in case of failure | ||||
|      */ | ||||
|     private void onGotFriendshipStatus(@Nullable FriendshipStatus status){ | ||||
|  | ||||
|         //Check for errors | ||||
|         if(status == null){ | ||||
|             Toast.makeText(getActivity(), R.string.err_get_friendship_status, | ||||
|                     Toast.LENGTH_SHORT).show(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         //Save the friendship status | ||||
|         mFriendshipStatus = status; | ||||
|  | ||||
|         //Hide all the button by default but the list | ||||
|         mButtonsList.setVisibility(View.VISIBLE); | ||||
|         mSendRequestButton.setVisibility(View.GONE); | ||||
|         mCancelRequestButton.setVisibility(View.GONE); | ||||
|         mAcceptRequestButton.setVisibility(View.GONE); | ||||
|         mRejectRequestButton.setVisibility(View.GONE); | ||||
|  | ||||
|         //Check if the users are friend | ||||
|         if(mFriendshipStatus.isFriend()) { | ||||
|             mOpenUsersPageListener.openUserPage(mUserID); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         //Check if the current user has sent a friendship request | ||||
|         if(mFriendshipStatus.isSentRequest()){ | ||||
|             mCancelRequestButton.setVisibility(View.VISIBLE); | ||||
|         } | ||||
|  | ||||
|         //Check if the current user has received a friendship request | ||||
|         else if(mFriendshipStatus.isReceivedRequest()){ | ||||
|             mAcceptRequestButton.setVisibility(View.VISIBLE); | ||||
|             mRejectRequestButton.setVisibility(View.VISIBLE); | ||||
|         } | ||||
|  | ||||
|         //Else the users have not pending request | ||||
|         else { | ||||
|             mSendRequestButton.setVisibility(View.VISIBLE); | ||||
|         } | ||||
|  | ||||
|         //Make all the buttons click point on the fragment | ||||
|         mSendRequestButton.setOnClickListener(this); | ||||
|         mCancelRequestButton.setOnClickListener(this); | ||||
|         mAcceptRequestButton.setOnClickListener(this); | ||||
|         mRejectRequestButton.setOnClickListener(this); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onClick(View v) { | ||||
|  | ||||
|         //Make buttons list disappear | ||||
|         mButtonsList.setVisibility(View.INVISIBLE); | ||||
|  | ||||
|         //Get the ID of the button | ||||
|         int action_id = v.getId(); | ||||
|  | ||||
|         //Process the request | ||||
|         new AsyncTask<Integer, Void, FriendshipStatus>(){ | ||||
|  | ||||
|             @Override | ||||
|             protected FriendshipStatus doInBackground(Integer... params) { | ||||
|  | ||||
|                 //Perform requested action | ||||
|                 performFriendshipUpdate(params[0]); | ||||
|  | ||||
|                 //Return new friendship status | ||||
|                 return mFriendListHelper.getFrienshipStatus(mUserID); | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             protected void onPostExecute(FriendshipStatus status) { | ||||
|                 if(getActivity() == null) | ||||
|                     return; | ||||
|  | ||||
|                 onGotFriendshipStatus(status); | ||||
|             } | ||||
|         }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, action_id); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Perform the update of the friendship status, as requested per the click on the buttons | ||||
|      * | ||||
|      * @param action_id The ID of the button that has been clicked | ||||
|      */ | ||||
|     private void performFriendshipUpdate(int action_id){ | ||||
|  | ||||
|         switch (action_id){ | ||||
|  | ||||
|             //Send a friendship request | ||||
|             case R.id.button_send_request: | ||||
|                 mFriendListHelper.sendRequest(mUserID); | ||||
|                 break; | ||||
|  | ||||
|             //Accept a friendship request | ||||
|             case R.id.button_accept_request: | ||||
|                 mFriendListHelper.respondRequest(mUserID, true); | ||||
|                 break; | ||||
|  | ||||
|             //Reject a friendship request | ||||
|             case R.id.button_reject_request: | ||||
|                 mFriendListHelper.respondRequest(mUserID, false); | ||||
|                 break; | ||||
|  | ||||
|             //Cancel a friendship request | ||||
|             case R.id.button_cancel_request: | ||||
|                 mFriendListHelper.cancelRequest(mUserID); | ||||
|                 break; | ||||
|  | ||||
|             default: | ||||
|                 throw new RuntimeException("Unsupported action by updater!"); | ||||
|         } | ||||
|  | ||||
|     public void onAreFriend() { | ||||
|         mOpenUsersPageListener.openUserPage(mUserID); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,17 @@ | ||||
| package org.communiquons.android.comunic.client.ui.listeners; | ||||
|  | ||||
| /** | ||||
|  * On friend status update listener | ||||
|  * | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| public interface OnFriendsStatusUpdateListener { | ||||
|  | ||||
|     /** | ||||
|      * This method is called when the two people are friends. | ||||
|      * | ||||
|      * Warning ! This may be called several times... | ||||
|      */ | ||||
|     void onAreFriend(); | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,339 @@ | ||||
| package org.communiquons.android.comunic.client.ui.views; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.os.AsyncTask; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.util.AttributeSet; | ||||
| import android.view.View; | ||||
| import android.widget.Button; | ||||
| import android.widget.LinearLayout; | ||||
| import android.widget.ProgressBar; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import org.communiquons.android.comunic.client.R; | ||||
| import org.communiquons.android.comunic.client.data.asynctasks.SafeAsyncTask; | ||||
| import org.communiquons.android.comunic.client.data.helpers.FriendsListHelper; | ||||
| import org.communiquons.android.comunic.client.data.models.FriendshipStatus; | ||||
| import org.communiquons.android.comunic.client.ui.listeners.OnFriendsStatusUpdateListener; | ||||
|  | ||||
| /** | ||||
|  * Friendship status button | ||||
|  * | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| public class FriendshipStatusButton extends BaseFrameLayoutView implements View.OnClickListener { | ||||
|  | ||||
|     /** | ||||
|      * Debug tag | ||||
|      */ | ||||
|     private static final String TAG = FriendshipStatusButton.class.getCanonicalName(); | ||||
|  | ||||
|     /** | ||||
|      * The ID of the target user | ||||
|      */ | ||||
|     private int mUserID; | ||||
|  | ||||
|     /** | ||||
|      * Information about the friendship status | ||||
|      */ | ||||
|     private FriendshipStatus mFriendshipStatus; | ||||
|  | ||||
|     /** | ||||
|      * Buttons list container | ||||
|      */ | ||||
|     private LinearLayout mButtonsList; | ||||
|  | ||||
|     /** | ||||
|      * Actions buttons | ||||
|      */ | ||||
|     private Button mSendRequestButton; | ||||
|     private Button mCancelRequestButton; | ||||
|     private Button mAcceptRequestButton; | ||||
|     private Button mRejectRequestButton; | ||||
|     private Button mFollowButton; | ||||
|     private Button mFollowingButton; | ||||
|  | ||||
|     /** | ||||
|      * Progress bar | ||||
|      */ | ||||
|     private ProgressBar mProgressBar; | ||||
|  | ||||
|     /** | ||||
|      * AsyncTasks | ||||
|      */ | ||||
|     private GetFriendshipStatus mGetFriendShipStatus; | ||||
|     private UpdateStatusClass mUpdateStatusClass; | ||||
|  | ||||
|     /** | ||||
|      * On friend status update listener | ||||
|      */ | ||||
|     private OnFriendsStatusUpdateListener mOnFriendsStatusUpdateListener; | ||||
|  | ||||
|     public FriendshipStatusButton(@NonNull Context context) { | ||||
|         this(context, null); | ||||
|     } | ||||
|  | ||||
|     public FriendshipStatusButton(@NonNull Context context, @Nullable AttributeSet attrs) { | ||||
|         this(context, attrs, 0); | ||||
|     } | ||||
|  | ||||
|     public FriendshipStatusButton(@NonNull Context context, @Nullable AttributeSet attrs, | ||||
|                                   int defStyleAttr) { | ||||
|         super(context, attrs, defStyleAttr); | ||||
|  | ||||
|         View view = inflate(getContext(), R.layout.view_frienship_status, this); | ||||
|  | ||||
|         mProgressBar = view.findViewById(R.id.progressBar); | ||||
|         mButtonsList = view.findViewById(R.id.buttons_list); | ||||
|         mButtonsList = view.findViewById(R.id.buttons_list); | ||||
|         mSendRequestButton = view.findViewById(R.id.button_send_request); | ||||
|         mCancelRequestButton = view.findViewById(R.id.button_cancel_request); | ||||
|         mAcceptRequestButton = view.findViewById(R.id.button_accept_request); | ||||
|         mRejectRequestButton = view.findViewById(R.id.button_reject_request); | ||||
|         mFollowButton = view.findViewById(R.id.button_follow); | ||||
|         mFollowingButton = view.findViewById(R.id.button_following); | ||||
|  | ||||
|         mSendRequestButton.setOnClickListener(this); | ||||
|         mCancelRequestButton.setOnClickListener(this); | ||||
|         mAcceptRequestButton.setOnClickListener(this); | ||||
|         mRejectRequestButton.setOnClickListener(this); | ||||
|         mFollowButton.setOnClickListener(this); | ||||
|         mFollowingButton.setOnClickListener(this); | ||||
|  | ||||
|         hideAllButtons(); | ||||
|         setProgressBarVisibility(true); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void onDetachedFromWindow() { | ||||
|         super.onDetachedFromWindow(); | ||||
|  | ||||
|         if(mGetFriendShipStatus != null) | ||||
|             mGetFriendShipStatus.setOnPostExecuteListener(null); | ||||
|  | ||||
|         if(mUpdateStatusClass != null) | ||||
|             mUpdateStatusClass.setOnPostExecuteListener(null); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the ID of the target user | ||||
|      * | ||||
|      * @param mUserID The ID of the target user | ||||
|      */ | ||||
|     public void setUserID(int mUserID) { | ||||
|         this.mUserID = mUserID; | ||||
|     } | ||||
|  | ||||
|     public OnFriendsStatusUpdateListener getOnFriendsStatusUpdateListener() { | ||||
|         return mOnFriendsStatusUpdateListener; | ||||
|     } | ||||
|  | ||||
|     public void setOnFriendsStatusUpdateListener(OnFriendsStatusUpdateListener onFriendsStatusUpdateListener) { | ||||
|         this.mOnFriendsStatusUpdateListener = onFriendsStatusUpdateListener; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Refresh current user status, only if required | ||||
|      */ | ||||
|     public void refreshIfRequired(){ | ||||
|         if(mFriendshipStatus == null) | ||||
|             refresh(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Refresh current friendship status | ||||
|      */ | ||||
|     public void refresh(){ | ||||
|  | ||||
|         hideAllButtons(); | ||||
|         setProgressBarVisibility(true); | ||||
|  | ||||
|         mGetFriendShipStatus = new GetFriendshipStatus(getContext()); | ||||
|         mGetFriendShipStatus.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mUserID); | ||||
|         mGetFriendShipStatus.setOnPostExecuteListener(new SafeAsyncTask.OnPostExecuteListener<FriendshipStatus>() { | ||||
|             @Override | ||||
|             public void OnPostExecute(FriendshipStatus friendshipStatus) { | ||||
|                 onGotFriendshipsStatus(friendshipStatus); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Method called when we have got friendship status | ||||
|      * | ||||
|      * @param friendshipStatus New friendship status | ||||
|      */ | ||||
|     private void onGotFriendshipsStatus(@Nullable FriendshipStatus friendshipStatus){ | ||||
|  | ||||
|         hideAllButtons(); | ||||
|         setProgressBarVisibility(false); | ||||
|  | ||||
|         mFriendshipStatus = friendshipStatus; | ||||
|  | ||||
|         if(friendshipStatus == null) { | ||||
|             Toast.makeText(getContext(), R.string.err_get_friendship_status, | ||||
|                     Toast.LENGTH_SHORT).show(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         //Update buttons visibility | ||||
|         if(!mFriendshipStatus.isFriend()){ | ||||
|  | ||||
|             if(mFriendshipStatus.isSentRequest()) | ||||
|                 mCancelRequestButton.setVisibility(View.VISIBLE); | ||||
|  | ||||
|             else if(mFriendshipStatus.isReceivedRequest()){ | ||||
|                 mAcceptRequestButton.setVisibility(View.VISIBLE); | ||||
|                 mRejectRequestButton.setVisibility(View.VISIBLE); | ||||
|             } | ||||
|  | ||||
|             else | ||||
|                 mSendRequestButton.setVisibility(View.VISIBLE); | ||||
|         } | ||||
|  | ||||
|         else { | ||||
|  | ||||
|             //The two people are friends | ||||
|             mOnFriendsStatusUpdateListener.onAreFriend(); | ||||
|  | ||||
|             if(mFriendshipStatus.isFollowing()) | ||||
|                 mFollowingButton.setVisibility(View.VISIBLE); | ||||
|             else | ||||
|                 mFollowingButton.setVisibility(View.GONE); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onClick(View v) { | ||||
|         int action_id = v.getId(); | ||||
|         hideAllButtons(); | ||||
|         setProgressBarVisibility(true); | ||||
|  | ||||
|         mUpdateStatusClass = new UpdateStatusClass(mUserID, action_id, getContext()); | ||||
|         mUpdateStatusClass.setOnPostExecuteListener(new SafeAsyncTask. | ||||
|                 OnPostExecuteListener<FriendshipStatus>() { | ||||
|             @Override | ||||
|             public void OnPostExecute(FriendshipStatus friendshipStatus) { | ||||
|                 onGotFriendshipsStatus(friendshipStatus); | ||||
|             } | ||||
|         }); | ||||
|         mUpdateStatusClass.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Hide all view buttons | ||||
|      */ | ||||
|     private void hideAllButtons(){ | ||||
|         mSendRequestButton.setVisibility(View.GONE); | ||||
|         mCancelRequestButton.setVisibility(View.GONE); | ||||
|         mAcceptRequestButton.setVisibility(View.GONE); | ||||
|         mRejectRequestButton.setVisibility(View.GONE); | ||||
|         mFollowButton.setVisibility(View.GONE); | ||||
|         mFollowingButton.setVisibility(View.GONE); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update progress bar visibility | ||||
|      * | ||||
|      * @param visible TRUE : visible / FALSE : else | ||||
|      */ | ||||
|     private void setProgressBarVisibility(boolean visible){ | ||||
|         mProgressBar.setVisibility(visible ? View.VISIBLE : View.GONE); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Safe AsyncTask used to get current friendship status | ||||
|      */ | ||||
|     private static class GetFriendshipStatus extends SafeAsyncTask<Integer, Void, FriendshipStatus>{ | ||||
|  | ||||
|         GetFriendshipStatus(Context context) { | ||||
|             super(context); | ||||
|         } | ||||
|  | ||||
|         @Override | ||||
|         protected FriendshipStatus doInBackground(Integer... integers) { | ||||
|             return new FriendsListHelper(getContext()).getFrienshipStatus(integers[0]); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Class used to update friendship status | ||||
|      */ | ||||
|     private static class UpdateStatusClass extends SafeAsyncTask<Void, Void, FriendshipStatus>{ | ||||
|  | ||||
|         private int mFriendID; | ||||
|         private int mAction; | ||||
|  | ||||
|         /** | ||||
|          * Construct the class | ||||
|          * | ||||
|          * @param friendID The ID of the target friend | ||||
|          * @param action The action to perform | ||||
|          * @param context The context of the application | ||||
|          */ | ||||
|         UpdateStatusClass(int friendID, int action, Context context) { | ||||
|             super(context); | ||||
|             this.mFriendID = friendID; | ||||
|             this.mAction = action; | ||||
|         } | ||||
|  | ||||
|         @Override | ||||
|         protected FriendshipStatus doInBackground(Void... voids) { | ||||
|  | ||||
|             //Friends helper | ||||
|             FriendsListHelper helper = new FriendsListHelper(getContext()); | ||||
|             performUpdate(mAction, mFriendID, helper); | ||||
|             return helper.getFrienshipStatus(mFriendID); | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|          * Perform the update of the friendship status, as requested per the click on the buttons | ||||
|          * | ||||
|          * @param action_id The ID of the button that has been clicked | ||||
|          * @param friend_id The ID of the target friend | ||||
|          * @param helper Helper object to use | ||||
|          */ | ||||
|         private void performUpdate(int action_id, int friend_id, FriendsListHelper helper){ | ||||
|  | ||||
|             switch (action_id){ | ||||
|  | ||||
|                 //Send a friendship request | ||||
|                 case R.id.button_send_request: | ||||
|                     helper.sendRequest(friend_id); | ||||
|                     break; | ||||
|  | ||||
|                 //Accept a friendship request | ||||
|                 case R.id.button_accept_request: | ||||
|                     helper.respondRequest(friend_id, true); | ||||
|                     break; | ||||
|  | ||||
|                 //Reject a friendship request | ||||
|                 case R.id.button_reject_request: | ||||
|                     helper.respondRequest(friend_id, false); | ||||
|                     break; | ||||
|  | ||||
|                 //Cancel a friendship request | ||||
|                 case R.id.button_cancel_request: | ||||
|                     helper.cancelRequest(friend_id); | ||||
|                     break; | ||||
|  | ||||
|                 //Update following status | ||||
|                 case R.id.button_follow: | ||||
|                     helper.setFollowing(friend_id, true); | ||||
|                     break; | ||||
|                 case R.id.button_following: | ||||
|                     helper.setFollowing(friend_id, false); | ||||
|                     break; | ||||
|  | ||||
|                 default: | ||||
|                     throw new RuntimeException("Unsupported action by updater!"); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -7,90 +7,49 @@ | ||||
|  | ||||
|     <!-- Basic account information --> | ||||
|     <LinearLayout | ||||
|         android:id="@+id/linearLayout" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         app:layout_constraintRight_toRightOf="parent" | ||||
|         android:layout_marginTop="16dp" | ||||
|         app:layout_constraintLeft_toLeftOf="parent" | ||||
|         app:layout_constraintTop_toTopOf="parent" | ||||
|         android:layout_marginTop="16dp"> | ||||
|         app:layout_constraintRight_toRightOf="parent" | ||||
|         app:layout_constraintTop_toTopOf="parent"> | ||||
|  | ||||
|         <org.communiquons.android.comunic.client.ui.views.WebUserAccountImage | ||||
|             android:id="@+id/user_account_image" | ||||
|             android:layout_width="@dimen/account_image_default_width" | ||||
|             android:layout_height="@dimen/account_image_default_height" | ||||
|             android:src="@drawable/default_account_image" | ||||
|             android:layout_marginEnd="10dp" | ||||
|             android:contentDescription="@string/user_image_description" | ||||
|             android:layout_marginEnd="10dp"/> | ||||
|             android:src="@drawable/default_account_image" /> | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/user_account_name" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             tools:text="User account name" | ||||
|             android:layout_gravity="center_vertical"/> | ||||
|             android:layout_gravity="center_vertical" | ||||
|             tools:text="User account name" /> | ||||
|  | ||||
|     </LinearLayout> | ||||
|  | ||||
|  | ||||
|  | ||||
|     <!-- Available actions --> | ||||
|     <LinearLayout | ||||
|         android:id="@+id/buttons_list" | ||||
|     <org.communiquons.android.comunic.client.ui.views.FriendshipStatusButton | ||||
|         android:id="@+id/friendship_status" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:orientation="vertical" | ||||
|         app:layout_constraintTop_toTopOf="parent" | ||||
|         app:layout_constraintBottom_toBottomOf="parent" | ||||
|         app:layout_constraintLeft_toLeftOf="parent" | ||||
|         app:layout_constraintRight_toRightOf="parent" | ||||
|         android:layout_marginTop="0dp"> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_send_request" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:text="@string/button_send_friend_request" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_cancel_request" | ||||
|             style="@style/Widget.AppCompat.Button.Colored" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:text="@string/button_cancel_friend_request" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_send_request" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_accept_request" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:text="@string/button_accept_friend_request" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_cancel_request" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_reject_request" | ||||
|             style="@style/Widget.AppCompat.Button.Colored" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:text="@string/button_reject_friend_request" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_accept_request" /> | ||||
|     </LinearLayout> | ||||
|         app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|     <!-- Account private notice --> | ||||
|     <TextView | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="0dp" | ||||
|         android:layout_marginBottom="8dp" | ||||
|         android:text="@string/notice_user_page_private" | ||||
|         app:layout_constraintRight_toRightOf="parent" | ||||
|         app:layout_constraintBottom_toTopOf="@id/friendship_status" | ||||
|         app:layout_constraintLeft_toLeftOf="parent" | ||||
|         app:layout_constraintBottom_toTopOf="@id/buttons_list" | ||||
|         android:layout_marginBottom="8dp" /> | ||||
|         app:layout_constraintRight_toRightOf="parent" /> | ||||
|  | ||||
| </android.support.constraint.ConstraintLayout> | ||||
							
								
								
									
										94
									
								
								app/src/main/res/layout/view_frienship_status.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								app/src/main/res/layout/view_frienship_status.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,94 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     android:layout_width="wrap_content" | ||||
|     android:layout_height="wrap_content"> | ||||
|  | ||||
|     <!-- Available actions --> | ||||
|     <LinearLayout | ||||
|         android:id="@+id/buttons_list" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginTop="0dp" | ||||
|         android:orientation="vertical" | ||||
|         app:layout_constraintBottom_toBottomOf="parent" | ||||
|         app:layout_constraintLeft_toLeftOf="parent" | ||||
|         app:layout_constraintRight_toRightOf="parent" | ||||
|         app:layout_constraintTop_toTopOf="parent"> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_send_request" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:text="@string/button_send_friend_request" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_cancel_request" | ||||
|             style="@style/Widget.AppCompat.Button.Colored" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:text="@string/button_cancel_friend_request" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_send_request" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_accept_request" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:backgroundTint="@color/holo_green_dark" | ||||
|             android:textColor="@android:color/white" | ||||
|             android:text="@string/button_accept_friend_request" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_cancel_request" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_reject_request" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:backgroundTint="@color/holo_red_dark" | ||||
|             android:text="@string/button_reject_friend_request" | ||||
|             android:textColor="@android:color/white" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_accept_request" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_follow" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:text="@string/button_follow" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_reject_request" /> | ||||
|  | ||||
|         <Button | ||||
|             android:id="@+id/button_following" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:backgroundTint="@color/colorPrimary" | ||||
|             android:text="@string/button_following" | ||||
|             android:textColor="@android:color/white" | ||||
|             app:layout_constraintLeft_toLeftOf="parent" | ||||
|             app:layout_constraintRight_toRightOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/button_follow" /> | ||||
|     </LinearLayout> | ||||
|  | ||||
|     <ProgressBar | ||||
|         android:id="@+id/progressBar" | ||||
|         style="?android:attr/progressBarStyle" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginBottom="8dp" | ||||
|         android:layout_marginEnd="8dp" | ||||
|         android:layout_marginStart="8dp" | ||||
|         android:layout_marginTop="8dp" | ||||
|         app:layout_constraintBottom_toBottomOf="@+id/buttons_list" | ||||
|         app:layout_constraintEnd_toEndOf="@+id/buttons_list" | ||||
|         app:layout_constraintStart_toStartOf="@+id/buttons_list" | ||||
|         app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
| </android.support.constraint.ConstraintLayout> | ||||
| @@ -241,4 +241,7 @@ | ||||
|     <string name="action_reject_friend_request">Rejeter</string> | ||||
|     <string name="notice_request">Demande</string> | ||||
|     <string name="action_more_description">Plus d\'options</string> | ||||
|     <string name="action_follow">Suivre</string> | ||||
|     <string name="button_follow">Suivre</string> | ||||
|     <string name="button_following">Suivi</string> | ||||
| </resources> | ||||
| @@ -244,4 +244,6 @@ | ||||
|     <string name="notice_request">Requested</string> | ||||
|     <string name="action_more_description">Get more options</string> | ||||
|     <string name="action_follow">Follow</string> | ||||
|     <string name="button_follow">Follow</string> | ||||
|     <string name="button_following">Following</string> | ||||
| </resources> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Pierre HUBERT
					Pierre HUBERT