bug fix, added reply count to status item, moved status bookmark option to menu

This commit is contained in:
nuclearfog 2023-03-05 19:18:00 +01:00
parent 413e5dca54
commit 3ddd0e92ed
No known key found for this signature in database
GPG Key ID: 03488A185C476379
9 changed files with 152 additions and 161 deletions

View File

@ -97,7 +97,7 @@ public class StatusLoader extends AsyncExecutor<StatusLoader.StatusParameter, St
db.saveBookmarkTimeline(statuses, request.id);
}
} else {
statuses = connection.getUserBookmarks(request.minId, request.maxId);
statuses = connection.getUserBookmarks(0L, request.maxId);
if (request.maxId == 0L) {
db.saveBookmarkTimeline(statuses, request.id);
position = CLEAR_LIST; // clear previous items

View File

@ -1,10 +1,5 @@
package org.nuclearfog.twidda.ui.activities;
import static android.view.View.GONE;
import static android.view.View.OnClickListener;
import static android.view.View.OnLongClickListener;
import static android.view.View.VISIBLE;
import static android.widget.Toast.LENGTH_SHORT;
import static org.nuclearfog.twidda.ui.activities.SearchActivity.KEY_SEARCH_QUERY;
import static org.nuclearfog.twidda.ui.activities.StatusEditor.KEY_STATUS_EDITOR_REPLYID;
import static org.nuclearfog.twidda.ui.activities.StatusEditor.KEY_STATUS_EDITOR_TEXT;
@ -29,6 +24,8 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
@ -40,7 +37,6 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.widget.NestedScrollView;
import androidx.core.widget.NestedScrollView.OnScrollChangeListener;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@ -95,8 +91,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
*
* @author nuclearfog
*/
public class StatusActivity extends AppCompatActivity implements OnClickListener, OnScrollChangeListener,
OnLongClickListener, OnTagClickListener, OnConfirmListener, OnCardClickListener {
public class StatusActivity extends AppCompatActivity implements OnClickListener, OnLongClickListener, OnTagClickListener, OnConfirmListener, OnCardClickListener {
/**
* Activity result code to update existing status information
@ -192,9 +187,9 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
private MetricsDialog metricsDialog;
private NestedScrollView container;
private ViewGroup root, header, body;
private ViewGroup root, body;
private TextView statusApi, createdAt, statusText, screenName, userName, locationName, sensitive_media;
private Button replyButton, repostButton, likeButton, replyName, locationButton, repostNameButton, bookmarkButton;
private Button replyButton, repostButton, likeButton, replyName, locationButton, repostNameButton;
private ImageView profileImage;
private RecyclerView cardList;
private Toolbar toolbar;
@ -217,14 +212,12 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
super.onCreate(b);
setContentView(R.layout.page_status);
root = findViewById(R.id.page_status_root);
header = findViewById(R.id.page_status_header);
body = findViewById(R.id.page_status_body);
container = findViewById(R.id.page_status_scroll);
toolbar = findViewById(R.id.page_status_toolbar);
replyButton = findViewById(R.id.page_status_reply);
repostButton = findViewById(R.id.page_status_repost);
likeButton = findViewById(R.id.page_status_favorite);
bookmarkButton = findViewById(R.id.page_status_bookmark);
userName = findViewById(R.id.page_status_username);
screenName = findViewById(R.id.page_status_screenname);
profileImage = findViewById(R.id.page_status_profile);
@ -289,7 +282,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
sensitive_media.setCompoundDrawablesWithIntrinsicBounds(R.drawable.sensitive, 0, 0, 0);
replyName.setCompoundDrawablesWithIntrinsicBounds(R.drawable.back, 0, 0, 0);
repostNameButton.setCompoundDrawablesWithIntrinsicBounds(R.drawable.repost, 0, 0, 0);
bookmarkButton.setCompoundDrawablesWithIntrinsicBounds(R.drawable.bookmark, 0, 0, 0);
statusText.setMovementMethod(LinkAndScrollMovement.getInstance());
statusText.setLinkTextColor(settings.getHighlightColor());
cardList.setLayoutManager(new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false));
@ -317,8 +309,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
likeButton.setOnLongClickListener(this);
repostNameButton.setOnLongClickListener(this);
locationButton.setOnLongClickListener(this);
bookmarkButton.setOnLongClickListener(this);
container.setOnScrollChangeListener(this);
}
@ -395,49 +385,55 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
@Override
public boolean onPrepareOptionsMenu(@NonNull Menu m) {
if (status == null)
return super.onPrepareOptionsMenu(m);
MenuItem optDelete = m.findItem(R.id.menu_status_delete);
MenuItem optHide = m.findItem(R.id.menu_status_hide);
MenuItem optCopy = m.findItem(R.id.menu_status_copy);
MenuItem optMetrics = m.findItem(R.id.menu_status_metrics);
MenuItem optDismiss = m.findItem(R.id.menu_notification_dismiss);
MenuItem menuBookmark = m.findItem(R.id.menu_status_bookmark);
SubMenu copyMenu = optCopy.getSubMenu();
Status status = this.status;
if (status.getEmbeddedStatus() != null) {
status = status.getEmbeddedStatus();
}
Configuration config = settings.getLogin().getConfiguration();
// set notification options
if (notification != null) {
optHide.setVisible(false);
} else if (status.getRepliedUserId() == settings.getLogin().getId() && status.getAuthor().getId() != settings.getLogin().getId()) {
optDismiss.setVisible(config.NotificationDismissEnabled());
}
// set status options
if (status != null) {
Status currentStatus = status;
if (currentStatus.getEmbeddedStatus() != null) {
currentStatus = currentStatus.getEmbeddedStatus();
}
// enable/disable status reply hide
long currentUserId = settings.getLogin().getId();
if (currentStatus.getRepliedUserId() == currentUserId && currentStatus.getAuthor().getId() != currentUserId) {
optHide.setTitle(hidden ? R.string.menu_status_hide : R.string.menu_status_unhide);
optHide.setVisible(true);
if (hidden) {
optHide.setTitle(R.string.menu_status_unhide);
}
// enable/disable bookmark
if (currentStatus.isBookmarked()) {
menuBookmark.setTitle(R.string.menu_bookmark_remove);
} else {
optHide.setTitle(R.string.menu_status_hide);
menuBookmark.setTitle(R.string.menu_bookmark_add);
}
}
if (status.getAuthor().isCurrentUser()) {
// enable/disable status hide option
if (currentStatus.getAuthor().isCurrentUser()) {
optDelete.setVisible(true);
}
if (status.getMetrics() != null) {
// enable/disable status metrics option
if (currentStatus.getMetrics() != null) {
optMetrics.setVisible(true);
}
if (settings.getLogin().getConfiguration().NotificationDismissEnabled()) {
optDismiss.setVisible(true);
}
// add media link items
// check if menu doesn't contain media links already
if (copyMenu.size() == 2) {
int mediaCount = status.getMedia().length;
for (int i = 0; i < mediaCount; i++) {
for (int i = 0; i < currentStatus.getMedia().length; i++) {
// create sub menu entry and use array index as item ID
String text = getString(R.string.menu_media_link) + ' ' + (i + 1);
copyMenu.add(MENU_GROUP_COPY, i, Menu.NONE, text);
}
}
}
return true;
}
@ -454,6 +450,13 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (item.getItemId() == R.id.menu_status_delete) {
confirmDialog.show(ConfirmDialog.DELETE_STATUS);
}
// add/remove bookmark
if (item.getItemId() == R.id.menu_status_bookmark) {
Toast.makeText(getApplicationContext(), R.string.info_loading, Toast.LENGTH_SHORT).show();
int mode = status.isBookmarked() ? StatusParam.UNBOOKMARK : StatusParam.BOOKMARK;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, this::onStatusResult);
}
// hide status
else if (item.getItemId() == R.id.menu_status_hide) {
int mode = hidden ? StatusParam.UNHIDE : StatusParam.HIDE;
@ -466,7 +469,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
try {
startActivity(intent);
} catch (ActivityNotFoundException err) {
Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.error_connection_failed, Toast.LENGTH_SHORT).show();
}
}
// copy status link to clipboard
@ -474,7 +477,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (clip != null) {
ClipData linkClip = ClipData.newPlainText("status text", status.getText());
clip.setPrimaryClip(linkClip);
Toast.makeText(getApplicationContext(), R.string.info_status_text_copied, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_text_copied, Toast.LENGTH_SHORT).show();
}
}
// copy status link to clipboard
@ -482,7 +485,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (clip != null) {
ClipData linkClip = ClipData.newPlainText("status link", status.getUrl());
clip.setPrimaryClip(linkClip);
Toast.makeText(getApplicationContext(), R.string.info_status_link_copied, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_link_copied, Toast.LENGTH_SHORT).show();
}
}
// open status metrics page
@ -503,7 +506,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (clip != null) {
ClipData linkClip = ClipData.newPlainText("status media link", medias[index].getUrl());
clip.setPrimaryClip(linkClip);
Toast.makeText(getApplicationContext(), R.string.info_status_medialink_copied, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_medialink_copied, Toast.LENGTH_SHORT).show();
}
}
}
@ -561,7 +564,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
try {
startActivity(intent);
} catch (ActivityNotFoundException err) {
Toast.makeText(getApplicationContext(), R.string.error_no_card_app, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.error_no_card_app, Toast.LENGTH_SHORT).show();
}
}
}
@ -580,7 +583,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (status != null && statusAsync.isIdle()) {
// repost this status
if (v.getId() == R.id.page_status_repost) {
Toast.makeText(getApplicationContext(), R.string.info_loading, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_loading, Toast.LENGTH_SHORT).show();
int mode = status.isReposted() ? StatusParam.UNREPOST : StatusParam.REPOST;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, this::onStatusResult);
@ -588,20 +591,12 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
}
// favorite this status
else if (v.getId() == R.id.page_status_favorite) {
Toast.makeText(getApplicationContext(), R.string.info_loading, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_loading, Toast.LENGTH_SHORT).show();
int mode = status.isFavorited() ? StatusParam.UNFAVORITE : StatusParam.FAVORITE;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, this::onStatusResult);
return true;
}
// bookmark status
else if (v.getId() == R.id.page_status_bookmark) {
Toast.makeText(getApplicationContext(), R.string.info_loading, LENGTH_SHORT).show();
int mode = status.isBookmarked() ? StatusParam.UNBOOKMARK : StatusParam.BOOKMARK;
StatusParam param = new StatusParam(mode, status.getId());
statusAsync.execute(param, this::onStatusResult);
return true;
}
// go to original status
else if (v.getId() == R.id.page_status_reposter_reference) {
Status embeddedStatus = status.getEmbeddedStatus();
@ -623,7 +618,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (clip != null && location != null) {
ClipData linkClip = ClipData.newPlainText("Status location coordinates", location.getCoordinates());
clip.setPrimaryClip(linkClip);
Toast.makeText(getApplicationContext(), R.string.info_status_location_copied, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_location_copied, Toast.LENGTH_SHORT).show();
}
return true;
}
@ -632,16 +627,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
}
@Override
public void onScrollChange(@NonNull NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (scrollY == header.getMeasuredHeight()) {
// unlock child scrolling
} else {
// lock child view from scrolling
}
}
@Override
public void onConfirm(int type, boolean rememberChoice) {
switch (type) {
@ -691,7 +676,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
try {
startActivity(intent);
} catch (ActivityNotFoundException err) {
Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.error_connection_failed, Toast.LENGTH_SHORT).show();
}
} else if (type == OnCardClickListener.TYPE_IMAGE) {
String imageUrl = card.getImageUrl();
@ -763,7 +748,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
try {
startActivity(intent);
} catch (ActivityNotFoundException err) {
Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.error_connection_failed, Toast.LENGTH_SHORT).show();
}
}
}
@ -785,11 +770,11 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
public void setStatus(@NonNull Status status) {
this.status = status;
if (status.getEmbeddedStatus() != null) {
repostNameButton.setVisibility(VISIBLE);
repostNameButton.setVisibility(View.VISIBLE);
repostNameButton.setText(status.getAuthor().getScreenname());
status = status.getEmbeddedStatus();
} else {
repostNameButton.setVisibility(GONE);
repostNameButton.setVisibility(View.GONE);
}
User author = status.getAuthor();
Location location = status.getLocation();
@ -805,11 +790,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
} else {
AppStyles.setDrawableColor(likeButton, settings.getIconColor());
}
if (status.isBookmarked()) {
AppStyles.setDrawableColor(bookmarkButton, settings.getBookmarkColor());
} else {
AppStyles.setDrawableColor(bookmarkButton, settings.getIconColor());
}
if (author.isVerified()) {
userName.setCompoundDrawablesWithIntrinsicBounds(R.drawable.verify, 0, 0, 0);
AppStyles.setDrawableColor(userName, settings.getIconColor());
@ -831,30 +811,30 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
if (!status.getSource().isEmpty()) {
statusApi.setText(R.string.status_sent_from);
statusApi.append(status.getSource());
statusApi.setVisibility(VISIBLE);
statusApi.setVisibility(View.VISIBLE);
} else {
statusApi.setVisibility(GONE);
statusApi.setVisibility(View.GONE);
}
if (!status.getText().isEmpty()) {
Spannable spannableText = Tagger.makeTextWithLinks(status.getText(), settings.getHighlightColor(), this);
statusText.setVisibility(VISIBLE);
statusText.setVisibility(View.VISIBLE);
statusText.setText(spannableText);
} else {
statusText.setVisibility(GONE);
statusText.setVisibility(View.GONE);
}
if (status.getRepliedStatusId() > 0) {
if (!status.getReplyName().isEmpty())
replyName.setText(status.getReplyName());
else
replyName.setText(R.string.status_replyname_empty);
replyName.setVisibility(VISIBLE);
replyName.setVisibility(View.VISIBLE);
} else {
replyName.setVisibility(GONE);
replyName.setVisibility(View.GONE);
}
if (status.isSensitive()) {
sensitive_media.setVisibility(VISIBLE);
sensitive_media.setVisibility(View.VISIBLE);
} else {
sensitive_media.setVisibility(GONE);
sensitive_media.setVisibility(View.GONE);
}
String profileImageUrl = author.getProfileImageThumbnailUrl();
if (settings.imagesEnabled() && !profileImageUrl.isEmpty()) {
@ -865,37 +845,32 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
}
if (location != null) {
if (!location.getPlace().isEmpty()) {
locationName.setVisibility(VISIBLE);
locationName.setVisibility(View.VISIBLE);
locationName.setText(location.getFullName());
} else {
locationName.setVisibility(GONE);
locationName.setVisibility(View.GONE);
}
if (!location.getCoordinates().isEmpty()) {
locationButton.setVisibility(VISIBLE);
locationButton.setVisibility(View.VISIBLE);
locationButton.setText(location.getCoordinates());
} else {
locationButton.setVisibility(GONE);
locationButton.setVisibility(View.GONE);
}
} else {
locationName.setVisibility(GONE);
locationButton.setVisibility(GONE);
locationName.setVisibility(View.GONE);
locationButton.setVisibility(View.GONE);
}
if (repostButton.getVisibility() != VISIBLE) {
if (settings.getLogin().getConfiguration() == Configuration.MASTODON) {
bookmarkButton.setVisibility(VISIBLE);
} else {
bookmarkButton.setVisibility(GONE);
}
repostButton.setVisibility(VISIBLE);
likeButton.setVisibility(VISIBLE);
replyButton.setVisibility(VISIBLE);
if (repostButton.getVisibility() != View.VISIBLE) {
repostButton.setVisibility(View.VISIBLE);
likeButton.setVisibility(View.VISIBLE);
replyButton.setVisibility(View.VISIBLE);
}
if ((status.getCards().length > 0 || status.getMedia().length > 0) || status.getPoll() != null) {
cardList.setVisibility(VISIBLE);
cardList.setVisibility(View.VISIBLE);
adapter.replaceAll(status);
statusText.setMaxLines(5);
} else {
cardList.setVisibility(GONE);
cardList.setVisibility(View.GONE);
statusText.setMaxLines(10);
}
}
@ -916,50 +891,50 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
break;
case StatusResult.REPOST:
Toast.makeText(getApplicationContext(), R.string.info_status_reposted, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_reposted, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNREPOST:
Toast.makeText(getApplicationContext(), R.string.info_status_unreposted, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_unreposted, Toast.LENGTH_SHORT).show();
break;
case StatusResult.FAVORITE:
if (settings.likeEnabled())
Toast.makeText(getApplicationContext(), R.string.info_status_liked, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_liked, Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), R.string.info_status_favored, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_favored, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNFAVORITE:
if (settings.likeEnabled())
Toast.makeText(getApplicationContext(), R.string.info_status_unliked, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_unliked, Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), R.string.info_status_unfavored, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_unfavored, Toast.LENGTH_SHORT).show();
break;
case StatusResult.BOOKMARK:
Toast.makeText(getApplicationContext(), R.string.info_status_bookmarked, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_bookmarked, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNBOOKMARK:
Toast.makeText(getApplicationContext(), R.string.info_status_unbookmarked, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_unbookmarked, Toast.LENGTH_SHORT).show();
break;
case StatusResult.HIDE:
hidden = true;
invalidateOptionsMenu();
Toast.makeText(getApplicationContext(), R.string.info_reply_hidden, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_reply_hidden, Toast.LENGTH_SHORT).show();
break;
case StatusResult.UNHIDE:
hidden = false;
invalidateOptionsMenu();
Toast.makeText(getApplicationContext(), R.string.info_reply_unhidden, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_reply_unhidden, Toast.LENGTH_SHORT).show();
break;
case StatusResult.DELETE:
if (status != null) {
Toast.makeText(getApplicationContext(), R.string.info_status_removed, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_status_removed, Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
if (status.getEmbeddedStatus() != null)
intent.putExtra(INTENT_STATUS_REMOVED_ID, status.getEmbeddedStatus().getId());
@ -1014,7 +989,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
intent.putExtra(INTENT_NOTIFICATION_REMOVED_ID, notification.getId());
setResult(RETURN_NOTIFICATION_REMOVED, intent);
}
Toast.makeText(getApplicationContext(), R.string.info_notification_dismiss, LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), R.string.info_notification_dismiss, Toast.LENGTH_SHORT).show();
finish();
break;

View File

@ -42,8 +42,8 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
*/
public class StatusHolder extends ViewHolder implements OnClickListener {
private ImageView profile, rpUser, verifiedIcon, lockedIcon, rtIcon, favIcon, replyIcon;
private TextView username, screenname, text, repost, favorite, reposter, created, replyname, label;
private ImageView profile, repostUserIcon, verifiedIcon, lockedIcon, repostIcon, favoriteIcon, replyStatus;
private TextView username, screenname, text, repost, favorite, reply, reposter, created, replyname, label;
private RecyclerView iconList;
private GlobalSettings settings;
@ -64,16 +64,17 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
profile = itemView.findViewById(R.id.item_status_profile_image);
verifiedIcon = itemView.findViewById(R.id.item_status_verified_icon);
lockedIcon = itemView.findViewById(R.id.item_status_locked_icon);
rpUser = itemView.findViewById(R.id.item_status_reposter_icon);
rtIcon = itemView.findViewById(R.id.item_status_repost_icon);
favIcon = itemView.findViewById(R.id.item_status_favorite_icon);
repostUserIcon = itemView.findViewById(R.id.item_status_reposter_icon);
repostIcon = itemView.findViewById(R.id.item_status_repost_icon);
favoriteIcon = itemView.findViewById(R.id.item_status_favorite_icon);
iconList = itemView.findViewById(R.id.item_status_attachment_list);
replyIcon = itemView.findViewById(R.id.item_status_reply);
replyStatus = itemView.findViewById(R.id.item_status_reply);
username = itemView.findViewById(R.id.item_status_author_username);
screenname = itemView.findViewById(R.id.item_status_author_screenname);
text = itemView.findViewById(R.id.item_status_text);
repost = itemView.findViewById(R.id.item_status_repost_count);
favorite = itemView.findViewById(R.id.item_status_favorite_count);
reply = itemView.findViewById(R.id.item_status_reply_count);
reposter = itemView.findViewById(R.id.item_status_reposter_name);
created = itemView.findViewById(R.id.item_status_created_at);
replyname = itemView.findViewById(R.id.item_status_reply_name);
@ -83,9 +84,9 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
iconList.setAdapter(adapter);
if (settings.likeEnabled()) {
favIcon.setImageResource(R.drawable.like);
favoriteIcon.setImageResource(R.drawable.like);
} else {
favIcon.setImageResource(R.drawable.favorite);
favoriteIcon.setImageResource(R.drawable.favorite);
}
AppStyles.setTheme(container, Color.TRANSPARENT);
cardLayout.setCardBackgroundColor(settings.getCardColor());
@ -117,17 +118,18 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
if (status.getEmbeddedStatus() != null) {
reposter.setText(user.getScreenname());
reposter.setVisibility(View.VISIBLE);
rpUser.setVisibility(View.VISIBLE);
repostUserIcon.setVisibility(View.VISIBLE);
status = status.getEmbeddedStatus();
user = status.getAuthor();
} else {
reposter.setVisibility(View.GONE);
rpUser.setVisibility(View.GONE);
repostUserIcon.setVisibility(View.GONE);
}
username.setText(user.getUsername());
screenname.setText(user.getScreenname());
repost.setText(StringTools.NUMBER_FORMAT.format(status.getRepostCount()));
favorite.setText(StringTools.NUMBER_FORMAT.format(status.getFavoriteCount()));
reply.setText(StringTools.NUMBER_FORMAT.format(status.getReplyCount()));
created.setText(StringTools.formatCreationTime(itemView.getResources(), status.getTimestamp()));
if (!status.getText().trim().isEmpty()) {
Spanned textSpan = Tagger.makeTextWithLinks(status.getText(), settings.getHighlightColor());
@ -137,14 +139,14 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
text.setVisibility(View.GONE);
}
if (status.isReposted()) {
rtIcon.setColorFilter(settings.getRepostIconColor());
repostIcon.setColorFilter(settings.getRepostIconColor());
} else {
rtIcon.setColorFilter(settings.getIconColor());
repostIcon.setColorFilter(settings.getIconColor());
}
if (status.isFavorited()) {
favIcon.setColorFilter(settings.getFavoriteIconColor());
favoriteIcon.setColorFilter(settings.getFavoriteIconColor());
} else {
favIcon.setColorFilter(settings.getIconColor());
favoriteIcon.setColorFilter(settings.getIconColor());
}
if (user.isVerified()) {
verifiedIcon.setVisibility(View.VISIBLE);
@ -164,14 +166,14 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
profile.setImageResource(0);
}
if (status.getRepliedStatusId() > 0) {
replyIcon.setVisibility(View.VISIBLE);
replyStatus.setVisibility(View.VISIBLE);
replyname.setVisibility(View.VISIBLE);
if (!status.getReplyName().isEmpty())
replyname.setText(status.getReplyName());
else
replyname.setText(R.string.status_replyname_empty);
} else {
replyIcon.setVisibility(View.GONE);
replyStatus.setVisibility(View.GONE);
replyname.setVisibility(View.GONE);
}
if (settings.statusIndicatorsEnabled()) {

View File

@ -98,10 +98,8 @@ public abstract class ListFragment extends Fragment implements OnRefreshListener
* @param adapter adapter for the list
*/
protected void setAdapter(Adapter<? extends ViewHolder> adapter) {
if (list != null) {
list.setAdapter(adapter);
}
}
/**
* called to reset all data

View File

@ -185,8 +185,34 @@
android:layout_width="0dp"
android:layout_height="@dimen/item_status_icon_size"
android:layout_marginTop="@dimen/item_status_layout_margin"
app:layout_constraintHorizontal_weight="2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/item_status_attachment_list"
app:layout_constraintEnd_toStartOf="@id/item_status_reply_icon" />
<ImageView
android:id="@+id/item_status_reply_icon"
android:layout_width="@dimen/item_status_icon_size"
android:layout_height="@dimen/item_status_icon_size"
android:src="@drawable/answer"
android:layout_marginTop="@dimen/item_status_layout_margin"
app:layout_constraintStart_toEndOf="@id/item_status_indicator_placeholder"
app:layout_constraintTop_toBottomOf="@id/item_status_attachment_list"
app:layout_constraintEnd_toStartOf="@id/item_status_reply_count"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/item_status_reply_count"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/item_status_text_margin"
android:layout_marginEnd="@dimen/item_status_text_margin"
android:lines="1"
android:textSize="@dimen/item_status_textsize_button"
app:layout_constraintHorizontal_weight="3"
app:layout_constraintStart_toEndOf="@id/item_status_reply_icon"
app:layout_constraintTop_toBottomOf="@id/item_status_attachment_list"
app:layout_constraintBottom_toBottomOf="@id/item_status_reply_icon"
app:layout_constraintEnd_toStartOf="@id/item_status_repost_icon" />
<ImageView
@ -195,7 +221,7 @@
android:layout_height="@dimen/item_status_icon_size"
android:src="@drawable/repost"
android:layout_marginTop="@dimen/item_status_layout_margin"
app:layout_constraintStart_toEndOf="@id/item_status_indicator_placeholder"
app:layout_constraintStart_toEndOf="@id/item_status_reply_count"
app:layout_constraintTop_toBottomOf="@id/item_status_attachment_list"
app:layout_constraintEnd_toStartOf="@id/item_status_repost_count"
tools:ignore="ContentDescription" />
@ -208,8 +234,9 @@
android:layout_marginEnd="@dimen/item_status_text_margin"
android:lines="1"
android:textSize="@dimen/item_status_textsize_button"
app:layout_constraintHorizontal_weight="3"
app:layout_constraintStart_toEndOf="@id/item_status_repost_icon"
app:layout_constraintTop_toTopOf="@id/item_status_repost_icon"
app:layout_constraintTop_toBottomOf="@id/item_status_attachment_list"
app:layout_constraintBottom_toBottomOf="@id/item_status_repost_icon"
app:layout_constraintEnd_toStartOf="@id/item_status_favorite_icon" />
@ -232,8 +259,9 @@
android:layout_marginEnd="@dimen/item_status_text_margin"
android:lines="1"
android:textSize="@dimen/item_status_textsize_button"
app:layout_constraintHorizontal_weight="3"
app:layout_constraintStart_toEndOf="@id/item_status_favorite_icon"
app:layout_constraintTop_toTopOf="@id/item_status_favorite_icon"
app:layout_constraintTop_toBottomOf="@id/item_status_attachment_list"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -239,22 +239,6 @@
android:layout_width="match_parent"
android:layout_height="400dp">
<Button
android:id="@+id/page_status_bookmark"
android:layout_width="0dp"
android:layout_height="@dimen/page_status_button_height"
android:visibility="invisible"
android:paddingLeft="@dimen/page_status_button_padding"
android:paddingRight="@dimen/page_status_button_padding"
android:drawablePadding="@dimen/page_status_padding_drawable"
android:layout_margin="@dimen/page_status_button_margin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/page_status_reply_fragment"
app:layout_constraintEnd_toStartOf="@id/page_status_reply"
app:layout_constraintHorizontal_weight="1"
style="@style/FeedbackButton" />
<Button
android:id="@+id/page_status_reply"
android:layout_width="0dp"
@ -265,7 +249,7 @@
android:drawablePadding="@dimen/page_status_padding_drawable"
android:layout_margin="@dimen/page_status_button_margin"
android:lines="1"
app:layout_constraintStart_toEndOf="@id/page_status_bookmark"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/page_status_reply_fragment"
app:layout_constraintEnd_toStartOf="@id/page_status_repost"

View File

@ -20,6 +20,10 @@
</menu>
</item>
<item
android:id="@+id/menu_status_bookmark"
android:title="@string/menu_bookmark_add" />
<item
android:id="@+id/menu_status_metrics"
android:title="@string/menu_status_metrics"

View File

@ -272,7 +272,6 @@
<string name="info_status_unbookmarked">Status aus Lesezeichen entfernt</string>
<string name="settings_bookmark_color">Lesezeichen symbol</string>
<string name="info_poll_voted">Umfrage abgestimmt!</string>
<string name="error_database_cleared">Fehler beim löschen der Datenbank!</string>
<string name="menu_notification_dismiss">entfernen</string>
<string name="confirm_dismiss_notification">Nachricht verwerfen?</string>
</resources>

View File

@ -107,7 +107,6 @@
<string name="error_wrong_connection_settings">wrong connection settings! Discarc changes?</string>
<string name="error_invalid_media">Invalid media file!</string>
<string name="error_not_defined">Not specified error!</string>
<string name="error_database_cleared">Error while clearing database!</string>
<string name="error_forbidden_api_access">API does not support this operation!</string>
<string name="error_adding_media">Error occurred while adding media!</string>
<string name="error_media_init">Error while preparing media files for upload!</string>
@ -125,6 +124,8 @@
<string name="menu_app_info">About</string>
<string name="menu_licenses">Licenses</string>
<string name="menu_block_user">block</string>
<string name="menu_bookmark_add">bookmark</string>
<string name="menu_bookmark_remove">remove bookmark</string>
<string name="menu_unmute_user">unmute</string>
<string name="menu_follow_requested">follow requested</string>
<string name="menu_status_delete">delete</string>