diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java index 9b593208..0320a957 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java @@ -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); diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Status.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Status.kt index 04f7ff67..3a1ddd70 100644 --- a/app/src/main/java/com/keylesspalace/tusky/entity/Status.kt +++ b/app/src/main/java/com/keylesspalace/tusky/entity/Status.kt @@ -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 { diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java index 904faa4a..ad7e0a7b 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java @@ -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); diff --git a/app/src/main/res/drawable/reblog_private_active.xml b/app/src/main/res/drawable/reblog_private_active.xml new file mode 100644 index 00000000..cb1e326c --- /dev/null +++ b/app/src/main/res/drawable/reblog_private_active.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/reblog_disabled_dark.xml b/app/src/main/res/drawable/reblog_private_dark.xml similarity index 100% rename from app/src/main/res/drawable/reblog_disabled_dark.xml rename to app/src/main/res/drawable/reblog_private_dark.xml diff --git a/app/src/main/res/drawable/reblog_disabled_light.xml b/app/src/main/res/drawable/reblog_private_light.xml similarity index 100% rename from app/src/main/res/drawable/reblog_disabled_light.xml rename to app/src/main/res/drawable/reblog_private_light.xml diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml index a66dd034..b2fa3fca 100644 --- a/app/src/main/res/layout/activity_account.xml +++ b/app/src/main/res/layout/activity_account.xml @@ -113,7 +113,7 @@ android:visibility="gone" app:layout_constraintBottom_toBottomOf="@id/account_username" app:layout_constraintLeft_toRightOf="@id/account_username" - app:srcCompat="@drawable/reblog_disabled_light" + app:srcCompat="@drawable/reblog_private_light" tools:visibility="visible" /> + + \ No newline at end of file diff --git a/app/src/main/res/values-night/styles.xml b/app/src/main/res/values-night/styles.xml index 67b0abd5..16054146 100644 --- a/app/src/main/res/values-night/styles.xml +++ b/app/src/main/res/values-night/styles.xml @@ -28,7 +28,7 @@ @style/AppTheme.ImageButton.Dark @drawable/ic_reblog_dark_18dp @drawable/reblog_inactive_dark - @drawable/reblog_disabled_dark + @drawable/reblog_private_dark @drawable/reblog_direct_dark @drawable/favourite_active_dark @drawable/favourite_inactive_dark diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a25c698e..5545f828 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -332,5 +332,7 @@ Blobmoji is licensed under the Apache license 2.0 Twemoji is licensed as CC-BY 4.0 - https://creativecommons.org/licenses/by/4.0/ Download failed + Boost to original audience + Unboost diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9bc8e8f8..03fadc2c 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -61,7 +61,7 @@ @style/AppTheme.ImageButton.Light @drawable/ic_reblog_light_18dp @drawable/reblog_inactive_light - @drawable/reblog_disabled_light + @drawable/reblog_private_light @drawable/reblog_direct_light @drawable/favourite_active_light @drawable/favourite_inactive_light