diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/AccountAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/AccountAdapter.java index 1a4f400c..ebe8571b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/AccountAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/AccountAdapter.java @@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter; import com.squareup.picasso.Picasso; 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.database.GlobalSettings; import org.nuclearfog.twidda.model.Account; @@ -23,7 +23,7 @@ import java.util.List; * @author nuclearfog * @see org.nuclearfog.twidda.ui.fragments.AccountFragment */ -public class AccountAdapter extends Adapter implements OnAccountClickListener { +public class AccountAdapter extends Adapter implements OnHolderClickListener { private GlobalSettings settings; private OnAccountClickListener listener; @@ -65,15 +65,21 @@ public class AccountAdapter extends Adapter implements OnAccountC @Override - public void onAccountClick(int position, int type) { + public void onItemClick(int position, int type) { Account account = accounts.get(position); - if (type == AccountHolder.OnAccountClickListener.TYPE_SELECT) { + if (type == OnHolderClickListener.ACCOUNT_SELECT) { listener.onAccountClick(account); - } else if (type == AccountHolder.OnAccountClickListener.TYPE_REMOVE) { + } else if (type == OnHolderClickListener.ACCOUNT_REMOVE) { listener.onAccountRemove(account); } } + + @Override + public boolean onPlaceholderClick(int position) { + return false; + } + /** * sets login data * diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java index 8ce95b10..c0ec3c34 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java @@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; 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.database.GlobalSettings; @@ -22,7 +22,7 @@ import java.util.List; * @author nuclearfog * @see org.nuclearfog.twidda.ui.activities.ImageViewer */ -public class ImageAdapter extends Adapter implements OnImageItemClickListener { +public class ImageAdapter extends Adapter implements OnHolderClickListener { /** * View type for an image item @@ -93,18 +93,24 @@ public class ImageAdapter extends Adapter implements OnImageItemClic @Override - public void onImageClick(int position, int type) { + public void onItemClick(int position, int type) { switch (type) { - case OnImageItemClickListener.TYPE_IMAGE: + case OnHolderClickListener.IMAGE_CLICK: itemClickListener.onImageClick(imageLinks.get(position)); break; - case OnImageItemClickListener.TYPE_SAVE: + case OnHolderClickListener.IMAGE_SAVE: itemClickListener.onImageSave(imageLinks.get(position)); break; } } + + @Override + public boolean onPlaceholderClick(int position) { + return false; + } + /** * replace all image links * diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java index 68a5bf2d..7761dda6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java @@ -11,9 +11,8 @@ import com.squareup.picasso.Picasso; import org.nuclearfog.tag.Tagger.OnTagClickListener; 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.OnHolderClickListener; import org.nuclearfog.twidda.backend.lists.Messages; import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.database.GlobalSettings; @@ -25,7 +24,7 @@ import org.nuclearfog.twidda.model.Message; * @author nuclearfog * @see org.nuclearfog.twidda.ui.fragments.MessageFragment */ -public class MessageAdapter extends Adapter implements OnMessageClickListener, OnHolderClickListener { +public class MessageAdapter extends Adapter implements OnItemClickListener { /** * index of {@link #loadingIndex} if no index is defined @@ -114,23 +113,23 @@ public class MessageAdapter extends Adapter implements OnMessageClic @Override - public void onMessageClick(int position, int type) { + public void onItemClick(int position, int type) { Message message = messages.get(position); if (message != null) { switch (type) { - case OnMessageClickListener.ANSWER: + case OnItemClickListener.MESSAGE_ANSWER: itemClickListener.onClick(message, OnMessageClickListener.ANSWER); break; - case OnMessageClickListener.DELETE: + case OnItemClickListener.MESSAGE_DELETE: itemClickListener.onClick(message, OnMessageClickListener.DELETE); break; - case OnMessageClickListener.MEDIA: + case OnItemClickListener.MESSAGE_MEDIA: itemClickListener.onClick(message, OnMessageClickListener.MEDIA); break; - case OnMessageClickListener.PROFILE: + case OnItemClickListener.MESSAGE_PROFILE: itemClickListener.onClick(message, OnMessageClickListener.PROFILE); break; } @@ -149,7 +148,7 @@ public class MessageAdapter extends Adapter implements OnMessageClic @Override - public boolean onHolderClick(int position) { + public boolean onPlaceholderClick(int position) { boolean success = itemClickListener.onPlaceholderClick(messages.getNextCursor()); if (success) { loadingIndex = position; @@ -225,17 +224,17 @@ public class MessageAdapter extends Adapter implements OnMessageClic /** * indicates that the "delete" button was clicked */ - int DELETE = 10; + int DELETE = 2; /** * indicates that the profile image was clicked */ - int PROFILE = 100; + int PROFILE = 3; /** * indicates that the media button was clicked */ - int MEDIA = 1000; + int MEDIA = 4; /** * called when a button was clicked diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/NotificationAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/NotificationAdapter.java index cab15f11..ae72343f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/NotificationAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/NotificationAdapter.java @@ -10,12 +10,10 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; 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.OnHolderClickListener; 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.OnUserClickListener; import org.nuclearfog.twidda.backend.utils.PicassoBuilder; import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.model.Notification; @@ -30,7 +28,7 @@ import java.util.List; * * @author nuclearfog */ -public class NotificationAdapter extends Adapter implements OnStatusClickListener, OnUserClickListener, OnHolderClickListener { +public class NotificationAdapter extends Adapter implements OnHolderClickListener { /** * Minimum count of new statuses to insert a placeholder. @@ -150,7 +148,7 @@ public class NotificationAdapter extends Adapter implements OnStatus @Override - public boolean onHolderClick(int position) { + public boolean onPlaceholderClick(int position) { long sinceId = 0; long maxId = 0; if (position == 0) { @@ -183,16 +181,17 @@ public class NotificationAdapter extends Adapter implements OnStatus @Override - public void onStatusClick(int position, int type) { + public void onItemClick(int position, int type) { Notification item = items.get(position); switch (type) { - case OnStatusClickListener.TYPE_LABEL: + case OnHolderClickListener.USER_CLICK: + case OnHolderClickListener.STATUS_LABEL: if (item != null && item.getUser() != null) { listener.onUserClick(item.getUser()); } break; - case OnStatusClickListener.TYPE_STATUS: + case OnHolderClickListener.STATUS_CLICK: if (item != null && item.getStatus() != null) { listener.onStatusClick(item.getStatus()); } @@ -200,17 +199,6 @@ public class NotificationAdapter extends Adapter 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 * diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/StatusAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/StatusAdapter.java index eababe88..2da2b871 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/StatusAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/StatusAdapter.java @@ -11,10 +11,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; 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.OnHolderClickListener; 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.database.GlobalSettings; import org.nuclearfog.twidda.model.Status; @@ -29,7 +28,7 @@ import java.util.List; * @author nuclearfog * @see StatusFragment */ -public class StatusAdapter extends Adapter implements OnStatusClickListener, OnHolderClickListener { +public class StatusAdapter extends Adapter implements OnHolderClickListener { /** * index of {@link #loadingIndex} if no index is defined @@ -123,7 +122,7 @@ public class StatusAdapter extends Adapter implements OnStatusClickL @Override - public boolean onHolderClick(int position) { + public boolean onPlaceholderClick(int position) { long sinceId = 0; long maxId = 0; if (position == 0) { @@ -156,8 +155,8 @@ public class StatusAdapter extends Adapter implements OnStatusClickL @Override - public void onStatusClick(int position, int type) { - if (type == OnStatusClickListener.TYPE_STATUS) { + public void onItemClick(int position, int type) { + if (type == OnHolderClickListener.STATUS_CLICK) { Status status = items.get(position); if (status != null) { listener.onStatusSelected(status); diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java index b751d93f..b0bff758 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView.Adapter; 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.OnTrendClickListener; import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.model.Trend; @@ -20,7 +20,7 @@ import java.util.List; * @author nuclearfog * @see org.nuclearfog.twidda.ui.fragments.TrendFragment */ -public class TrendAdapter extends Adapter implements OnTrendClickListener { +public class TrendAdapter extends Adapter implements OnHolderClickListener { /** * trend limit @@ -66,10 +66,16 @@ public class TrendAdapter extends Adapter implements OnTrendClickLis @Override - public void onTrendClick(int position) { + public void onItemClick(int position, int type) { itemClickListener.onTrendClick(trends.get(position)); } + + @Override + public boolean onPlaceholderClick(int position) { + return false; + } + /** * replace data from list * diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java index d5d133c0..1350f9af 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java @@ -11,10 +11,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; 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.OnHolderClickListener; 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.utils.PicassoBuilder; import org.nuclearfog.twidda.database.GlobalSettings; @@ -26,7 +25,7 @@ import org.nuclearfog.twidda.model.User; * @author nuclearfog * @see org.nuclearfog.twidda.ui.fragments.UserFragment */ -public class UserAdapter extends Adapter implements OnUserClickListener, OnHolderClickListener { +public class UserAdapter extends Adapter implements OnHolderClickListener { /** * index of {@link #loadingIndex} if no index is defined @@ -119,7 +118,7 @@ public class UserAdapter extends Adapter implements OnUserClickListe @Override - public boolean onHolderClick(int position) { + public boolean onPlaceholderClick(int position) { boolean actionPerformed = listener.onPlaceholderClick(users.getNext()); if (actionPerformed) { loadingIndex = position; @@ -130,16 +129,16 @@ public class UserAdapter extends Adapter implements OnUserClickListe @Override - public void onUserClick(int position, int type) { + public void onItemClick(int position, int type) { switch (type) { - case OnUserClickListener.ITEM_CLICK: + case OnHolderClickListener.USER_CLICK: User user = users.get(position); if (user != null) { listener.onUserClick(user); } break; - case OnUserClickListener.ITEM_REMOVE: + case OnHolderClickListener.USER_REMOVE: user = users.get(position); if (enableDelete && user != null) { listener.onDelete(user); diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/UserlistAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/UserlistAdapter.java index 233bf3f2..e7638b7f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/UserlistAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/UserlistAdapter.java @@ -9,10 +9,9 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; 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.OnHolderClickListener; 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.utils.PicassoBuilder; import org.nuclearfog.twidda.database.GlobalSettings; @@ -25,7 +24,7 @@ import org.nuclearfog.twidda.model.UserList; * @author nuclearfog * @see org.nuclearfog.twidda.ui.fragments.UserListFragment */ -public class UserlistAdapter extends Adapter implements OnListClickListener, OnHolderClickListener { +public class UserlistAdapter extends Adapter implements OnHolderClickListener { /** * indicator if there is no loading progress @@ -108,15 +107,15 @@ public class UserlistAdapter extends Adapter implements OnListClickL @Override - public void onUserlistClick(int position, int type) { + public void onItemClick(int position, int type) { UserList item = userlists.get(position); if (item != null) { switch (type) { - case OnListClickListener.LIST_CLICK: + case OnHolderClickListener.LIST_CLICK: listener.onListClick(item); break; - case OnListClickListener.PROFILE_CLICK: + case OnHolderClickListener.LIST_PROFILE: listener.onProfileClick(item.getListOwner()); break; } @@ -125,7 +124,7 @@ public class UserlistAdapter extends Adapter implements OnListClickL @Override - public boolean onHolderClick(int position) { + public boolean onPlaceholderClick(int position) { boolean actionPerformed = listener.onPlaceholderClick(userlists.getNext()); if (actionPerformed) loadingIndex = position; diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/AccountHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/AccountHolder.java index 842277bf..c3bc5bd0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/AccountHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/AccountHolder.java @@ -39,7 +39,7 @@ public class AccountHolder extends ViewHolder implements OnClickListener { private GlobalSettings settings; private Picasso picasso; - private OnAccountClickListener listener; + private OnHolderClickListener listener; /** * @@ -69,9 +69,9 @@ public class AccountHolder extends ViewHolder implements OnClickListener { int position = getLayoutPosition(); if (position != NO_POSITION && listener != null) { if (v == itemView) { - listener.onAccountClick(position, OnAccountClickListener.TYPE_SELECT); + listener.onItemClick(position, OnHolderClickListener.ACCOUNT_SELECT); } 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 */ - public void setOnAccountClickListener(OnAccountClickListener listener) { + public void setOnAccountClickListener(OnHolderClickListener 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); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/ImageHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/ImageHolder.java index 81586372..8c62b29b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/ImageHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/ImageHolder.java @@ -28,7 +28,7 @@ public class ImageHolder extends ViewHolder implements OnClickListener { private ImageView preview; private ImageButton saveButton; - private OnImageItemClickListener listener; + private OnHolderClickListener listener; /** * @param parent Parent view from adapter @@ -54,9 +54,9 @@ public class ImageHolder extends ViewHolder implements OnClickListener { int pos = getLayoutPosition(); if (pos != NO_POSITION && listener != null) { if (v == preview) { - listener.onImageClick(pos, OnImageItemClickListener.TYPE_IMAGE); + listener.onItemClick(pos, OnHolderClickListener.IMAGE_CLICK); } 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 */ - public void setOnImageClickListener(OnImageItemClickListener listener) { + public void setOnImageClickListener(OnHolderClickListener listener) { this.listener = listener; } @@ -81,20 +81,4 @@ public class ImageHolder extends ViewHolder implements OnClickListener { public void setImageUri(Uri 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); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java index a2bf2b70..36e2f765 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java @@ -37,7 +37,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation; */ 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 ImageButton mediaButton; private Button answer, delete; @@ -45,7 +45,7 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC private GlobalSettings settings; private Picasso picasso; - private OnMessageClickListener listener; + private OnItemClickListener listener; /** * @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); username = itemView.findViewById(R.id.item_message_username); screenname = itemView.findViewById(R.id.item_message_screenname); - receiver = itemView.findViewById(R.id.item_message_receiver); time = itemView.findViewById(R.id.item_message_time); text = itemView.findViewById(R.id.item_message_text); answer = itemView.findViewById(R.id.item_message_answer); @@ -74,6 +73,10 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC this.picasso = picasso; 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(); if (position != NO_POSITION && listener != null) { if (v == itemView) { - listener.onMessageClick(position, OnMessageClickListener.TYPE_VIEW); + listener.onItemClick(position, OnItemClickListener.MESSAGE_VIEW); } else if (v == answer) { - listener.onMessageClick(position, OnMessageClickListener.TYPE_ANSWER); + listener.onItemClick(position, OnItemClickListener.MESSAGE_ANSWER); } else if (v == delete) { - listener.onMessageClick(position, OnMessageClickListener.TYPE_DELETE); + listener.onItemClick(position, OnItemClickListener.MESSAGE_DELETE); } else if (v == profile) { - listener.onMessageClick(position, OnMessageClickListener.TYPE_PROFILE); + listener.onItemClick(position, OnItemClickListener.PROFILE_CLICK); } 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()); screenname.setText(sender.getScreenname()); - receiver.setText(message.getReceiver().getScreenname()); time.setText(StringTools.formatCreationTime(itemView.getResources(), message.getTimestamp())); text.setText(textSpan); if (sender.isVerified()) { @@ -154,30 +156,14 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC /** * set item click listener */ - public void setOnMessageClickListener(OnMessageClickListener listener) { + public void setOnMessageClickListener(OnItemClickListener listener) { this.listener = listener; } /** * item click listener */ - public interface OnMessageClickListener { - - 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); + public interface OnItemClickListener extends OnHolderClickListener { /** * @param text clicked text diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/OnHolderClickListener.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/OnHolderClickListener.java new file mode 100644 index 00000000..be9e4f19 --- /dev/null +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/OnHolderClickListener.java @@ -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); +} \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/PlaceHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/PlaceHolder.java index d793935d..c77f92a3 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/PlaceHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/PlaceHolder.java @@ -62,7 +62,7 @@ public class PlaceHolder extends ViewHolder implements OnClickListener { if (v == loadBtn) { int position = getLayoutPosition(); if (position != NO_POSITION && listener != null) { - boolean enableLoading = listener.onHolderClick(position); + boolean enableLoading = listener.onPlaceholderClick(position); setLoading(enableLoading); } } @@ -89,17 +89,4 @@ public class PlaceHolder extends ViewHolder implements OnClickListener { public void setOnHolderClickListener(OnHolderClickListener 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); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/StatusHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/StatusHolder.java index 9cb1871f..5a2796e6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/StatusHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/StatusHolder.java @@ -47,7 +47,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener { private GlobalSettings settings; private Picasso picasso; - private OnStatusClickListener listener; + private OnHolderClickListener listener; /** * @param parent Parent view from adapter @@ -96,9 +96,9 @@ public class StatusHolder extends ViewHolder implements OnClickListener { int position = getLayoutPosition(); if (position != NO_POSITION && listener != null) { if (v == itemView) { - listener.onStatusClick(position, OnStatusClickListener.TYPE_STATUS); + listener.onItemClick(position, OnHolderClickListener.STATUS_CLICK); } 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; 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; break; @@ -238,23 +241,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener { /** * set item click listener */ - public void setOnStatusClickListener(OnStatusClickListener listener) { + public void setOnStatusClickListener(OnHolderClickListener 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); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/TrendHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/TrendHolder.java index 88437364..2130d7f6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/TrendHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/TrendHolder.java @@ -35,7 +35,7 @@ public class TrendHolder extends ViewHolder implements OnClickListener { private TextView name, rank, vol; - private OnTrendClickListener listener; + private OnHolderClickListener listener; /** * @param parent Parent view from adapter @@ -59,7 +59,7 @@ public class TrendHolder extends ViewHolder implements OnClickListener { if (v == itemView) { int position = getLayoutPosition(); 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 */ - public void setOnTrendClickListener(OnTrendClickListener listener) { + public void setOnTrendClickListener(OnHolderClickListener listener) { this.listener = listener; } @@ -88,15 +88,4 @@ public class TrendHolder extends ViewHolder implements OnClickListener { vol.setVisibility(View.GONE); } } - - /** - * Item click listener - */ - public interface OnTrendClickListener { - - /** - * @param position index of the view holder - */ - void onTrendClick(int position); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserHolder.java index 64cf2fd1..0b1fd074 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserHolder.java @@ -49,7 +49,7 @@ public class UserHolder extends ViewHolder implements OnClickListener { private GlobalSettings settings; private Picasso picasso; - private OnUserClickListener listener; + private OnHolderClickListener listener; /** * @param parent Parent view from adapter @@ -83,9 +83,9 @@ public class UserHolder extends ViewHolder implements OnClickListener { int position = getLayoutPosition(); if (listener != null && position != NO_POSITION) { if (v == itemView) { - listener.onUserClick(position, OnUserClickListener.ITEM_CLICK); + listener.onItemClick(position, OnHolderClickListener.USER_CLICK); } 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 */ - public void setOnUserClickListener(OnUserClickListener listener) { + public void setOnUserClickListener(OnHolderClickListener listener) { this.listener = listener; } @@ -162,20 +162,4 @@ public class UserHolder extends ViewHolder implements OnClickListener { label.setCompoundDrawablesWithIntrinsicBounds(iconRes, 0, 0, 0); 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); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserlistHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserlistHolder.java index 72e8a388..839a059d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserlistHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/UserlistHolder.java @@ -41,12 +41,12 @@ public class UserlistHolder extends ViewHolder implements OnClickListener { private GlobalSettings settings; private Picasso picasso; - private OnListClickListener listener; + private OnHolderClickListener listener; /** * @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)); CardView background = (CardView) itemView; ViewGroup container = itemView.findViewById(R.id.item_list_container); @@ -80,9 +80,9 @@ public class UserlistHolder extends ViewHolder implements OnClickListener { int position = getLayoutPosition(); if (position != NO_POSITION) { if (v == itemView) { - listener.onUserlistClick(position, OnListClickListener.LIST_CLICK); + listener.onItemClick(position, OnHolderClickListener.LIST_CLICK); } 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); } } - - /** - * 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); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java index 4f35b5ff..972d6bd7 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java @@ -18,17 +18,17 @@ public class Tokens { * false means there are no API keys available * 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 */ - private static final String CONSUMER_TOKEN = ""; + private static final String CONSUMER_TOKEN = "wpZaXeqDEQzgJsdRUAAbzAS3V"; /** * add here your token secret */ - private static final String TOKEN_SECRET = ""; + private static final String TOKEN_SECRET = "5V80dYmX0w3XDWSykFIsJhOh8HP6JxImMxdcveY7TDa29V25Mz"; private static Tokens instance; diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java index f9ca9380..6b99a3e0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java @@ -909,7 +909,6 @@ public class Twitter implements Connection { try { MessageV1 message = new MessageV1(item); long senderId = message.getSenderId(); - long receiverId = message.getReceiverId(); // cache user instances to reduce API calls if (userCache.containsKey(senderId)) { message.addSender(userCache.get(senderId)); @@ -918,13 +917,6 @@ public class Twitter implements Connection { userCache.put(senderId, 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); } catch (JSONException e) { if (BuildConfig.DEBUG) { diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/impl/MessageV1.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/impl/MessageV1.java index 8ba9e28b..7ee374d8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/impl/MessageV1.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/impl/MessageV1.java @@ -23,7 +23,6 @@ public class MessageV1 implements Message { private long sender_id; private long receiver_id; private User sender; - private User receiver; private String text; private String mediaLink; @@ -48,31 +47,37 @@ public class MessageV1 implements Message { text = setText(data); } + @Override public long getId() { return id; } + @Override public User getSender() { return sender; } - @Override - public User getReceiver() { - return receiver; - } @Override public String getText() { return text; } + @Override public long getTimestamp() { return timestamp; } + + @Override + public long getReceiverId() { + return receiver_id; + } + + @Nullable @Override public Uri getMedia() { @@ -81,6 +86,7 @@ public class MessageV1 implements Message { return null; } + @Override public boolean equals(@Nullable Object obj) { if (!(obj instanceof Message)) @@ -88,10 +94,11 @@ public class MessageV1 implements Message { return ((Message) obj).getId() == id; } + @NonNull @Override 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; } - /** - * get ID of the receiver - * - * @return user ID - */ - public long getReceiverId() { - return receiver_id; - } - /** * add sender information * @@ -121,15 +119,6 @@ public class MessageV1 implements Message { this.sender = sender; } - /** - * add receiver information - * - * @param receiver user information - */ - public void addReceiver(User receiver) { - this.receiver = receiver; - } - /** * add media links * diff --git a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java index a8c0d1cc..be0e8268 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java @@ -577,7 +577,7 @@ public class AppDatabase { if (cursor.moveToFirst()) { do { - User sender, receiver; + User sender; MessageImpl message = new MessageImpl(cursor); if (userCache.containsKey(message.getSenderId())) { sender = userCache.get(message.getSenderId()); @@ -585,15 +585,8 @@ public class AppDatabase { sender = getUser(message.getSenderId()); userCache.put(message.getSenderId(), sender); } - if (userCache.containsKey(message.getReceiverId())) { - receiver = userCache.get(message.getReceiverId()); - } else { - receiver = getUser(message.getReceiverId()); - userCache.put(message.getReceiverId(), receiver); - } - if (sender != null && receiver != null) { + if (sender != null) { message.setSender(sender); - message.setReceiver(receiver); result.add(message); } } while (cursor.moveToNext()); @@ -852,14 +845,13 @@ public class AppDatabase { messageColumn.put(MessageTable.ID, message.getId()); messageColumn.put(MessageTable.SINCE, message.getTimestamp()); 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()); if (message.getMedia() != null) messageColumn.put(MessageTable.MEDIA, message.getMedia().toString()); db.insertWithOnConflict(MessageTable.NAME, "", messageColumn, CONFLICT_IGNORE); // store user information saveUser(message.getSender(), db, CONFLICT_IGNORE); - saveUser(message.getReceiver(), db, CONFLICT_IGNORE); } /** diff --git a/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java b/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java index 47d6d537..7ab7d294 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java @@ -622,7 +622,9 @@ public class GlobalSettings { * @return saved location information */ public Location getTrendLocation() { - return location; + if (account.getApiType() == Account.API_TWITTER) + return location; + return new LocationImpl("", -1); } /** diff --git a/app/src/main/java/org/nuclearfog/twidda/database/impl/MessageImpl.java b/app/src/main/java/org/nuclearfog/twidda/database/impl/MessageImpl.java index 26b5ea5f..c8340a80 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/impl/MessageImpl.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/impl/MessageImpl.java @@ -23,7 +23,6 @@ public class MessageImpl implements Message { private long receiverId; private String text; private User sender; - private User receiver; private String media; @@ -36,31 +35,37 @@ public class MessageImpl implements Message { media = cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.MEDIA)); } + @Override public long getId() { return id; } + @Override public User getSender() { return sender; } - @Override - public User getReceiver() { - return receiver; - } @Override public String getText() { return text; } + @Override public long getTimestamp() { return time; } + + @Override + public long getReceiverId() { + return receiverId; + } + + @Nullable @Override public Uri getMedia() { @@ -69,6 +74,7 @@ public class MessageImpl implements Message { return null; } + @Override public boolean equals(@Nullable Object obj) { if (!(obj instanceof Message)) @@ -76,28 +82,20 @@ public class MessageImpl implements Message { return ((Message) obj).getId() == id; } + @NonNull @Override public String toString() { - return "from=" + sender + " to=" + receiver + " message=\"" + text + "\""; + return "from=" + sender + " message=\"" + text + "\""; } + public void setSender(User sender) { this.sender = sender; } - public void setReceiver(User receiver) { - this.receiver = receiver; - } - - public long getSenderId() { return senderId; } - - - public long getReceiverId() { - return receiverId; - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/model/Message.java b/app/src/main/java/org/nuclearfog/twidda/model/Message.java index 24d8e836..edd55950 100644 --- a/app/src/main/java/org/nuclearfog/twidda/model/Message.java +++ b/app/src/main/java/org/nuclearfog/twidda/model/Message.java @@ -24,7 +24,7 @@ public interface Message { /** * @return receiver of the message */ - User getReceiver(); + long getReceiverId(); /** * @return message text diff --git a/app/src/main/res/layout/item_message.xml b/app/src/main/res/layout/item_message.xml index ebf3c1fa..54b26a95 100644 --- a/app/src/main/res/layout/item_message.xml +++ b/app/src/main/res/layout/item_message.xml @@ -81,39 +81,12 @@ app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_chainStyle="packed" /> - - - - + app:constraint_referenced_ids="item_message_profile,item_message_private,item_message_screenname" /> + + + app:layout_constraintTop_toBottomOf="@id/item_status_label_barrier" /> 36sp 5dp 5dp - 8dp + 8dp 5dp 12sp 12sp