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