mirror of
				https://github.com/pierre42100/ComunicAndroid
				synced 2025-10-31 09:34:47 +00:00 
			
		
		
		
	Display groups posts on latest posts thread
This commit is contained in:
		| @@ -3,7 +3,9 @@ package org.communiquons.android.comunic.client.data.arrays; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.util.ArrayMap; | ||||
|  | ||||
| import org.communiquons.android.comunic.client.data.enums.PageType; | ||||
| import org.communiquons.android.comunic.client.data.models.Comment; | ||||
| import org.communiquons.android.comunic.client.data.models.GroupInfo; | ||||
| import org.communiquons.android.comunic.client.data.models.Post; | ||||
| import org.communiquons.android.comunic.client.data.models.UserInfo; | ||||
|  | ||||
| @@ -28,6 +30,11 @@ public class PostsList extends ArrayList<Post> { | ||||
|      */ | ||||
|     private ArrayMap<Integer, UserInfo> mUsersInfo = new ArrayMap<>(); | ||||
|  | ||||
|     /** | ||||
|      * Associated groups information | ||||
|      */ | ||||
|     private ArrayMap<Integer, GroupInfo> mGroupsInfo = new ArrayMap<>(); | ||||
|  | ||||
|     /** | ||||
|      * Get the IDs of the users who created the posts and their comments | ||||
|      * | ||||
| @@ -44,6 +51,9 @@ public class PostsList extends ArrayList<Post> { | ||||
|             if(!ids.contains(userID)) | ||||
|                 ids.add(userID); | ||||
|  | ||||
|             if(post.getPage_type() == PageType.USER_PAGE && !ids.contains(post.getPage_id())) | ||||
|                 ids.add(post.getPage_id()); | ||||
|  | ||||
|             if(post.getComments_list() != null){ | ||||
|  | ||||
|                 //Process the list of comments | ||||
| @@ -61,12 +71,28 @@ public class PostsList extends ArrayList<Post> { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get IDs of the related groups | ||||
|      * | ||||
|      * @return The list of IDs of related groups (may be an empty array) | ||||
|      */ | ||||
|     public ArrayList<Integer> getGroupsId(){ | ||||
|  | ||||
|         ArrayList<Integer> list = new ArrayList<>(); | ||||
|  | ||||
|         for (Post post : this){ | ||||
|             if(post.getPage_type() == PageType.GROUP_PAGE && !list.contains(post.getPage_id())) | ||||
|                 list.add(post.getPage_id()); | ||||
|         } | ||||
|  | ||||
|         return list; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get associated user information | ||||
|      * | ||||
|      * @return Associated user information | ||||
|      */ | ||||
|     @Nullable | ||||
|     public ArrayMap<Integer, UserInfo> getUsersInfo() { | ||||
|         return mUsersInfo; | ||||
|     } | ||||
| @@ -86,4 +112,31 @@ public class PostsList extends ArrayList<Post> { | ||||
|     public boolean hasUsersInfo(){ | ||||
|         return this.mUsersInfo != null; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get related groups information | ||||
|      * | ||||
|      * @return Information about the groups | ||||
|      */ | ||||
|     public ArrayMap<Integer, GroupInfo> getGroupsInfo() { | ||||
|         return mGroupsInfo; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set groups information | ||||
|      * | ||||
|      * @param groupsInfo Information about related groups | ||||
|      */ | ||||
|     public void setGroupsInfo(ArrayMap<Integer, GroupInfo> groupsInfo) { | ||||
|         this.mGroupsInfo = groupsInfo; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Check whether groups information have been set or not | ||||
|      * | ||||
|      * @return TRUE if information about groups have been set / FALSE else | ||||
|      */ | ||||
|     public boolean hasGroupsInfo(){ | ||||
|         return this.mGroupsInfo != null; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -145,6 +145,7 @@ public class PostsHelper { | ||||
|     public PostsList get_latest(int from) { | ||||
|         //Perform a request on the API | ||||
|         APIRequest params = new APIRequest(mContext, "posts/get_latest"); | ||||
|         params.addBoolean("include_groups", true); | ||||
|  | ||||
|         //Check if we have to start from a precise post | ||||
|         if(from > 0) | ||||
| @@ -166,6 +167,23 @@ public class PostsHelper { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Load information related to a post | ||||
|      * | ||||
|      * @param list The list of posts to process | ||||
|      * @return TRUE if all the information have been successfully loaded / FALSE else | ||||
|      */ | ||||
|     public boolean load_related_information(@NonNull PostsList list){ | ||||
|  | ||||
|         //Get information about related users | ||||
|         list.setUsersInfo(new GetUsersHelper(mContext).getMultiple(list.getUsersId())); | ||||
|  | ||||
|         //Get information about related groups | ||||
|         list.setGroupsInfo(new GroupsHelper(mContext).getInfoMultiple(list.getGroupsId())); | ||||
|  | ||||
|         return list.hasUsersInfo() && list.hasGroupsInfo(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Intend to delete a post specified by its ID | ||||
|      * | ||||
|   | ||||
| @@ -6,6 +6,7 @@ import org.communiquons.android.comunic.client.data.enums.GroupRegistrationLevel | ||||
| import org.communiquons.android.comunic.client.data.enums.GroupVisibility; | ||||
| import org.communiquons.android.comunic.client.data.enums.GroupsMembershipLevels; | ||||
| import org.communiquons.android.comunic.client.data.enums.GroupPostsCreationLevel; | ||||
| import org.communiquons.android.comunic.client.data.utils.Utilities; | ||||
|  | ||||
| /** | ||||
|  * Group information base model | ||||
| @@ -43,6 +44,13 @@ public class GroupInfo { | ||||
|         this.name = name; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return The name of the group ready to be shown on a TextView | ||||
|      */ | ||||
|     public String getDisplayName(){ | ||||
|         return Utilities.prepareStringTextView(getName()); | ||||
|     } | ||||
|  | ||||
|     public String getIcon_url() { | ||||
|         return icon_url; | ||||
|     } | ||||
|   | ||||
| @@ -5,7 +5,6 @@ import android.graphics.drawable.Drawable; | ||||
| import android.support.annotation.CallSuper; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.v7.widget.RecyclerView; | ||||
| import android.util.ArrayMap; | ||||
| import android.view.KeyEvent; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.View; | ||||
| @@ -17,6 +16,7 @@ import android.widget.TextView; | ||||
|  | ||||
| import org.communiquons.android.comunic.client.R; | ||||
| import org.communiquons.android.comunic.client.data.arrays.PostsList; | ||||
| import org.communiquons.android.comunic.client.data.enums.PageType; | ||||
| import org.communiquons.android.comunic.client.data.models.Comment; | ||||
| import org.communiquons.android.comunic.client.data.models.Post; | ||||
| import org.communiquons.android.comunic.client.data.models.UserInfo; | ||||
| @@ -64,9 +64,10 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|     private PostsList mList; | ||||
|  | ||||
|     /** | ||||
|      * Information about the users | ||||
|      * Specify whether the posts target should be shown or not | ||||
|      */ | ||||
|     private ArrayMap<Integer, UserInfo> mUsersInfo; | ||||
|     private boolean mDisplayPostsTarget = true; | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Utilities object | ||||
| @@ -90,7 +91,6 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|         super(context); | ||||
|  | ||||
|         mList = list; | ||||
|         mUsersInfo = list.getUsersInfo(); | ||||
|  | ||||
|         //Utilities | ||||
|         mUtils = new Utilities(getContext()); | ||||
| @@ -98,6 +98,15 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|         mListener = listener; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Specify whether the target of the posts should be shown or not | ||||
|      * | ||||
|      * @param displayPostsTarget TRUE to display posts target / FALSE else | ||||
|      */ | ||||
|     public void setDisplayPostsTarget(boolean displayPostsTarget) { | ||||
|         this.mDisplayPostsTarget = displayPostsTarget; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int getItemCount() { | ||||
|         return mList.size(); | ||||
| @@ -161,6 +170,7 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|         ((TextPostHolder)viewHolder).bind(position); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Text posts holder | ||||
|      */ | ||||
| @@ -168,6 +178,8 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|  | ||||
|         private WebUserAccountImage mUserAccountImage; | ||||
|         private TextView mUserAccountName; | ||||
|         private ImageView mPostTargetArrow; | ||||
|         private TextView mTargetPageName; | ||||
|         private TextView mPostDate; | ||||
|         private ImageView mPostVisibility; | ||||
|         private ImageView mPostActions; | ||||
| @@ -184,6 +196,8 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|  | ||||
|             mUserAccountImage = itemView.findViewById(R.id.user_account_image); | ||||
|             mUserAccountName = itemView.findViewById(R.id.user_account_name); | ||||
|             mPostTargetArrow = itemView.findViewById(R.id.target_arrow); | ||||
|             mTargetPageName = itemView.findViewById(R.id.target_page_name); | ||||
|             mPostDate = itemView.findViewById(R.id.post_creation_time); | ||||
|             mPostVisibility = itemView.findViewById(R.id.post_visibility); | ||||
|             mPostActions = itemView.findViewById(R.id.post_actions_btn); | ||||
| @@ -212,8 +226,8 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|  | ||||
|             Post post = getPost(position); | ||||
|             UserInfo user = null; | ||||
|             if(mUsersInfo.containsKey(post.getUserID())) | ||||
|                 user = mUsersInfo.get(post.getUserID()); | ||||
|             if(mList.getUsersInfo().containsKey(post.getUserID())) | ||||
|                 user = mList.getUsersInfo().get(post.getUserID()); | ||||
|  | ||||
|  | ||||
|             //Apply user information | ||||
| @@ -226,6 +240,40 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|                 mUserAccountName.setText(""); | ||||
|             } | ||||
|  | ||||
|             //Specify post target | ||||
|             setTargetNameVisibility(true); | ||||
|  | ||||
|             //Check if posts target has not to be shown | ||||
|             if(!mDisplayPostsTarget) | ||||
|                 setTargetNameVisibility(false); | ||||
|  | ||||
|             //Do not display post target if the user who created the post created it on his page | ||||
|             else if(post.getPage_type() == PageType.USER_PAGE | ||||
|                     && post.getPage_id() == post.getUserID()) | ||||
|                 setTargetNameVisibility(false); | ||||
|  | ||||
|             //For user page | ||||
|             else if(post.getPage_type() == PageType.USER_PAGE | ||||
|                     && mList.getUsersInfo().containsKey(post.getPage_id())){ | ||||
|  | ||||
|                 mTargetPageName.setText(mList.getUsersInfo().get(post.getPage_id()) | ||||
|                         .getDisplayFullName()); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             //For group page | ||||
|             else if(post.getPage_type() == PageType.GROUP_PAGE | ||||
|                     && mList.getGroupsInfo().containsKey(post.getPage_id())){ | ||||
|  | ||||
|                 mTargetPageName.setText(mList.getGroupsInfo().get(post.getPage_id()) | ||||
|                         .getDisplayName()); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             //Information about user / group not found | ||||
|             else | ||||
|                 setTargetNameVisibility(false); | ||||
|  | ||||
|  | ||||
|             //Post date | ||||
|             mPostDate.setText(mUtils.timeToString(Utilities.time() - post.getPost_time())); | ||||
| @@ -292,8 +340,8 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|                     if(comment.isDeleted()) | ||||
|                         continue; | ||||
|  | ||||
|                     UserInfo commentUser = mUsersInfo.containsKey(comment.getUserID()) ? | ||||
|                             mUsersInfo.get(comment.getUserID()) : null; | ||||
|                     UserInfo commentUser = mList.getUsersInfo().containsKey(comment.getUserID()) ? | ||||
|                             mList.getUsersInfo().get(comment.getUserID()) : null; | ||||
|  | ||||
|                     View commentView = CommentsAdapter.getInflatedView(getContext(), comment, | ||||
|                             mListener, commentUser, mCommentsList); | ||||
| @@ -339,6 +387,11 @@ public class PostsAdapter extends BaseRecyclerViewAdapter { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private void setTargetNameVisibility(boolean visible){ | ||||
|             mPostTargetArrow.setVisibility(visible ? View.VISIBLE : View.GONE); | ||||
|             mTargetPageName.setVisibility(visible ? View.VISIBLE : View.GONE); | ||||
|         } | ||||
|  | ||||
|         private void sendComment(){ | ||||
|             mListener.onCreateComment(getLayoutPosition(), mSendCommentButton, | ||||
|                     getPost(getLayoutPosition()), mEditCommentContentView); | ||||
|   | ||||
| @@ -21,13 +21,16 @@ public class GetLatestPostsTask extends SafeAsyncTask<Integer, Void, PostsList> | ||||
|     @Override | ||||
|     protected PostsList doInBackground(Integer... integers) { | ||||
|  | ||||
|         PostsHelper helper = new PostsHelper(getContext()); | ||||
|  | ||||
|         //Get the list of posts | ||||
|         int from  = integers[0] == 0 ? -1 : integers[0]; | ||||
|         PostsList list = new PostsHelper(getContext()).get_latest(from); | ||||
|         PostsList list = helper.get_latest(from); | ||||
|         if(list == null) return null; | ||||
|  | ||||
|         list.setUsersInfo(new GetUsersHelper(getContext()).getMultiple(list.getUsersId())); | ||||
|         if(!list.hasUsersInfo()) return null; | ||||
|         //Load related information | ||||
|         if(!helper.load_related_information(list)) | ||||
|             return null; | ||||
|  | ||||
|         return list; | ||||
|     } | ||||
|   | ||||
| @@ -22,13 +22,16 @@ public class GetSinglePostTask extends SafeAsyncTask<Integer, Void, PostsList> { | ||||
|     @Override | ||||
|     protected PostsList doInBackground(Integer... integers) { | ||||
|  | ||||
|         Post post = new PostsHelper(getContext()).getSingle(integers[0]); | ||||
|         PostsHelper helper = new PostsHelper(getContext()); | ||||
|  | ||||
|         Post post = helper.getSingle(integers[0]); | ||||
|         if(post == null) return null; | ||||
|  | ||||
|         PostsList list = new PostsList(); | ||||
|         list.add(post); | ||||
|  | ||||
|         list.setUsersInfo(new GetUsersHelper(getContext()).getMultiple(list.getUsersId())); | ||||
|         if(!helper.load_related_information(list)) | ||||
|             return null; | ||||
|  | ||||
|         return list; | ||||
|     } | ||||
|   | ||||
| @@ -31,16 +31,20 @@ public class LoadUserPostsTask extends SafeAsyncTask<Integer, Void, PostsList> { | ||||
|     @Override | ||||
|     protected PostsList doInBackground(Integer ...integers) { | ||||
|  | ||||
|         PostsHelper helper = new PostsHelper(getContext()); | ||||
|  | ||||
|         PostsList list; | ||||
|  | ||||
|         if(integers.length == 0) | ||||
|             list = new PostsHelper(getContext()).get_user(mUserID); | ||||
|             list = helper.get_user(mUserID); | ||||
|         else | ||||
|             list = new PostsHelper(getContext()).get_user(mUserID, integers[0]); | ||||
|             list = helper.get_user(mUserID, integers[0]); | ||||
|  | ||||
|         //Get associated user information, if possible | ||||
|         if(list != null) | ||||
|             list.setUsersInfo(new GetUsersHelper(getContext()).getMultiple(list.getUsersId())); | ||||
|         if(list == null) return null; | ||||
|  | ||||
|         if(!helper.load_related_information(list)) | ||||
|             return null; | ||||
|  | ||||
|         return list; | ||||
|     } | ||||
|   | ||||
| @@ -79,6 +79,11 @@ abstract class AbstractPostsListFragment extends Fragment | ||||
|      */ | ||||
|     private int MENU_ACTION = MENU_ACTION_NONE; | ||||
|  | ||||
|     /** | ||||
|      * Specify whether posts target should be shown or not | ||||
|      */ | ||||
|     private boolean mDisplayPostsTarget = true; | ||||
|  | ||||
|     /** | ||||
|      * Current processed comment that context menu display actions for | ||||
|      */ | ||||
| @@ -131,8 +136,7 @@ abstract class AbstractPostsListFragment extends Fragment | ||||
|     /** | ||||
|      * Arguments used to create post form | ||||
|      */ | ||||
|     Bundle mCreateFormArgs; | ||||
|  | ||||
|     private Bundle mCreateFormArgs; | ||||
|  | ||||
|     @Nullable | ||||
|     @Override | ||||
| @@ -256,12 +260,20 @@ abstract class AbstractPostsListFragment extends Fragment | ||||
|             return; | ||||
|  | ||||
|         if(list == null){ | ||||
|             Toast.makeText(getActivity(), R.string.err_get_posts_list, Toast.LENGTH_SHORT).show(); | ||||
|             Toast.makeText(getActivity(), R.string.err_get_posts_list, | ||||
|                     Toast.LENGTH_SHORT).show(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if(!list.hasUsersInfo()){ | ||||
|             Toast.makeText(getActivity(), R.string.err_get_user_info, Toast.LENGTH_SHORT).show(); | ||||
|             Toast.makeText(getActivity(), R.string.err_get_user_info, | ||||
|                     Toast.LENGTH_SHORT).show(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if(!list.hasGroupsInfo()){ | ||||
|             Toast.makeText(getActivity(), R.string.err_get_related_groups_info, | ||||
|                     Toast.LENGTH_SHORT).show(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
| @@ -292,6 +304,7 @@ abstract class AbstractPostsListFragment extends Fragment | ||||
|         //Create posts adapter (if required) | ||||
|         if(mPostsAdapter == null) { | ||||
|             mPostsAdapter = new PostsAdapter(getActivity(), mPostsList, this); | ||||
|             mPostsAdapter.setDisplayPostsTarget(mDisplayPostsTarget); | ||||
|  | ||||
|             //Connect the adapter to the view | ||||
|             mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); | ||||
| @@ -319,6 +332,15 @@ abstract class AbstractPostsListFragment extends Fragment | ||||
|         return getPostsList().get(getPostsList().size() - 1).getId(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Specify whether posts target should be shown or not | ||||
|      * | ||||
|      * @param displayPostsTarget TRUE to display / FALSE else | ||||
|      */ | ||||
|     protected void setDisplayPostsTarget(boolean displayPostsTarget) { | ||||
|         this.mDisplayPostsTarget = displayPostsTarget; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onReachTop() { | ||||
|         //Nothing | ||||
|   | ||||
| @@ -46,6 +46,8 @@ public class UserPostsFragment extends AbstractPostsListFragment { | ||||
|     public void onCreate(@Nullable Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|  | ||||
|         setDisplayPostsTarget(false); | ||||
|  | ||||
|         //Get arguments | ||||
|         Bundle bundle = getArguments(); | ||||
|         assert bundle != null; | ||||
|   | ||||
							
								
								
									
										9
									
								
								app/src/main/res/drawable/ic_play_arrow.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/src/main/res/drawable/ic_play_arrow.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="24dp" | ||||
|     android:height="24dp" | ||||
|     android:viewportWidth="24.0" | ||||
|     android:viewportHeight="24.0"> | ||||
|     <path | ||||
|         android:fillColor="@color/default_drawable_color" | ||||
|         android:pathData="M8,5v14l11,-7z"/> | ||||
| </vector> | ||||
| @@ -28,6 +28,27 @@ | ||||
|         app:layout_constraintTop_toTopOf="parent" | ||||
|         tools:text="User name" /> | ||||
|  | ||||
|     <ImageView | ||||
|         android:id="@+id/target_arrow" | ||||
|         style="@style/PostTargetArrow" | ||||
|         android:layout_width="15dp" | ||||
|         android:layout_height="13dp" | ||||
|         android:scaleType="centerInside" | ||||
|         app:layout_constraintBottom_toTopOf="@+id/post_creation_time" | ||||
|         app:layout_constraintStart_toEndOf="@+id/user_account_name" | ||||
|         app:layout_constraintTop_toTopOf="@+id/user_account_name" | ||||
|         tools:ignore="ContentDescription" /> | ||||
|  | ||||
|     <TextView | ||||
|         android:id="@+id/target_page_name" | ||||
|         style="@style/PostOwnerName" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         app:layout_constraintBottom_toBottomOf="@+id/target_arrow" | ||||
|         app:layout_constraintStart_toEndOf="@+id/target_arrow" | ||||
|         app:layout_constraintTop_toTopOf="@+id/target_arrow" | ||||
|         tools:text="Target Page" /> | ||||
|  | ||||
|     <!-- Post creation time --> | ||||
|     <TextView | ||||
|         android:id="@+id/post_creation_time" | ||||
|   | ||||
| @@ -266,4 +266,8 @@ | ||||
|     <string name="err_update_conversation_message_content">Une erreur a survenue lors de la mise à jour du contenu du message ! Veuillez réessayer…</string> | ||||
|     <string name="success_update_conversation_message_content">Le contenu du message  a bien été mis à jour !</string> | ||||
|     <string name="err_get_older_posts">Une erreur a survenue lors de la récupération de posts plus anciens !</string> | ||||
|     <string name="err_get_posts_list">Impossible de récupérer la liste de posts !</string> | ||||
|     <string name="notice_no_post_yet">Il n\'y a aucun post à afficher ici pour le moment.</string> | ||||
|     <string name="post_visibility_icon">Visiblité du post</string> | ||||
|     <string name="err_get_related_groups_info">Une erreur a survenue lors de la récupération d\'information sur les groupes liés !</string> | ||||
| </resources> | ||||
| @@ -268,4 +268,5 @@ | ||||
|     <string name="err_get_posts_list">Could not get the list of posts!</string> | ||||
|     <string name="notice_no_post_yet">There is no post to display here yet.</string> | ||||
|     <string name="post_visibility_icon">Post visibility</string> | ||||
|     <string name="err_get_related_groups_info">Could not get information about related groups!</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -93,6 +93,12 @@ | ||||
|         <item name="android:textStyle">bold</item> | ||||
|     </style> | ||||
|  | ||||
|     <!-- Post target arrow --> | ||||
|     <style name="PostTargetArrow"> | ||||
|         <item name="android:src">@drawable/ic_play_arrow</item> | ||||
|         <item name="android:tint">@color/user_name_link</item> | ||||
|     </style> | ||||
|  | ||||
|     <!-- Post date --> | ||||
|     <style name="PostDate"> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Pierre HUBERT
					Pierre HUBERT