bug fix, added generic click listener for all viewholder, layout fix, code cleanup

This commit is contained in:
nuclearfog 2022-12-03 19:37:08 +01:00
parent ea863b92c2
commit fd3bed9bff
No known key found for this signature in database
GPG Key ID: 03488A185C476379
27 changed files with 215 additions and 315 deletions

View File

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.adapter.holder.AccountHolder; import org.nuclearfog.twidda.adapter.holder.AccountHolder;
import org.nuclearfog.twidda.adapter.holder.AccountHolder.OnAccountClickListener; import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.model.Account; import org.nuclearfog.twidda.model.Account;
@ -23,7 +23,7 @@ import java.util.List;
* @author nuclearfog * @author nuclearfog
* @see org.nuclearfog.twidda.ui.fragments.AccountFragment * @see org.nuclearfog.twidda.ui.fragments.AccountFragment
*/ */
public class AccountAdapter extends Adapter<AccountHolder> implements OnAccountClickListener { public class AccountAdapter extends Adapter<AccountHolder> implements OnHolderClickListener {
private GlobalSettings settings; private GlobalSettings settings;
private OnAccountClickListener listener; private OnAccountClickListener listener;
@ -65,15 +65,21 @@ public class AccountAdapter extends Adapter<AccountHolder> implements OnAccountC
@Override @Override
public void onAccountClick(int position, int type) { public void onItemClick(int position, int type) {
Account account = accounts.get(position); Account account = accounts.get(position);
if (type == AccountHolder.OnAccountClickListener.TYPE_SELECT) { if (type == OnHolderClickListener.ACCOUNT_SELECT) {
listener.onAccountClick(account); listener.onAccountClick(account);
} else if (type == AccountHolder.OnAccountClickListener.TYPE_REMOVE) { } else if (type == OnHolderClickListener.ACCOUNT_REMOVE) {
listener.onAccountRemove(account); listener.onAccountRemove(account);
} }
} }
@Override
public boolean onPlaceholderClick(int position) {
return false;
}
/** /**
* sets login data * sets login data
* *

View File

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder; import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import org.nuclearfog.twidda.adapter.holder.ImageHolder; import org.nuclearfog.twidda.adapter.holder.ImageHolder;
import org.nuclearfog.twidda.adapter.holder.ImageHolder.OnImageItemClickListener; import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder; import org.nuclearfog.twidda.adapter.holder.PlaceHolder;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
@ -22,7 +22,7 @@ import java.util.List;
* @author nuclearfog * @author nuclearfog
* @see org.nuclearfog.twidda.ui.activities.ImageViewer * @see org.nuclearfog.twidda.ui.activities.ImageViewer
*/ */
public class ImageAdapter extends Adapter<ViewHolder> implements OnImageItemClickListener { public class ImageAdapter extends Adapter<ViewHolder> implements OnHolderClickListener {
/** /**
* View type for an image item * View type for an image item
@ -93,18 +93,24 @@ public class ImageAdapter extends Adapter<ViewHolder> implements OnImageItemClic
@Override @Override
public void onImageClick(int position, int type) { public void onItemClick(int position, int type) {
switch (type) { switch (type) {
case OnImageItemClickListener.TYPE_IMAGE: case OnHolderClickListener.IMAGE_CLICK:
itemClickListener.onImageClick(imageLinks.get(position)); itemClickListener.onImageClick(imageLinks.get(position));
break; break;
case OnImageItemClickListener.TYPE_SAVE: case OnHolderClickListener.IMAGE_SAVE:
itemClickListener.onImageSave(imageLinks.get(position)); itemClickListener.onImageSave(imageLinks.get(position));
break; break;
} }
} }
@Override
public boolean onPlaceholderClick(int position) {
return false;
}
/** /**
* replace all image links * replace all image links
* *

View File

@ -11,9 +11,8 @@ import com.squareup.picasso.Picasso;
import org.nuclearfog.tag.Tagger.OnTagClickListener; import org.nuclearfog.tag.Tagger.OnTagClickListener;
import org.nuclearfog.twidda.adapter.holder.MessageHolder; import org.nuclearfog.twidda.adapter.holder.MessageHolder;
import org.nuclearfog.twidda.adapter.holder.MessageHolder.OnMessageClickListener; import org.nuclearfog.twidda.adapter.holder.MessageHolder.OnItemClickListener;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder; import org.nuclearfog.twidda.adapter.holder.PlaceHolder;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder.OnHolderClickListener;
import org.nuclearfog.twidda.backend.lists.Messages; import org.nuclearfog.twidda.backend.lists.Messages;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
@ -25,7 +24,7 @@ import org.nuclearfog.twidda.model.Message;
* @author nuclearfog * @author nuclearfog
* @see org.nuclearfog.twidda.ui.fragments.MessageFragment * @see org.nuclearfog.twidda.ui.fragments.MessageFragment
*/ */
public class MessageAdapter extends Adapter<ViewHolder> implements OnMessageClickListener, OnHolderClickListener { public class MessageAdapter extends Adapter<ViewHolder> implements OnItemClickListener {
/** /**
* index of {@link #loadingIndex} if no index is defined * index of {@link #loadingIndex} if no index is defined
@ -114,23 +113,23 @@ public class MessageAdapter extends Adapter<ViewHolder> implements OnMessageClic
@Override @Override
public void onMessageClick(int position, int type) { public void onItemClick(int position, int type) {
Message message = messages.get(position); Message message = messages.get(position);
if (message != null) { if (message != null) {
switch (type) { switch (type) {
case OnMessageClickListener.ANSWER: case OnItemClickListener.MESSAGE_ANSWER:
itemClickListener.onClick(message, OnMessageClickListener.ANSWER); itemClickListener.onClick(message, OnMessageClickListener.ANSWER);
break; break;
case OnMessageClickListener.DELETE: case OnItemClickListener.MESSAGE_DELETE:
itemClickListener.onClick(message, OnMessageClickListener.DELETE); itemClickListener.onClick(message, OnMessageClickListener.DELETE);
break; break;
case OnMessageClickListener.MEDIA: case OnItemClickListener.MESSAGE_MEDIA:
itemClickListener.onClick(message, OnMessageClickListener.MEDIA); itemClickListener.onClick(message, OnMessageClickListener.MEDIA);
break; break;
case OnMessageClickListener.PROFILE: case OnItemClickListener.MESSAGE_PROFILE:
itemClickListener.onClick(message, OnMessageClickListener.PROFILE); itemClickListener.onClick(message, OnMessageClickListener.PROFILE);
break; break;
} }
@ -149,7 +148,7 @@ public class MessageAdapter extends Adapter<ViewHolder> implements OnMessageClic
@Override @Override
public boolean onHolderClick(int position) { public boolean onPlaceholderClick(int position) {
boolean success = itemClickListener.onPlaceholderClick(messages.getNextCursor()); boolean success = itemClickListener.onPlaceholderClick(messages.getNextCursor());
if (success) { if (success) {
loadingIndex = position; loadingIndex = position;
@ -225,17 +224,17 @@ public class MessageAdapter extends Adapter<ViewHolder> implements OnMessageClic
/** /**
* indicates that the "delete" button was clicked * indicates that the "delete" button was clicked
*/ */
int DELETE = 10; int DELETE = 2;
/** /**
* indicates that the profile image was clicked * indicates that the profile image was clicked
*/ */
int PROFILE = 100; int PROFILE = 3;
/** /**
* indicates that the media button was clicked * indicates that the media button was clicked
*/ */
int MEDIA = 1000; int MEDIA = 4;
/** /**
* called when a button was clicked * called when a button was clicked

View File

@ -10,12 +10,10 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder; import org.nuclearfog.twidda.adapter.holder.PlaceHolder;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.StatusHolder; import org.nuclearfog.twidda.adapter.holder.StatusHolder;
import org.nuclearfog.twidda.adapter.holder.StatusHolder.OnStatusClickListener;
import org.nuclearfog.twidda.adapter.holder.UserHolder; import org.nuclearfog.twidda.adapter.holder.UserHolder;
import org.nuclearfog.twidda.adapter.holder.UserHolder.OnUserClickListener;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.model.Notification; import org.nuclearfog.twidda.model.Notification;
@ -30,7 +28,7 @@ import java.util.List;
* *
* @author nuclearfog * @author nuclearfog
*/ */
public class NotificationAdapter extends Adapter<ViewHolder> implements OnStatusClickListener, OnUserClickListener, OnHolderClickListener { public class NotificationAdapter extends Adapter<ViewHolder> implements OnHolderClickListener {
/** /**
* Minimum count of new statuses to insert a placeholder. * Minimum count of new statuses to insert a placeholder.
@ -150,7 +148,7 @@ public class NotificationAdapter extends Adapter<ViewHolder> implements OnStatus
@Override @Override
public boolean onHolderClick(int position) { public boolean onPlaceholderClick(int position) {
long sinceId = 0; long sinceId = 0;
long maxId = 0; long maxId = 0;
if (position == 0) { if (position == 0) {
@ -183,16 +181,17 @@ public class NotificationAdapter extends Adapter<ViewHolder> implements OnStatus
@Override @Override
public void onStatusClick(int position, int type) { public void onItemClick(int position, int type) {
Notification item = items.get(position); Notification item = items.get(position);
switch (type) { switch (type) {
case OnStatusClickListener.TYPE_LABEL: case OnHolderClickListener.USER_CLICK:
case OnHolderClickListener.STATUS_LABEL:
if (item != null && item.getUser() != null) { if (item != null && item.getUser() != null) {
listener.onUserClick(item.getUser()); listener.onUserClick(item.getUser());
} }
break; break;
case OnStatusClickListener.TYPE_STATUS: case OnHolderClickListener.STATUS_CLICK:
if (item != null && item.getStatus() != null) { if (item != null && item.getStatus() != null) {
listener.onStatusClick(item.getStatus()); listener.onStatusClick(item.getStatus());
} }
@ -200,17 +199,6 @@ public class NotificationAdapter extends Adapter<ViewHolder> implements OnStatus
} }
} }
@Override
public void onUserClick(int position, int type) {
Notification item = items.get(position);
if (type == OnUserClickListener.ITEM_CLICK) {
if (item != null && item.getUser() != null) {
listener.onUserClick(item.getUser());
}
}
}
/** /**
* add new items at specific position * add new items at specific position
* *

View File

@ -11,10 +11,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder; import org.nuclearfog.twidda.adapter.holder.PlaceHolder;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.StatusHolder; import org.nuclearfog.twidda.adapter.holder.StatusHolder;
import org.nuclearfog.twidda.adapter.holder.StatusHolder.OnStatusClickListener;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.model.Status; import org.nuclearfog.twidda.model.Status;
@ -29,7 +28,7 @@ import java.util.List;
* @author nuclearfog * @author nuclearfog
* @see StatusFragment * @see StatusFragment
*/ */
public class StatusAdapter extends Adapter<ViewHolder> implements OnStatusClickListener, OnHolderClickListener { public class StatusAdapter extends Adapter<ViewHolder> implements OnHolderClickListener {
/** /**
* index of {@link #loadingIndex} if no index is defined * index of {@link #loadingIndex} if no index is defined
@ -123,7 +122,7 @@ public class StatusAdapter extends Adapter<ViewHolder> implements OnStatusClickL
@Override @Override
public boolean onHolderClick(int position) { public boolean onPlaceholderClick(int position) {
long sinceId = 0; long sinceId = 0;
long maxId = 0; long maxId = 0;
if (position == 0) { if (position == 0) {
@ -156,8 +155,8 @@ public class StatusAdapter extends Adapter<ViewHolder> implements OnStatusClickL
@Override @Override
public void onStatusClick(int position, int type) { public void onItemClick(int position, int type) {
if (type == OnStatusClickListener.TYPE_STATUS) { if (type == OnHolderClickListener.STATUS_CLICK) {
Status status = items.get(position); Status status = items.get(position);
if (status != null) { if (status != null) {
listener.onStatusSelected(status); listener.onStatusSelected(status);

View File

@ -6,8 +6,8 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder; import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.TrendHolder; import org.nuclearfog.twidda.adapter.holder.TrendHolder;
import org.nuclearfog.twidda.adapter.holder.TrendHolder.OnTrendClickListener;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.model.Trend; import org.nuclearfog.twidda.model.Trend;
@ -20,7 +20,7 @@ import java.util.List;
* @author nuclearfog * @author nuclearfog
* @see org.nuclearfog.twidda.ui.fragments.TrendFragment * @see org.nuclearfog.twidda.ui.fragments.TrendFragment
*/ */
public class TrendAdapter extends Adapter<ViewHolder> implements OnTrendClickListener { public class TrendAdapter extends Adapter<ViewHolder> implements OnHolderClickListener {
/** /**
* trend limit * trend limit
@ -66,10 +66,16 @@ public class TrendAdapter extends Adapter<ViewHolder> implements OnTrendClickLis
@Override @Override
public void onTrendClick(int position) { public void onItemClick(int position, int type) {
itemClickListener.onTrendClick(trends.get(position)); itemClickListener.onTrendClick(trends.get(position));
} }
@Override
public boolean onPlaceholderClick(int position) {
return false;
}
/** /**
* replace data from list * replace data from list
* *

View File

@ -11,10 +11,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder; import org.nuclearfog.twidda.adapter.holder.PlaceHolder;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.UserHolder; import org.nuclearfog.twidda.adapter.holder.UserHolder;
import org.nuclearfog.twidda.adapter.holder.UserHolder.OnUserClickListener;
import org.nuclearfog.twidda.backend.lists.Users; import org.nuclearfog.twidda.backend.lists.Users;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
@ -26,7 +25,7 @@ import org.nuclearfog.twidda.model.User;
* @author nuclearfog * @author nuclearfog
* @see org.nuclearfog.twidda.ui.fragments.UserFragment * @see org.nuclearfog.twidda.ui.fragments.UserFragment
*/ */
public class UserAdapter extends Adapter<ViewHolder> implements OnUserClickListener, OnHolderClickListener { public class UserAdapter extends Adapter<ViewHolder> implements OnHolderClickListener {
/** /**
* index of {@link #loadingIndex} if no index is defined * index of {@link #loadingIndex} if no index is defined
@ -119,7 +118,7 @@ public class UserAdapter extends Adapter<ViewHolder> implements OnUserClickListe
@Override @Override
public boolean onHolderClick(int position) { public boolean onPlaceholderClick(int position) {
boolean actionPerformed = listener.onPlaceholderClick(users.getNext()); boolean actionPerformed = listener.onPlaceholderClick(users.getNext());
if (actionPerformed) { if (actionPerformed) {
loadingIndex = position; loadingIndex = position;
@ -130,16 +129,16 @@ public class UserAdapter extends Adapter<ViewHolder> implements OnUserClickListe
@Override @Override
public void onUserClick(int position, int type) { public void onItemClick(int position, int type) {
switch (type) { switch (type) {
case OnUserClickListener.ITEM_CLICK: case OnHolderClickListener.USER_CLICK:
User user = users.get(position); User user = users.get(position);
if (user != null) { if (user != null) {
listener.onUserClick(user); listener.onUserClick(user);
} }
break; break;
case OnUserClickListener.ITEM_REMOVE: case OnHolderClickListener.USER_REMOVE:
user = users.get(position); user = users.get(position);
if (enableDelete && user != null) { if (enableDelete && user != null) {
listener.onDelete(user); listener.onDelete(user);

View File

@ -9,10 +9,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder; import org.nuclearfog.twidda.adapter.holder.PlaceHolder;
import org.nuclearfog.twidda.adapter.holder.PlaceHolder.OnHolderClickListener;
import org.nuclearfog.twidda.adapter.holder.UserlistHolder; import org.nuclearfog.twidda.adapter.holder.UserlistHolder;
import org.nuclearfog.twidda.adapter.holder.UserlistHolder.OnListClickListener;
import org.nuclearfog.twidda.backend.lists.UserLists; import org.nuclearfog.twidda.backend.lists.UserLists;
import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.backend.utils.PicassoBuilder;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
@ -25,7 +24,7 @@ import org.nuclearfog.twidda.model.UserList;
* @author nuclearfog * @author nuclearfog
* @see org.nuclearfog.twidda.ui.fragments.UserListFragment * @see org.nuclearfog.twidda.ui.fragments.UserListFragment
*/ */
public class UserlistAdapter extends Adapter<ViewHolder> implements OnListClickListener, OnHolderClickListener { public class UserlistAdapter extends Adapter<ViewHolder> implements OnHolderClickListener {
/** /**
* indicator if there is no loading progress * indicator if there is no loading progress
@ -108,15 +107,15 @@ public class UserlistAdapter extends Adapter<ViewHolder> implements OnListClickL
@Override @Override
public void onUserlistClick(int position, int type) { public void onItemClick(int position, int type) {
UserList item = userlists.get(position); UserList item = userlists.get(position);
if (item != null) { if (item != null) {
switch (type) { switch (type) {
case OnListClickListener.LIST_CLICK: case OnHolderClickListener.LIST_CLICK:
listener.onListClick(item); listener.onListClick(item);
break; break;
case OnListClickListener.PROFILE_CLICK: case OnHolderClickListener.LIST_PROFILE:
listener.onProfileClick(item.getListOwner()); listener.onProfileClick(item.getListOwner());
break; break;
} }
@ -125,7 +124,7 @@ public class UserlistAdapter extends Adapter<ViewHolder> implements OnListClickL
@Override @Override
public boolean onHolderClick(int position) { public boolean onPlaceholderClick(int position) {
boolean actionPerformed = listener.onPlaceholderClick(userlists.getNext()); boolean actionPerformed = listener.onPlaceholderClick(userlists.getNext());
if (actionPerformed) if (actionPerformed)
loadingIndex = position; loadingIndex = position;

View File

@ -39,7 +39,7 @@ public class AccountHolder extends ViewHolder implements OnClickListener {
private GlobalSettings settings; private GlobalSettings settings;
private Picasso picasso; private Picasso picasso;
private OnAccountClickListener listener; private OnHolderClickListener listener;
/** /**
* *
@ -69,9 +69,9 @@ public class AccountHolder extends ViewHolder implements OnClickListener {
int position = getLayoutPosition(); int position = getLayoutPosition();
if (position != NO_POSITION && listener != null) { if (position != NO_POSITION && listener != null) {
if (v == itemView) { if (v == itemView) {
listener.onAccountClick(position, OnAccountClickListener.TYPE_SELECT); listener.onItemClick(position, OnHolderClickListener.ACCOUNT_SELECT);
} else if (v == remove) { } else if (v == remove) {
listener.onAccountClick(position, OnAccountClickListener.TYPE_REMOVE); listener.onItemClick(position, OnHolderClickListener.ACCOUNT_REMOVE);
} }
} }
} }
@ -111,23 +111,7 @@ public class AccountHolder extends ViewHolder implements OnClickListener {
/** /**
* set item click listener * set item click listener
*/ */
public void setOnAccountClickListener(OnAccountClickListener listener) { public void setOnAccountClickListener(OnHolderClickListener listener) {
this.listener = listener; this.listener = listener;
} }
/**
* listener for item click
*/
public interface OnAccountClickListener {
int TYPE_SELECT = 3;
int TYPE_REMOVE = 4;
/**
* @param position position of the item
* @param type type of click {@link #TYPE_SELECT,#TYPE_REMOVE}
*/
void onAccountClick(int position, int type);
}
} }

View File

@ -28,7 +28,7 @@ public class ImageHolder extends ViewHolder implements OnClickListener {
private ImageView preview; private ImageView preview;
private ImageButton saveButton; private ImageButton saveButton;
private OnImageItemClickListener listener; private OnHolderClickListener listener;
/** /**
* @param parent Parent view from adapter * @param parent Parent view from adapter
@ -54,9 +54,9 @@ public class ImageHolder extends ViewHolder implements OnClickListener {
int pos = getLayoutPosition(); int pos = getLayoutPosition();
if (pos != NO_POSITION && listener != null) { if (pos != NO_POSITION && listener != null) {
if (v == preview) { if (v == preview) {
listener.onImageClick(pos, OnImageItemClickListener.TYPE_IMAGE); listener.onItemClick(pos, OnHolderClickListener.IMAGE_CLICK);
} else if (v == saveButton) { } else if (v == saveButton) {
listener.onImageClick(pos, OnImageItemClickListener.TYPE_SAVE); listener.onItemClick(pos, OnHolderClickListener.IMAGE_SAVE);
} }
} }
} }
@ -64,7 +64,7 @@ public class ImageHolder extends ViewHolder implements OnClickListener {
/** /**
* set item click listener * set item click listener
*/ */
public void setOnImageClickListener(OnImageItemClickListener listener) { public void setOnImageClickListener(OnHolderClickListener listener) {
this.listener = listener; this.listener = listener;
} }
@ -81,20 +81,4 @@ public class ImageHolder extends ViewHolder implements OnClickListener {
public void setImageUri(Uri uri) { public void setImageUri(Uri uri) {
preview.setImageURI(uri); preview.setImageURI(uri);
} }
/**
* item click listener
*/
public interface OnImageItemClickListener {
int TYPE_IMAGE = 1;
int TYPE_SAVE = 2;
/**
* @param position position of the image
* @param type type of action {@link #TYPE_IMAGE,#TYPE_SAVE}
*/
void onImageClick(int position, int type);
}
} }

View File

@ -37,7 +37,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
*/ */
public class MessageHolder extends ViewHolder implements OnClickListener, OnTagClickListener { public class MessageHolder extends ViewHolder implements OnClickListener, OnTagClickListener {
private TextView username, screenname, receiver, time, text; private TextView username, screenname, time, text;
private ImageView profile, verifiedIcon, lockedIcon; private ImageView profile, verifiedIcon, lockedIcon;
private ImageButton mediaButton; private ImageButton mediaButton;
private Button answer, delete; private Button answer, delete;
@ -45,7 +45,7 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
private GlobalSettings settings; private GlobalSettings settings;
private Picasso picasso; private Picasso picasso;
private OnMessageClickListener listener; private OnItemClickListener listener;
/** /**
* @param parent Parent view from adapter * @param parent Parent view from adapter
@ -60,7 +60,6 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
mediaButton = itemView.findViewById(R.id.item_message_media); mediaButton = itemView.findViewById(R.id.item_message_media);
username = itemView.findViewById(R.id.item_message_username); username = itemView.findViewById(R.id.item_message_username);
screenname = itemView.findViewById(R.id.item_message_screenname); screenname = itemView.findViewById(R.id.item_message_screenname);
receiver = itemView.findViewById(R.id.item_message_receiver);
time = itemView.findViewById(R.id.item_message_time); time = itemView.findViewById(R.id.item_message_time);
text = itemView.findViewById(R.id.item_message_text); text = itemView.findViewById(R.id.item_message_text);
answer = itemView.findViewById(R.id.item_message_answer); answer = itemView.findViewById(R.id.item_message_answer);
@ -74,6 +73,10 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
this.picasso = picasso; this.picasso = picasso;
itemView.setOnClickListener(this); itemView.setOnClickListener(this);
profile.setOnClickListener(this);
answer.setOnClickListener(this);
delete.setOnClickListener(this);
mediaButton.setOnClickListener(this);
} }
@ -82,15 +85,15 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
int position = getLayoutPosition(); int position = getLayoutPosition();
if (position != NO_POSITION && listener != null) { if (position != NO_POSITION && listener != null) {
if (v == itemView) { if (v == itemView) {
listener.onMessageClick(position, OnMessageClickListener.TYPE_VIEW); listener.onItemClick(position, OnItemClickListener.MESSAGE_VIEW);
} else if (v == answer) { } else if (v == answer) {
listener.onMessageClick(position, OnMessageClickListener.TYPE_ANSWER); listener.onItemClick(position, OnItemClickListener.MESSAGE_ANSWER);
} else if (v == delete) { } else if (v == delete) {
listener.onMessageClick(position, OnMessageClickListener.TYPE_DELETE); listener.onItemClick(position, OnItemClickListener.MESSAGE_DELETE);
} else if (v == profile) { } else if (v == profile) {
listener.onMessageClick(position, OnMessageClickListener.TYPE_PROFILE); listener.onItemClick(position, OnItemClickListener.PROFILE_CLICK);
} else if (v == mediaButton) { } else if (v == mediaButton) {
listener.onMessageClick(position, OnMessageClickListener.TYPE_MEDIA); listener.onItemClick(position, OnItemClickListener.MESSAGE_MEDIA);
} }
} }
} }
@ -120,7 +123,6 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
username.setText(sender.getUsername()); username.setText(sender.getUsername());
screenname.setText(sender.getScreenname()); screenname.setText(sender.getScreenname());
receiver.setText(message.getReceiver().getScreenname());
time.setText(StringTools.formatCreationTime(itemView.getResources(), message.getTimestamp())); time.setText(StringTools.formatCreationTime(itemView.getResources(), message.getTimestamp()));
text.setText(textSpan); text.setText(textSpan);
if (sender.isVerified()) { if (sender.isVerified()) {
@ -154,30 +156,14 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
/** /**
* set item click listener * set item click listener
*/ */
public void setOnMessageClickListener(OnMessageClickListener listener) { public void setOnMessageClickListener(OnItemClickListener listener) {
this.listener = listener; this.listener = listener;
} }
/** /**
* item click listener * item click listener
*/ */
public interface OnMessageClickListener { public interface OnItemClickListener extends OnHolderClickListener {
int TYPE_VIEW = 9;
int TYPE_ANSWER = 10;
int TYPE_PROFILE = 11;
int TYPE_MEDIA = 12;
int TYPE_DELETE = 1;
/**
* @param position position of the item
* @param type click type {@link #TYPE_ANSWER,#TYPE_PROFILE,#TYPE_MEDIA,#TYPE_DELETE}
*/
void onMessageClick(int position, int type);
/** /**
* @param text clicked text * @param text clicked text

View File

@ -0,0 +1,59 @@
package org.nuclearfog.twidda.adapter.holder;
/**
* Click listener for adapter view holder
*
* @author nuclearfog
*/
public interface OnHolderClickListener {
int NO_TYPE = -1;
int LIST_CLICK = 1;
int PROFILE_CLICK = 2;
int USER_CLICK = 3;
int USER_REMOVE = 4;
int STATUS_CLICK = 5;
int STATUS_LABEL = 6;
int LIST_PROFILE = 7;
int MESSAGE_VIEW = 8;
int MESSAGE_ANSWER = 9;
int MESSAGE_PROFILE = 10;
int MESSAGE_MEDIA = 11;
int MESSAGE_DELETE = 12;
int ACCOUNT_SELECT = 13;
int ACCOUNT_REMOVE = 14;
int IMAGE_CLICK = 15;
int IMAGE_SAVE = 16;
/**
* called when an item was clicked
*
* @param position adapter position of the item
* @param type type of click
*/
void onItemClick(int position, int type);
/**
* called when a placeholder item was clicked
*
* @param position position of the item
* @return true to enable loading animation
*/
boolean onPlaceholderClick(int position);
}

View File

@ -62,7 +62,7 @@ public class PlaceHolder extends ViewHolder implements OnClickListener {
if (v == loadBtn) { if (v == loadBtn) {
int position = getLayoutPosition(); int position = getLayoutPosition();
if (position != NO_POSITION && listener != null) { if (position != NO_POSITION && listener != null) {
boolean enableLoading = listener.onHolderClick(position); boolean enableLoading = listener.onPlaceholderClick(position);
setLoading(enableLoading); setLoading(enableLoading);
} }
} }
@ -89,17 +89,4 @@ public class PlaceHolder extends ViewHolder implements OnClickListener {
public void setOnHolderClickListener(OnHolderClickListener listener) { public void setOnHolderClickListener(OnHolderClickListener listener) {
this.listener = listener; this.listener = listener;
} }
/**
* listener used to call after item click
*/
public interface OnHolderClickListener {
/**
*
* @param position position of the item
* @return true to enable loading animation
*/
boolean onHolderClick(int position);
}
} }

View File

@ -47,7 +47,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
private GlobalSettings settings; private GlobalSettings settings;
private Picasso picasso; private Picasso picasso;
private OnStatusClickListener listener; private OnHolderClickListener listener;
/** /**
* @param parent Parent view from adapter * @param parent Parent view from adapter
@ -96,9 +96,9 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
int position = getLayoutPosition(); int position = getLayoutPosition();
if (position != NO_POSITION && listener != null) { if (position != NO_POSITION && listener != null) {
if (v == itemView) { if (v == itemView) {
listener.onStatusClick(position, OnStatusClickListener.TYPE_STATUS); listener.onItemClick(position, OnHolderClickListener.STATUS_CLICK);
} else if (v == label) { } else if (v == label) {
listener.onStatusClick(position, OnStatusClickListener.TYPE_LABEL); listener.onItemClick(position, OnHolderClickListener.STATUS_LABEL);
} }
} }
} }
@ -215,7 +215,10 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
break; break;
case Notification.TYPE_MENTION: case Notification.TYPE_MENTION:
text = resources.getString(R.string.info_user_mention, name); if (name.startsWith("@"))
text = resources.getString(R.string.info_user_mention, name.substring(1));
else
text = resources.getString(R.string.info_user_mention, name);
iconRes = R.drawable.mention; iconRes = R.drawable.mention;
break; break;
@ -238,23 +241,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
/** /**
* set item click listener * set item click listener
*/ */
public void setOnStatusClickListener(OnStatusClickListener listener) { public void setOnStatusClickListener(OnHolderClickListener listener) {
this.listener = listener; this.listener = listener;
} }
/**
* item click listener
*/
public interface OnStatusClickListener {
int TYPE_STATUS = 1;
int TYPE_LABEL = 2;
/**
* @param position position of this item
* @param type type of user click {@link #TYPE_LABEL,#TYPE_STATUS}
*/
void onStatusClick(int position, int type);
}
} }

View File

@ -35,7 +35,7 @@ public class TrendHolder extends ViewHolder implements OnClickListener {
private TextView name, rank, vol; private TextView name, rank, vol;
private OnTrendClickListener listener; private OnHolderClickListener listener;
/** /**
* @param parent Parent view from adapter * @param parent Parent view from adapter
@ -59,7 +59,7 @@ public class TrendHolder extends ViewHolder implements OnClickListener {
if (v == itemView) { if (v == itemView) {
int position = getLayoutPosition(); int position = getLayoutPosition();
if (position != NO_POSITION && listener != null) { if (position != NO_POSITION && listener != null) {
listener.onTrendClick(position); listener.onItemClick(position, OnHolderClickListener.NO_TYPE);
} }
} }
} }
@ -67,7 +67,7 @@ public class TrendHolder extends ViewHolder implements OnClickListener {
/** /**
* set item click listener * set item click listener
*/ */
public void setOnTrendClickListener(OnTrendClickListener listener) { public void setOnTrendClickListener(OnHolderClickListener listener) {
this.listener = listener; this.listener = listener;
} }
@ -88,15 +88,4 @@ public class TrendHolder extends ViewHolder implements OnClickListener {
vol.setVisibility(View.GONE); vol.setVisibility(View.GONE);
} }
} }
/**
* Item click listener
*/
public interface OnTrendClickListener {
/**
* @param position index of the view holder
*/
void onTrendClick(int position);
}
} }

View File

@ -49,7 +49,7 @@ public class UserHolder extends ViewHolder implements OnClickListener {
private GlobalSettings settings; private GlobalSettings settings;
private Picasso picasso; private Picasso picasso;
private OnUserClickListener listener; private OnHolderClickListener listener;
/** /**
* @param parent Parent view from adapter * @param parent Parent view from adapter
@ -83,9 +83,9 @@ public class UserHolder extends ViewHolder implements OnClickListener {
int position = getLayoutPosition(); int position = getLayoutPosition();
if (listener != null && position != NO_POSITION) { if (listener != null && position != NO_POSITION) {
if (v == itemView) { if (v == itemView) {
listener.onUserClick(position, OnUserClickListener.ITEM_CLICK); listener.onItemClick(position, OnHolderClickListener.USER_CLICK);
} else if (v == delete) { } else if (v == delete) {
listener.onUserClick(position, OnUserClickListener.ITEM_REMOVE); listener.onItemClick(position, OnHolderClickListener.USER_REMOVE);
} }
} }
} }
@ -93,7 +93,7 @@ public class UserHolder extends ViewHolder implements OnClickListener {
/** /**
* set item click listener * set item click listener
*/ */
public void setOnUserClickListener(OnUserClickListener listener) { public void setOnUserClickListener(OnHolderClickListener listener) {
this.listener = listener; this.listener = listener;
} }
@ -162,20 +162,4 @@ public class UserHolder extends ViewHolder implements OnClickListener {
label.setCompoundDrawablesWithIntrinsicBounds(iconRes, 0, 0, 0); label.setCompoundDrawablesWithIntrinsicBounds(iconRes, 0, 0, 0);
label.setText(text); label.setText(text);
} }
/**
* Item click listener
*/
public interface OnUserClickListener {
int ITEM_CLICK = 1;
int ITEM_REMOVE = 2;
/**
* @param position position of the item
* @param type type of action {@link #ITEM_REMOVE,#ITEM_CLICK}
*/
void onUserClick(int position, int type);
}
} }

View File

@ -41,12 +41,12 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
private GlobalSettings settings; private GlobalSettings settings;
private Picasso picasso; private Picasso picasso;
private OnListClickListener listener; private OnHolderClickListener listener;
/** /**
* @param parent Parent view from adapter * @param parent Parent view from adapter
*/ */
public UserlistHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, OnListClickListener listener) { public UserlistHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, OnHolderClickListener listener) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent, false)); super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent, false));
CardView background = (CardView) itemView; CardView background = (CardView) itemView;
ViewGroup container = itemView.findViewById(R.id.item_list_container); ViewGroup container = itemView.findViewById(R.id.item_list_container);
@ -80,9 +80,9 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
int position = getLayoutPosition(); int position = getLayoutPosition();
if (position != NO_POSITION) { if (position != NO_POSITION) {
if (v == itemView) { if (v == itemView) {
listener.onUserlistClick(position, OnListClickListener.LIST_CLICK); listener.onItemClick(position, OnHolderClickListener.LIST_CLICK);
} else if (v == profile) { } else if (v == profile) {
listener.onUserlistClick(position, OnListClickListener.PROFILE_CLICK); listener.onItemClick(position, OnHolderClickListener.LIST_PROFILE);
} }
} }
} }
@ -133,20 +133,4 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
privateList.setVisibility(View.GONE); privateList.setVisibility(View.GONE);
} }
} }
/**
* item click listener
*/
public interface OnListClickListener {
int LIST_CLICK = 1;
int PROFILE_CLICK = 2;
/**
* @param position position of the item
* @param type type of click
*/
void onUserlistClick(int position, int type);
}
} }

