mirror of
https://codeberg.org/tom79/Fedilab.git
synced 2025-09-15 08:20:18 +03:00
Add UI for changing who can quote when composing
This commit is contained in:
parent
8e2d0452e7
commit
89adb83c07
3 changed files with 144 additions and 11 deletions
|
@ -1643,18 +1643,22 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
|||
switch (statusDraft.visibility.toLowerCase()) {
|
||||
case "public" -> {
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_public);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.VISIBLE);
|
||||
statusDraft.visibility = MastodonHelper.visibility.PUBLIC.name();
|
||||
}
|
||||
case "unlisted" -> {
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_unlisted);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.VISIBLE);
|
||||
statusDraft.visibility = MastodonHelper.visibility.UNLISTED.name();
|
||||
}
|
||||
case "private" -> {
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_private);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.GONE);
|
||||
statusDraft.visibility = MastodonHelper.visibility.PRIVATE.name();
|
||||
}
|
||||
case "direct" -> {
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_direct);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.GONE);
|
||||
statusDraft.visibility = MastodonHelper.visibility.DIRECT.name();
|
||||
}
|
||||
}
|
||||
|
@ -1666,29 +1670,54 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
|||
holder.binding.visibilityGroup.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
|
||||
holder.binding.buttonVisibility.setChecked(false);
|
||||
});
|
||||
holder.binding.buttonQuoteVisibility.setOnClickListener(v -> {
|
||||
holder.binding.quoteVisibilityPanel.setVisibility(View.VISIBLE);
|
||||
holder.binding.quoteVisibilityGroup.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
|
||||
holder.binding.buttonQuoteVisibility.setChecked(false);
|
||||
});
|
||||
holder.binding.buttonCloseVisibilityPanel.setOnClickListener(v -> holder.binding.visibilityPanel.setVisibility(View.GONE));
|
||||
holder.binding.buttonCloseQuoteVisibilityPanel.setOnClickListener(v -> holder.binding.quoteVisibilityPanel.setVisibility(View.GONE));
|
||||
holder.binding.buttonVisibilityDirect.setOnClickListener(v -> {
|
||||
holder.binding.visibilityPanel.setVisibility(View.GONE);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.GONE);
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_direct);
|
||||
statusDraft.visibility = MastodonHelper.visibility.DIRECT.name();
|
||||
|
||||
});
|
||||
holder.binding.buttonVisibilityPrivate.setOnClickListener(v -> {
|
||||
holder.binding.visibilityPanel.setVisibility(View.GONE);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.GONE);
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_private);
|
||||
statusDraft.visibility = MastodonHelper.visibility.PRIVATE.name();
|
||||
});
|
||||
holder.binding.buttonVisibilityUnlisted.setOnClickListener(v -> {
|
||||
holder.binding.visibilityPanel.setVisibility(View.GONE);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.VISIBLE);
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_unlisted);
|
||||
statusDraft.visibility = MastodonHelper.visibility.UNLISTED.name();
|
||||
});
|
||||
holder.binding.buttonVisibilityPublic.setOnClickListener(v -> {
|
||||
holder.binding.visibilityPanel.setVisibility(View.GONE);
|
||||
holder.binding.buttonQuoteVisibility.setVisibility(View.VISIBLE);
|
||||
holder.binding.buttonVisibility.setIconResource(R.drawable.ic_compose_visibility_public);
|
||||
statusDraft.visibility = MastodonHelper.visibility.PUBLIC.name();
|
||||
unlisted_changed = true;
|
||||
});
|
||||
holder.binding.buttonQuoteVisibilityNoOne.setOnClickListener(v -> {
|
||||
holder.binding.quoteVisibilityPanel.setVisibility(View.GONE);
|
||||
holder.binding.buttonQuoteVisibility.setIconResource(R.drawable.ic_baseline_block_24);
|
||||
// Todo: "No one" quote visibility clicked
|
||||
});
|
||||
holder.binding.buttonQuoteVisibilityFollowersOnly.setOnClickListener(v -> {
|
||||
holder.binding.quoteVisibilityPanel.setVisibility(View.GONE);
|
||||
holder.binding.buttonQuoteVisibility.setIconResource(R.drawable.ic_baseline_people_alt_24);
|
||||
// Todo: "No one" quote visibility clicked
|
||||
});
|
||||
holder.binding.buttonQuoteVisibilityAnyone.setOnClickListener(v -> {
|
||||
holder.binding.quoteVisibilityPanel.setVisibility(View.GONE);
|
||||
holder.binding.buttonQuoteVisibility.setIconResource(R.drawable.ic_compose_visibility_public);
|
||||
// Todo: "No one" quote visibility clicked
|
||||
});
|
||||
|
||||
if (statusDraft.spoilerChecked || statusDraft.spoiler_text != null && !statusDraft.spoiler_text.trim().isEmpty()) {
|
||||
holder.binding.contentSpoiler.setVisibility(View.VISIBLE);
|
||||
|
|
|
@ -208,19 +208,40 @@
|
|||
app:layout_constraintTop_toBottomOf="@id/text_area_divider"
|
||||
app:toggleCheckedStateOnClick="true" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_visibility"
|
||||
style="@style/Widget.Material3.Button.IconButton.Outlined"
|
||||
<com.google.android.material.button.MaterialButtonToggleGroup
|
||||
android:id="@+id/visibility_indicators_group"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="3dp"
|
||||
android:layout_marginVertical="6dp"
|
||||
android:contentDescription="@string/change_visibility"
|
||||
app:icon="@drawable/ic_compose_visibility_public"
|
||||
app:iconGravity="textStart"
|
||||
app:iconPadding="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/action_buttons_barrier"
|
||||
app:layout_constraintStart_toEndOf="@id/button_sensitive"
|
||||
app:layout_constraintTop_toBottomOf="@id/text_area_divider" />
|
||||
app:layout_constraintTop_toBottomOf="@id/text_area_divider"
|
||||
app:selectionRequired="false">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_visibility"
|
||||
style="@style/Widget.Material3.Button.IconButton.Outlined"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checkable="false"
|
||||
android:contentDescription="@string/change_visibility"
|
||||
android:insetLeft="0dp"
|
||||
android:insetRight="0dp"
|
||||
app:icon="@drawable/ic_compose_visibility_public" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_quote_visibility"
|
||||
style="@style/Widget.Material3.Button.IconButton.Outlined"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checkable="false"
|
||||
android:contentDescription="@string/change_visibility"
|
||||
android:insetLeft="0dp"
|
||||
android:insetRight="0dp"
|
||||
app:icon="@drawable/ic_baseline_people_alt_24" />
|
||||
|
||||
</com.google.android.material.button.MaterialButtonToggleGroup>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_language"
|
||||
|
@ -232,7 +253,7 @@
|
|||
android:fontFamily="monospace"
|
||||
android:minWidth="72dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/action_buttons_barrier"
|
||||
app:layout_constraintStart_toEndOf="@id/button_visibility"
|
||||
app:layout_constraintStart_toEndOf="@id/visibility_indicators_group"
|
||||
app:layout_constraintTop_toBottomOf="@id/text_area_divider"
|
||||
tools:text="EN" />
|
||||
|
||||
|
@ -409,7 +430,87 @@
|
|||
style="@style/Widget.Material3.Button.IconButton.Outlined"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="96dp"
|
||||
android:layout_marginStart="98dp"
|
||||
android:insetLeft="0dp"
|
||||
android:insetRight="0dp"
|
||||
app:icon="@drawable/ic_baseline_close_24" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/quote_visibility_panel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_compose_panels"
|
||||
android:gravity="bottom"
|
||||
android:orientation="vertical"
|
||||
android:padding="6dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/action_buttons_barrier"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="1">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="6dp"
|
||||
android:text="@string/who_can_quote"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelLarge" />
|
||||
|
||||
<com.google.android.material.button.MaterialButtonToggleGroup
|
||||
android:id="@+id/quote_visibility_group"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="6dp"
|
||||
android:orientation="vertical"
|
||||
app:singleSelection="true">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_quote_visibility_no_one"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:insetTop="0dp"
|
||||
android:insetBottom="0dp"
|
||||
android:minHeight="36dp"
|
||||
android:text="@string/no_one"
|
||||
android:textAlignment="textStart"
|
||||
app:icon="@drawable/ic_baseline_block_24" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_quote_visibility_followers_only"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:insetTop="0dp"
|
||||
android:insetBottom="0dp"
|
||||
android:minHeight="36dp"
|
||||
android:text="@string/followers_only"
|
||||
android:textAlignment="textStart"
|
||||
app:icon="@drawable/ic_baseline_people_alt_24" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_quote_visibility_anyone"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:insetTop="0dp"
|
||||
android:insetBottom="0dp"
|
||||
android:minHeight="36dp"
|
||||
android:text="@string/anyone"
|
||||
android:textAlignment="textStart"
|
||||
app:icon="@drawable/ic_compose_visibility_public" />
|
||||
|
||||
</com.google.android.material.button.MaterialButtonToggleGroup>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_close_quote_visibility_panel"
|
||||
style="@style/Widget.Material3.Button.IconButton.Outlined"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="137dp"
|
||||
android:insetLeft="0dp"
|
||||
android:insetRight="0dp"
|
||||
app:icon="@drawable/ic_baseline_close_24" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
@ -419,7 +520,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="button_attach,button_visibility, button_language, button_post, character_progress, button_sensitive" />
|
||||
app:constraint_referenced_ids="button_attach, visibility_indicators_group, button_language, button_post, character_progress, button_sensitive" />
|
||||
|
||||
|
||||
<com.google.android.material.checkbox.MaterialCheckBox
|
||||
|
|
|
@ -686,6 +686,9 @@
|
|||
<string name="boosted_by">Boosted by</string>
|
||||
<string name="favourited_by">Favourited by</string>
|
||||
<string name="followers_only">Followers only</string>
|
||||
<string name="who_can_quote">Who can quote</string>
|
||||
<string name="no_one">No one</string>
|
||||
<string name="anyone">Anyone</string>
|
||||
<string name="other">Other</string>
|
||||
<string name="eg_sensitive_content">Eg.: Sensitive Content</string>
|
||||
<string name="Pronouns">Pronouns</string>
|
||||
|
|
Loading…
Reference in a new issue