parent
3756a1fd20
commit
30856a2f82
11 changed files with 49 additions and 10 deletions
|
@ -174,13 +174,22 @@ abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
|
|||
|
||||
// This should only be called after setReblogged, in order to override the tint correctly.
|
||||
private void setRebloggingEnabled(boolean enabled, Status.Visibility visibility) {
|
||||
reblogButton.setEnabled(enabled);
|
||||
reblogButton.setEnabled(enabled && visibility != Status.Visibility.PRIVATE);
|
||||
|
||||
if (enabled) {
|
||||
int inactiveId = ThemeUtils.getDrawableId(reblogButton.getContext(),
|
||||
R.attr.status_reblog_inactive_drawable, R.drawable.reblog_inactive_dark);
|
||||
int inactiveId;
|
||||
int activeId;
|
||||
if (visibility == Status.Visibility.PRIVATE) {
|
||||
inactiveId = ThemeUtils.getDrawableId(reblogButton.getContext(),
|
||||
R.attr.status_reblog_disabled_drawable, R.drawable.reblog_private_dark);
|
||||
activeId = R.drawable.reblog_private_active;
|
||||
} else {
|
||||
inactiveId = ThemeUtils.getDrawableId(reblogButton.getContext(),
|
||||
R.attr.status_reblog_inactive_drawable, R.drawable.reblog_inactive_dark);
|
||||
activeId = R.drawable.reblog_active;
|
||||
}
|
||||
reblogButton.setInactiveImage(inactiveId);
|
||||
reblogButton.setActiveImage(R.drawable.reblog_active);
|
||||
reblogButton.setActiveImage(activeId);
|
||||
} else {
|
||||
int disabledId;
|
||||
if (visibility == Status.Visibility.DIRECT) {
|
||||
|
@ -188,7 +197,7 @@ abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
|
|||
R.attr.status_reblog_direct_drawable, R.drawable.reblog_direct_dark);
|
||||
} else {
|
||||
disabledId = ThemeUtils.getDrawableId(reblogButton.getContext(),
|
||||
R.attr.status_reblog_disabled_drawable, R.drawable.reblog_disabled_dark);
|
||||
R.attr.status_reblog_disabled_drawable, R.drawable.reblog_private_dark);
|
||||
}
|
||||
reblogButton.setInactiveImage(disabledId);
|
||||
reblogButton.setActiveImage(disabledId);
|
||||
|
|
|
@ -98,7 +98,7 @@ data class Status(
|
|||
}
|
||||
|
||||
fun rebloggingAllowed(): Boolean {
|
||||
return (visibility != Visibility.PRIVATE && visibility != Visibility.DIRECT && visibility != Visibility.UNKNOWN)
|
||||
return (visibility != Visibility.DIRECT && visibility != Visibility.UNKNOWN)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
|
|
|
@ -21,11 +21,11 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.BottomSheetBehavior;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v7.widget.PopupMenu;
|
||||
import android.text.Spanned;
|
||||
import android.view.Menu;
|
||||
import android.view.View;
|
||||
|
||||
import com.keylesspalace.tusky.BottomSheetActivity;
|
||||
|
@ -66,6 +66,8 @@ public abstract class SFragment extends BaseFragment {
|
|||
protected abstract TimelineCases timelineCases();
|
||||
protected abstract void removeItem(int position);
|
||||
|
||||
protected abstract void onReblog(final boolean reblog, final int position);
|
||||
|
||||
private BottomSheetActivity bottomSheetActivity;
|
||||
|
||||
@Inject
|
||||
|
@ -150,6 +152,13 @@ public abstract class SFragment extends BaseFragment {
|
|||
popup.inflate(R.menu.status_more);
|
||||
} else {
|
||||
popup.inflate(R.menu.status_more_for_user);
|
||||
Menu menu = popup.getMenu();
|
||||
if (status.getVisibility() == Status.Visibility.PRIVATE) {
|
||||
boolean reblogged = status.getReblogged();
|
||||
if (status.getReblog() != null) reblogged = status.getReblog().getReblogged();
|
||||
menu.findItem(R.id.status_reblog_private).setVisible(!reblogged);
|
||||
menu.findItem(R.id.status_unreblog_private).setVisible(reblogged);
|
||||
}
|
||||
}
|
||||
popup.setOnMenuItemClickListener(item -> {
|
||||
switch (item.getItemId()) {
|
||||
|
@ -193,6 +202,14 @@ public abstract class SFragment extends BaseFragment {
|
|||
openReportPage(accountId, accountUsename, id, content);
|
||||
return true;
|
||||
}
|
||||
case R.id.status_unreblog_private: {
|
||||
onReblog(false, position);
|
||||
return true;
|
||||
}
|
||||
case R.id.status_reblog_private: {
|
||||
onReblog(true, position);
|
||||
return true;
|
||||
}
|
||||
case R.id.status_delete: {
|
||||
timelineCases().delete(id);
|
||||
removeItem(position);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue