Friend status displayed in friends list.

This commit is contained in:
Pierre 2017-11-18 14:11:50 +01:00
parent 5ded2cd7b4
commit 5c8d8a8f52
6 changed files with 73 additions and 3 deletions

View File

@ -1,6 +1,8 @@
package org.communiquons.android.comunic.client.data; package org.communiquons.android.comunic.client.data;
import android.content.Context; import android.content.Context;
import android.os.Build;
import android.text.Html;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.util.Patterns; import android.util.Patterns;
@ -13,6 +15,7 @@ import java.io.OutputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Date;
import java.util.Formatter; import java.util.Formatter;
/** /**
@ -184,4 +187,28 @@ public class Utilities {
return count; return count;
} }
/**
* Prepare a string sent through the API to be shown in a TextView element
*
* @param input The string to prepare
* @return The string ready to be shown
*/
public static String prepareStringTextView(String input){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(input, Html.FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH).toString();
}
else
return Html.fromHtml(input).toString();
}
/**
* Get current timestamp
*
* @return The current timestamp
*/
public static int time(){
Date date = new Date();
return (int) Math.ceil(date.getTime()/1000);
}
} }

View File

@ -1,5 +1,7 @@
package org.communiquons.android.comunic.client.data.friendsList; package org.communiquons.android.comunic.client.data.friendsList;
import org.communiquons.android.comunic.client.data.Utilities;
/** /**
* Friend object * Friend object
* *
@ -9,6 +11,11 @@ package org.communiquons.android.comunic.client.data.friendsList;
public class Friend { public class Friend {
/**
* The minimal time of activity required to consider a user as signed in
*/
private static final int USER_INACTIVE_AFTER = 35;
/** /**
* The ID of the friend * The ID of the friend
*/ */
@ -105,4 +112,13 @@ public class Friend {
public int getLast_activity() { public int getLast_activity() {
return last_activity; return last_activity;
} }
/**
* Determine whether user is signed in or not
*
* @return True if user is signed in / false else
*/
public boolean signed_in(){
return (Utilities.time()-USER_INACTIVE_AFTER) < last_activity;
}
} }

View File

@ -1,7 +1,6 @@
package org.communiquons.android.comunic.client.data.friendsList; package org.communiquons.android.comunic.client.data.friendsList;
import android.app.Activity; import android.app.Activity;
import android.os.AsyncTask;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -11,9 +10,10 @@ import android.widget.ArrayAdapter;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import org.communiquons.android.comunic.client.BuildConfig;
import org.communiquons.android.comunic.client.R; import org.communiquons.android.comunic.client.R;
import org.communiquons.android.comunic.client.data.ImageLoad.ImageLoadManager; import org.communiquons.android.comunic.client.data.ImageLoad.ImageLoadManager;
import org.communiquons.android.comunic.client.data.ImageLoad.ImageLoadTask; import org.communiquons.android.comunic.client.data.Utilities;
import java.util.ArrayList; import java.util.ArrayList;
@ -58,7 +58,27 @@ public class FriendsAdapter extends ArrayAdapter<FriendUser> {
//Update user name //Update user name
TextView user_name = listItemView.findViewById(R.id.fragment_friendslist_item_fullname); TextView user_name = listItemView.findViewById(R.id.fragment_friendslist_item_fullname);
user_name.setText(friendUser.getUserInfo().getFullName()); user_name.setText(Utilities.prepareStringTextView(friendUser.getUserInfo().getFullName()));
//Update user status
boolean signed_in = friendUser.getFriend().signed_in();
TextView statusView = listItemView.findViewById(R.id.fragment_friendslist_item_status);
//Set the text
statusView.setText(signed_in ?
getContext().getText(R.string.user_status_online) :
getContext().getText(R.string.user_status_offline)
);
//Set the color
int status_color = 0;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
status_color = getContext().getResources().getColor(signed_in ? R.color.holo_green_dark : R.color.darker_gray, null);
}
else {
status_color = getContext().getResources().getColor(signed_in ? R.color.holo_green_dark : R.color.darker_gray);
}
statusView.setTextColor(status_color);
return listItemView; return listItemView;
} }

View File

@ -32,8 +32,10 @@
android:textSize="16sp"/> android:textSize="16sp"/>
<TextView <TextView
android:id="@+id/fragment_friendslist_item_status"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/user_status_offline"
tools:text="Online" tools:text="Online"
android:textColor="@android:color/holo_green_dark"/> android:textColor="@android:color/holo_green_dark"/>

View File

@ -3,4 +3,7 @@
<color name="colorPrimary">#3F51B5</color> <color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color> <color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color> <color name="colorAccent">#FF4081</color>
<color name="holo_green_dark">#ff669900</color>
<color name="darker_gray">#aaa</color>
</resources> </resources>

View File

@ -18,4 +18,6 @@
<string name="navigation_bottom_me_item">Me</string> <string name="navigation_bottom_me_item">Me</string>
<string name="fragment_friendslist_err_refresh">Couldn\'t refresh friends list !</string> <string name="fragment_friendslist_err_refresh">Couldn\'t refresh friends list !</string>
<string name="fragment_friendslist_err_get_userinfos">Couldn\'t get information about your friends!</string> <string name="fragment_friendslist_err_get_userinfos">Couldn\'t get information about your friends!</string>
<string name="user_status_online">Online</string>
<string name="user_status_offline">Offline</string>
</resources> </resources>