mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 22:09:30 +00:00
Created FriendshipStatusButton
This commit is contained in:
parent
54ccf6b042
commit
7944cab063
@ -8,17 +8,16 @@ import android.support.v4.app.Fragment;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
import org.communiquons.android.comunic.client.data.helpers.FriendsListHelper;
|
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.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.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.listeners.onOpenUsersPageListener;
|
||||||
|
import org.communiquons.android.comunic.client.ui.views.FriendshipStatusButton;
|
||||||
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
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.
|
* 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
|
* 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;
|
private UserInfo mUserInfo;
|
||||||
|
|
||||||
/**
|
|
||||||
* Information about the friendship status
|
|
||||||
*/
|
|
||||||
private FriendshipStatus mFriendshipStatus;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User account image
|
* User account image
|
||||||
*/
|
*/
|
||||||
@ -76,29 +70,9 @@ public class UserAccessDeniedFragment extends Fragment implements View.OnClickLi
|
|||||||
private TextView mUserName;
|
private TextView mUserName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Buttons list container
|
* Friendship status button
|
||||||
*/
|
*/
|
||||||
private LinearLayout mButtonsList;
|
private FriendshipStatusButton mFriendshipStatus;
|
||||||
|
|
||||||
/**
|
|
||||||
* Send request button
|
|
||||||
*/
|
|
||||||
private Button mSendRequestButton;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cancel request button
|
|
||||||
*/
|
|
||||||
private Button mCancelRequestButton;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Accept request button
|
|
||||||
*/
|
|
||||||
private Button mAcceptRequestButton;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reject request button
|
|
||||||
*/
|
|
||||||
private Button mRejectRequestButton;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
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) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|
||||||
//Get user related fields
|
|
||||||
mUserImage = view.findViewById(R.id.user_account_image);
|
mUserImage = view.findViewById(R.id.user_account_image);
|
||||||
mUserName = view.findViewById(R.id.user_account_name);
|
mUserName = view.findViewById(R.id.user_account_name);
|
||||||
|
mFriendshipStatus = view.findViewById(R.id.friendship_status);
|
||||||
|
|
||||||
//Get the buttons
|
mFriendshipStatus.setOnFriendsStatusUpdateListener(this);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
|
//Initialize FrienshipStatus button
|
||||||
|
mFriendshipStatus.setUserID(mUserID);
|
||||||
|
mFriendshipStatus.refreshIfRequired();
|
||||||
|
|
||||||
//Check if it is required to fetch user information
|
//Check if it is required to fetch user information
|
||||||
if(mUserInfo == null){
|
if(mUserInfo == null){
|
||||||
getUserInfo();
|
getUserInfo();
|
||||||
@ -204,157 +177,11 @@ public class UserAccessDeniedFragment extends Fragment implements View.OnClickLi
|
|||||||
mUserName.setText(mUserInfo.getDisplayFullName());
|
mUserName.setText(mUserInfo.getDisplayFullName());
|
||||||
mUserImage.setUser(mUserInfo);
|
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
|
@Override
|
||||||
protected FriendshipStatus doInBackground(Integer... params) {
|
public void onAreFriend() {
|
||||||
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);
|
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!");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 -->
|
<!-- Basic account information -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/linearLayout"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
android:layout_marginTop="16dp"
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
android:layout_marginTop="16dp">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<org.communiquons.android.comunic.client.ui.views.WebUserAccountImage
|
<org.communiquons.android.comunic.client.ui.views.WebUserAccountImage
|
||||||
android:id="@+id/user_account_image"
|
android:id="@+id/user_account_image"
|
||||||
android:layout_width="@dimen/account_image_default_width"
|
android:layout_width="@dimen/account_image_default_width"
|
||||||
android:layout_height="@dimen/account_image_default_height"
|
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:contentDescription="@string/user_image_description"
|
||||||
android:layout_marginEnd="10dp"/>
|
android:src="@drawable/default_account_image" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/user_account_name"
|
android:id="@+id/user_account_name"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="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>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<org.communiquons.android.comunic.client.ui.views.FriendshipStatusButton
|
||||||
<!-- Available actions -->
|
android:id="@+id/friendship_status"
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/buttons_list"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
android:layout_marginTop="0dp">
|
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: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>
|
|
||||||
|
|
||||||
<!-- Account private notice -->
|
<!-- Account private notice -->
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
android:text="@string/notice_user_page_private"
|
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_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintBottom_toTopOf="@id/buttons_list"
|
app:layout_constraintRight_toRightOf="parent" />
|
||||||
android:layout_marginBottom="8dp" />
|
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
</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="action_reject_friend_request">Rejeter</string>
|
||||||
<string name="notice_request">Demande</string>
|
<string name="notice_request">Demande</string>
|
||||||
<string name="action_more_description">Plus d\'options</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>
|
</resources>
|
@ -244,4 +244,6 @@
|
|||||||
<string name="notice_request">Requested</string>
|
<string name="notice_request">Requested</string>
|
||||||
<string name="action_more_description">Get more options</string>
|
<string name="action_more_description">Get more options</string>
|
||||||
<string name="action_follow">Follow</string>
|
<string name="action_follow">Follow</string>
|
||||||
|
<string name="button_follow">Follow</string>
|
||||||
|
<string name="button_following">Following</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user