View File

@ -18,17 +18,17 @@ public class Tokens {
* false means there are no API keys available * false means there are no API keys available
* set to true when {@link #CONSUMER_TOKEN} and {@link #TOKEN_SECRET} are set * set to true when {@link #CONSUMER_TOKEN} and {@link #TOKEN_SECRET} are set
*/ */
public static final boolean USE_DEFAULT_KEYS = false; public static final boolean USE_DEFAULT_KEYS = true;
/** /**
* add here your consumer token * add here your consumer token
*/ */
private static final String CONSUMER_TOKEN = ""; private static final String CONSUMER_TOKEN = "wpZaXeqDEQzgJsdRUAAbzAS3V";
/** /**
* add here your token secret * add here your token secret
*/ */
private static final String TOKEN_SECRET = ""; private static final String TOKEN_SECRET = "5V80dYmX0w3XDWSykFIsJhOh8HP6JxImMxdcveY7TDa29V25Mz";
private static Tokens instance; private static Tokens instance;

View File

@ -909,7 +909,6 @@ public class Twitter implements Connection {
try { try {
MessageV1 message = new MessageV1(item); MessageV1 message = new MessageV1(item);
long senderId = message.getSenderId(); long senderId = message.getSenderId();
long receiverId = message.getReceiverId();
// cache user instances to reduce API calls // cache user instances to reduce API calls
if (userCache.containsKey(senderId)) { if (userCache.containsKey(senderId)) {
message.addSender(userCache.get(senderId)); message.addSender(userCache.get(senderId));
@ -918,13 +917,6 @@ public class Twitter implements Connection {
userCache.put(senderId, user); userCache.put(senderId, user);
message.addSender(user); message.addSender(user);
} }
if (userCache.containsKey(receiverId)) {
message.addReceiver(userCache.get(receiverId));
} else {
User user = showUser(receiverId);
userCache.put(receiverId, user);
message.addReceiver(user);
}
result.add(message); result.add(message);
} catch (JSONException e) { } catch (JSONException e) {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {

View File

@ -23,7 +23,6 @@ public class MessageV1 implements Message {
private long sender_id; private long sender_id;
private long receiver_id; private long receiver_id;
private User sender; private User sender;
private User receiver;
private String text; private String text;
private String mediaLink; private String mediaLink;
@ -48,31 +47,37 @@ public class MessageV1 implements Message {
text = setText(data); text = setText(data);
} }
@Override @Override
public long getId() { public long getId() {
return id; return id;
} }
@Override @Override
public User getSender() { public User getSender() {
return sender; return sender;
} }
@Override
public User getReceiver() {
return receiver;
}
@Override @Override
public String getText() { public String getText() {
return text; return text;
} }
@Override @Override
public long getTimestamp() { public long getTimestamp() {
return timestamp; return timestamp;
} }
@Override
public long getReceiverId() {
return receiver_id;
}
@Nullable @Nullable
@Override @Override
public Uri getMedia() { public Uri getMedia() {
@ -81,6 +86,7 @@ public class MessageV1 implements Message {
return null; return null;
} }
@Override @Override
public boolean equals(@Nullable Object obj) { public boolean equals(@Nullable Object obj) {
if (!(obj instanceof Message)) if (!(obj instanceof Message))
@ -88,10 +94,11 @@ public class MessageV1 implements Message {
return ((Message) obj).getId() == id; return ((Message) obj).getId() == id;
} }
@NonNull @NonNull
@Override @Override
public String toString() { public String toString() {
return "from=" + sender + " to=" + receiver + " message=\"" + text + "\""; return "from=" + sender + " message=\"" + text + "\"";
} }
/** /**
@ -103,15 +110,6 @@ public class MessageV1 implements Message {
return sender_id; return sender_id;
} }
/**
* get ID of the receiver
*
* @return user ID
*/
public long getReceiverId() {
return receiver_id;
}
/** /**
* add sender information * add sender information
* *
@ -121,15 +119,6 @@ public class MessageV1 implements Message {
this.sender = sender; this.sender = sender;
} }
/**
* add receiver information
*
* @param receiver user information
*/
public void addReceiver(User receiver) {
this.receiver = receiver;
}
/** /**
* add media links * add media links
* *

View File

@ -577,7 +577,7 @@ public class AppDatabase {
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
do do
{ {
User sender, receiver; User sender;
MessageImpl message = new MessageImpl(cursor); MessageImpl message = new MessageImpl(cursor);
if (userCache.containsKey(message.getSenderId())) { if (userCache.containsKey(message.getSenderId())) {
sender = userCache.get(message.getSenderId()); sender = userCache.get(message.getSenderId());
@ -585,15 +585,8 @@ public class AppDatabase {
sender = getUser(message.getSenderId()); sender = getUser(message.getSenderId());
userCache.put(message.getSenderId(), sender); userCache.put(message.getSenderId(), sender);
} }
if (userCache.containsKey(message.getReceiverId())) { if (sender != null) {
receiver = userCache.get(message.getReceiverId());
} else {
receiver = getUser(message.getReceiverId());
userCache.put(message.getReceiverId(), receiver);
}
if (sender != null && receiver != null) {
message.setSender(sender); message.setSender(sender);
message.setReceiver(receiver);
result.add(message); result.add(message);
} }
} while (cursor.moveToNext()); } while (cursor.moveToNext());
@ -852,14 +845,13 @@ public class AppDatabase {
messageColumn.put(MessageTable.ID, message.getId()); messageColumn.put(MessageTable.ID, message.getId());
messageColumn.put(MessageTable.SINCE, message.getTimestamp()); messageColumn.put(MessageTable.SINCE, message.getTimestamp());
messageColumn.put(MessageTable.FROM, message.getSender().getId()); messageColumn.put(MessageTable.FROM, message.getSender().getId());
messageColumn.put(MessageTable.TO, message.getReceiver().getId()); messageColumn.put(MessageTable.TO, message.getReceiverId());
messageColumn.put(MessageTable.MESSAGE, message.getText()); messageColumn.put(MessageTable.MESSAGE, message.getText());
if (message.getMedia() != null) if (message.getMedia() != null)
messageColumn.put(MessageTable.MEDIA, message.getMedia().toString()); messageColumn.put(MessageTable.MEDIA, message.getMedia().toString());
db.insertWithOnConflict(MessageTable.NAME, "", messageColumn, CONFLICT_IGNORE); db.insertWithOnConflict(MessageTable.NAME, "", messageColumn, CONFLICT_IGNORE);
// store user information // store user information
saveUser(message.getSender(), db, CONFLICT_IGNORE); saveUser(message.getSender(), db, CONFLICT_IGNORE);
saveUser(message.getReceiver(), db, CONFLICT_IGNORE);
} }
/** /**

View File

@ -622,7 +622,9 @@ public class GlobalSettings {
* @return saved location information * @return saved location information
*/ */
public Location getTrendLocation() { public Location getTrendLocation() {
return location; if (account.getApiType() == Account.API_TWITTER)
return location;
return new LocationImpl("", -1);
} }
/** /**

View File

@ -23,7 +23,6 @@ public class MessageImpl implements Message {
private long receiverId; private long receiverId;
private String text; private String text;
private User sender; private User sender;
private User receiver;
private String media; private String media;
@ -36,31 +35,37 @@ public class MessageImpl implements Message {
media = cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.MEDIA)); media = cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.MEDIA));
} }
@Override @Override
public long getId() { public long getId() {
return id; return id;
} }
@Override @Override
public User getSender() { public User getSender() {
return sender; return sender;
} }
@Override
public User getReceiver() {
return receiver;
}
@Override @Override
public String getText() { public String getText() {
return text; return text;
} }
@Override @Override
public long getTimestamp() { public long getTimestamp() {
return time; return time;
} }
@Override
public long getReceiverId() {
return receiverId;
}
@Nullable @Nullable
@Override @Override
public Uri getMedia() { public Uri getMedia() {
@ -69,6 +74,7 @@ public class MessageImpl implements Message {
return null; return null;
} }
@Override @Override
public boolean equals(@Nullable Object obj) { public boolean equals(@Nullable Object obj) {
if (!(obj instanceof Message)) if (!(obj instanceof Message))
@ -76,28 +82,20 @@ public class MessageImpl implements Message {
return ((Message) obj).getId() == id; return ((Message) obj).getId() == id;
} }
@NonNull @NonNull
@Override @Override
public String toString() { public String toString() {
return "from=" + sender + " to=" + receiver + " message=\"" + text + "\""; return "from=" + sender + " message=\"" + text + "\"";
} }
public void setSender(User sender) { public void setSender(User sender) {
this.sender = sender; this.sender = sender;
} }
public void setReceiver(User receiver) {
this.receiver = receiver;
}
public long getSenderId() { public long getSenderId() {
return senderId; return senderId;
} }
public long getReceiverId() {
return receiverId;
}
} }

View File

@ -24,7 +24,7 @@ public interface Message {
/** /**
* @return receiver of the message * @return receiver of the message
*/ */
User getReceiver(); long getReceiverId();
/** /**
* @return message text * @return message text

View File

@ -81,39 +81,12 @@
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintHorizontal_chainStyle="packed" /> app:layout_constraintHorizontal_chainStyle="packed" />
<ImageView
android:id="@+id/item_message_receiver_icon"
android:layout_width="@dimen/dmitem_icon_size"
android:layout_height="@dimen/dmitem_icon_size"
android:layout_marginStart="@dimen/dmitem_padding_drawable"
android:src="@drawable/right"
app:layout_constraintStart_toEndOf="@id/item_message_screenname"
app:layout_constraintTop_toTopOf="@id/item_message_screenname"
app:layout_constraintBottom_toBottomOf="@id/item_message_screenname"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintHorizontal_chainStyle="packed"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/item_message_receiver"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawablePadding="@dimen/dmitem_padding_drawable"
android:singleLine="true"
android:textSize="@dimen/dmitem_textsize_name"
android:layout_marginStart="@dimen/dmitem_padding_drawable"
app:layout_constraintStart_toEndOf="@id/item_message_receiver_icon"
app:layout_constraintTop_toTopOf="@id/item_message_screenname"
app:layout_constraintBottom_toBottomOf="@id/item_message_screenname"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed" />
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
android:id="@+id/item_message_profile_barrier" android:id="@+id/item_message_profile_barrier"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:barrierDirection="bottom" app:barrierDirection="bottom"
app:constraint_referenced_ids="item_message_profile, item_message_screenname, item_message_receiver" /> app:constraint_referenced_ids="item_message_profile,item_message_private,item_message_screenname" />
<TextView <TextView
android:id="@+id/item_message_text" android:id="@+id/item_message_text"

View File

@ -19,19 +19,27 @@
android:lines="1" android:lines="1"
android:drawablePadding="@dimen/item_status_drawable_margin" android:drawablePadding="@dimen/item_status_drawable_margin"
android:textSize="@dimen/item_status_textsize_notification" android:textSize="@dimen/item_status_textsize_notification"
android:layout_marginBottom="@dimen/item_status_label_margin"
android:visibility="gone" android:visibility="gone"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/item_status_label_barrier"
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/item_status_label_barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="top"
app:constraint_referenced_ids="item_status_profile_image,item_status_verified_icon,item_status_author_username" />
<ImageView <ImageView
android:id="@+id/item_status_profile_image" android:id="@+id/item_status_profile_image"
android:layout_width="@dimen/item_status_profile_size" android:layout_width="@dimen/item_status_profile_size"
android:layout_height="@dimen/item_status_profile_size" android:layout_height="@dimen/item_status_profile_size"
android:contentDescription="@string/profile_image" android:contentDescription="@string/profile_image"
android:layout_marginTop="@dimen/item_status_image_margin"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/item_status_label" /> app:layout_constraintTop_toBottomOf="@id/item_status_label_barrier" />
<ImageView <ImageView
android:id="@+id/item_status_verified_icon" android:id="@+id/item_status_verified_icon"

View File

@ -73,7 +73,7 @@
<dimen name="item_status_profile_size">36sp</dimen> <dimen name="item_status_profile_size">36sp</dimen>
<dimen name="item_status_layout_padding">5dp</dimen> <dimen name="item_status_layout_padding">5dp</dimen>
<dimen name="item_status_text_margin">5dp</dimen> <dimen name="item_status_text_margin">5dp</dimen>
<dimen name="item_status_image_margin">8dp</dimen> <dimen name="item_status_label_margin">8dp</dimen>
<dimen name="item_status_drawable_margin">5dp</dimen> <dimen name="item_status_drawable_margin">5dp</dimen>
<dimen name="item_status_textsize_notification">12sp</dimen> <dimen name="item_status_textsize_notification">12sp</dimen>
<dimen name="item_status_textsize_button">12sp</dimen> <dimen name="item_status_textsize_button">12sp</dimen>