Added the ability to display the Pending/Unread button at bottom of the screen for bigger displays or smaller hands (#1595)

This commit is contained in:
Benoît Clouet 2023-10-01 09:24:37 +02:00 committed by GitHub
parent 1f44c502dd
commit d32c5c004c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 29 additions and 2 deletions

View file

@ -197,13 +197,13 @@ struct DisplaySettingsView: View {
Text(buttonStyle.description).tag(buttonStyle) Text(buttonStyle.description).tag(buttonStyle)
} }
} }
Picker("settings.display.status.media-style", selection: $theme.statusDisplayStyle) { Picker("settings.display.status.media-style", selection: $theme.statusDisplayStyle) {
ForEach(Theme.StatusDisplayStyle.allCases, id: \.rawValue) { buttonStyle in ForEach(Theme.StatusDisplayStyle.allCases, id: \.rawValue) { buttonStyle in
Text(buttonStyle.description).tag(buttonStyle) Text(buttonStyle.description).tag(buttonStyle)
} }
} }
Toggle("settings.display.translate-button", isOn: $userPreferences.showTranslateButton) Toggle("settings.display.translate-button", isOn: $userPreferences.showTranslateButton)
Toggle("settings.display.pending-at-bottom", isOn: $userPreferences.pendingShownAtBottom)
} }
.listRowBackground(theme.primaryBackgroundColor) .listRowBackground(theme.primaryBackgroundColor)
} }

View file

@ -91,6 +91,7 @@
"settings.display.status.action-buttons" = "Кнопкі дзеянняў стану"; "settings.display.status.action-buttons" = "Кнопкі дзеянняў стану";
"settings.display.status.media-style" = "Медыястыль статусу"; "settings.display.status.media-style" = "Медыястыль статусу";
"settings.display.translate-button" = "Паказаць кнопку перакладу"; "settings.display.translate-button" = "Паказаць кнопку перакладу";
"settings.display.pending-at-bottom" = "Кнопка «Паказаць непрачытаныя» ўнізе экрана";
"settings.display.theme.background" = "Колер фону"; "settings.display.theme.background" = "Колер фону";
"settings.display.theme.secondary-background" = "Другасны колер фону"; "settings.display.theme.secondary-background" = "Другасны колер фону";
"settings.display.theme.text-color" = "Text Color"; "settings.display.theme.text-color" = "Text Color";

View file

@ -85,6 +85,7 @@
"settings.display.status.action-buttons" = "Botons d'acció"; "settings.display.status.action-buttons" = "Botons d'acció";
"settings.display.status.media-style" = "Estil del contingut multimèdia"; "settings.display.status.media-style" = "Estil del contingut multimèdia";
"settings.display.translate-button" = "Mostra el botó de traducció"; "settings.display.translate-button" = "Mostra el botó de traducció";
"settings.display.pending-at-bottom" = "Mostra el botó no llegit a la part inferior de la pantalla";
"settings.display.theme.background" = "Color de fons"; "settings.display.theme.background" = "Color de fons";
"settings.display.theme.secondary-background" = "Color de fons secundari"; "settings.display.theme.secondary-background" = "Color de fons secundari";
"settings.display.theme.text-color" = "Text Color"; "settings.display.theme.text-color" = "Text Color";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Status Aktions-Buttons"; "settings.display.status.action-buttons" = "Status Aktions-Buttons";
"settings.display.status.media-style" = "Status Medien"; "settings.display.status.media-style" = "Status Medien";
"settings.display.translate-button" = "Übersetzen-Button anzeigen"; "settings.display.translate-button" = "Übersetzen-Button anzeigen";
"settings.display.pending-at-bottom" = "Ungelesene-Button am unteren Rand anzeigen";
"settings.display.theme.background" = "Hintergrundfarbe"; "settings.display.theme.background" = "Hintergrundfarbe";
"settings.display.theme.secondary-background" = "Sekundäre Hintergrundfarbe"; "settings.display.theme.secondary-background" = "Sekundäre Hintergrundfarbe";
"settings.display.theme.text-color" = "Textfarbe"; "settings.display.theme.text-color" = "Textfarbe";

View file

@ -91,6 +91,7 @@
"settings.display.status.action-buttons" = "Status Action Buttons"; "settings.display.status.action-buttons" = "Status Action Buttons";
"settings.display.status.media-style" = "Status Media Style"; "settings.display.status.media-style" = "Status Media Style";
"settings.display.translate-button" = "Show Translate Button"; "settings.display.translate-button" = "Show Translate Button";
"settings.display.pending-at-bottom" = "Show Pending Button at Bottom";
"settings.display.theme.background" = "Background Colour"; "settings.display.theme.background" = "Background Colour";
"settings.display.theme.secondary-background" = "Secondary Background Colour"; "settings.display.theme.secondary-background" = "Secondary Background Colour";
"settings.display.theme.text-color" = "Text Color"; "settings.display.theme.text-color" = "Text Color";

View file

@ -91,6 +91,7 @@
"settings.display.status.action-buttons" = "Status Action Buttons"; "settings.display.status.action-buttons" = "Status Action Buttons";
"settings.display.status.media-style" = "Status Media Style"; "settings.display.status.media-style" = "Status Media Style";
"settings.display.translate-button" = "Show Translate Button"; "settings.display.translate-button" = "Show Translate Button";
"settings.display.pending-at-bottom" = "Show Pending Button at Bottom";
"settings.display.theme.background" = "Background Color"; "settings.display.theme.background" = "Background Color";
"settings.display.theme.secondary-background" = "Secondary Background Color"; "settings.display.theme.secondary-background" = "Secondary Background Color";
"settings.display.theme.text-color" = "Text Color"; "settings.display.theme.text-color" = "Text Color";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Botones de acción"; "settings.display.status.action-buttons" = "Botones de acción";
"settings.display.status.media-style" = "Estilo del contenido multimedia"; "settings.display.status.media-style" = "Estilo del contenido multimedia";
"settings.display.translate-button" = "Mostrar botón para traducir"; "settings.display.translate-button" = "Mostrar botón para traducir";
"settings.display.pending-at-bottom" = "Mostrar el botón de no leído en la parte inferior de la pantalla";
"settings.display.theme.background" = "Color de fondo"; "settings.display.theme.background" = "Color de fondo";
"settings.display.theme.secondary-background" = "Color de fondo secundario"; "settings.display.theme.secondary-background" = "Color de fondo secundario";
"settings.display.theme.text-color" = "Color del texto"; "settings.display.theme.text-color" = "Color del texto";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Bidalketen ekintza botoiak"; "settings.display.status.action-buttons" = "Bidalketen ekintza botoiak";
"settings.display.status.media-style" = "Bidalketen multimediaren itxura"; "settings.display.status.media-style" = "Bidalketen multimediaren itxura";
"settings.display.translate-button" = "Erakutsi itzulpen botoia"; "settings.display.translate-button" = "Erakutsi itzulpen botoia";
"settings.display.pending-at-bottom" = "Erakutsi irakurri gabeko botoia pantailaren behealdean";
"settings.display.theme.background" = "Hondoaren kolorea"; "settings.display.theme.background" = "Hondoaren kolorea";
"settings.display.theme.secondary-background" = "Bigarren mailako hondoaren kolorea"; "settings.display.theme.secondary-background" = "Bigarren mailako hondoaren kolorea";
"settings.display.theme.text-color" = "Testuaren kolorea"; "settings.display.theme.text-color" = "Testuaren kolorea";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Boutons d'action de statut"; "settings.display.status.action-buttons" = "Boutons d'action de statut";
"settings.display.status.media-style" = "Style de média de statut"; "settings.display.status.media-style" = "Style de média de statut";
"settings.display.translate-button" = "Afficher le bouton de traduction"; "settings.display.translate-button" = "Afficher le bouton de traduction";
"settings.display.pending-at-bottom" = "Afficher le bouton des toots non lus en bas de l'écran";
"settings.display.theme.background" = "Couleur de fond"; "settings.display.theme.background" = "Couleur de fond";
"settings.display.theme.secondary-background" = "Couleur de fond secondaire"; "settings.display.theme.secondary-background" = "Couleur de fond secondaire";
"settings.display.theme.text-color" = "Couleur du texte"; "settings.display.theme.text-color" = "Couleur du texte";

View file

@ -85,6 +85,7 @@
"settings.display.status.action-buttons" = "Pulsanti di azione"; "settings.display.status.action-buttons" = "Pulsanti di azione";
"settings.display.status.media-style" = "Stile dei media"; "settings.display.status.media-style" = "Stile dei media";
"settings.display.translate-button" = "Mostra pulsante per la traduzione"; "settings.display.translate-button" = "Mostra pulsante per la traduzione";
"settings.display.pending-at-bottom" = "Visualizzare non letto nella parte inferiore dello schermo";
"settings.display.theme.background" = "Colore sfondo principale"; "settings.display.theme.background" = "Colore sfondo principale";
"settings.display.theme.secondary-background" = "Colore sfondo secondario"; "settings.display.theme.secondary-background" = "Colore sfondo secondario";
"settings.display.theme.text-color" = "Colore del testo"; "settings.display.theme.text-color" = "Colore del testo";

View file

@ -91,6 +91,7 @@
"settings.display.status.action-buttons" = "アクションボタン"; "settings.display.status.action-buttons" = "アクションボタン";
"settings.display.status.media-style" = "メディアスタイル"; "settings.display.status.media-style" = "メディアスタイル";
"settings.display.translate-button" = "翻訳ボタンの表示"; "settings.display.translate-button" = "翻訳ボタンの表示";
"settings.display.pending-at-bottom" = "画面下に未読ボタンを表示する";
"settings.display.theme.background" = "バックグラウンドカラー"; "settings.display.theme.background" = "バックグラウンドカラー";
"settings.display.theme.secondary-background" = "アクセントカラー"; "settings.display.theme.secondary-background" = "アクセントカラー";
"settings.display.theme.text-color" = "テキストカラー"; "settings.display.theme.text-color" = "テキストカラー";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "글 동작 버튼"; "settings.display.status.action-buttons" = "글 동작 버튼";
"settings.display.status.media-style" = "글 미디어 크기"; "settings.display.status.media-style" = "글 미디어 크기";
"settings.display.translate-button" = "번역 버튼 표시"; "settings.display.translate-button" = "번역 버튼 표시";
"settings.display.pending-at-bottom" = "화면 하단에 읽지 않은 버튼 표시";
"settings.display.theme.background" = "배경 색상"; "settings.display.theme.background" = "배경 색상";
"settings.display.theme.secondary-background" = "보조 배경 색상"; "settings.display.theme.secondary-background" = "보조 배경 색상";
"settings.display.theme.text-color" = "글자 색상"; "settings.display.theme.text-color" = "글자 색상";

View file

@ -91,6 +91,7 @@
"settings.display.status.action-buttons" = "Status handlingsknapper"; "settings.display.status.action-buttons" = "Status handlingsknapper";
"settings.display.status.media-style" = "Status mediestil"; "settings.display.status.media-style" = "Status mediestil";
"settings.display.translate-button" = "Vis oversettelsesknapp"; "settings.display.translate-button" = "Vis oversettelsesknapp";
"settings.display.pending-at-bottom" = "Vis ulest-knappen nederst på skjermen";
"settings.display.theme.background" = "Bakgrunnsfarge"; "settings.display.theme.background" = "Bakgrunnsfarge";
"settings.display.theme.secondary-background" = "Sekundær bakgrunnsfarge"; "settings.display.theme.secondary-background" = "Sekundær bakgrunnsfarge";
"settings.display.theme.text-color" = "Tekstfarge"; "settings.display.theme.text-color" = "Tekstfarge";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Actieknoppen"; "settings.display.status.action-buttons" = "Actieknoppen";
"settings.display.status.media-style" = "Mediastijl"; "settings.display.status.media-style" = "Mediastijl";
"settings.display.translate-button" = "Toon vertaalknop"; "settings.display.translate-button" = "Toon vertaalknop";
"settings.display.pending-at-bottom" = "De knop Ongelezen onder aan het scherm weergeven";
"settings.display.theme.background" = "Achtergrondkleur"; "settings.display.theme.background" = "Achtergrondkleur";
"settings.display.theme.secondary-background" = "Secundaire achtergrondkleur"; "settings.display.theme.secondary-background" = "Secundaire achtergrondkleur";
"settings.display.theme.text-color" = "Tekstkleur"; "settings.display.theme.text-color" = "Tekstkleur";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Przyciski akcji"; "settings.display.status.action-buttons" = "Przyciski akcji";
"settings.display.status.media-style" = "Treści multimedialne"; "settings.display.status.media-style" = "Treści multimedialne";
"settings.display.translate-button" = "Pokazuj przycisk tłumaczenia"; "settings.display.translate-button" = "Pokazuj przycisk tłumaczenia";
"settings.display.pending-at-bottom" = "Wyświetlanie przycisku nieprzeczytanych u dołu ekranu";
"settings.display.theme.background" = "Kolor tła"; "settings.display.theme.background" = "Kolor tła";
"settings.display.theme.secondary-background" = "Dodatkowy kolor tła"; "settings.display.theme.secondary-background" = "Dodatkowy kolor tła";
"settings.display.theme.text-color" = "Kolor tekstu"; "settings.display.theme.text-color" = "Kolor tekstu";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Botões de ação de status"; "settings.display.status.action-buttons" = "Botões de ação de status";
"settings.display.status.media-style" = "Estilo de mídia de status"; "settings.display.status.media-style" = "Estilo de mídia de status";
"settings.display.translate-button" = "Exibir botão de tradução"; "settings.display.translate-button" = "Exibir botão de tradução";
"settings.display.pending-at-bottom" = "Exibir o botão não lido na parte inferior da tela";
"settings.display.theme.background" = "Cor de fundo"; "settings.display.theme.background" = "Cor de fundo";
"settings.display.theme.secondary-background" = "Cor de fundo secundária"; "settings.display.theme.secondary-background" = "Cor de fundo secundária";
"settings.display.theme.text-color" = "Cor do texto"; "settings.display.theme.text-color" = "Cor do texto";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "Durum Aksiyon Butonları"; "settings.display.status.action-buttons" = "Durum Aksiyon Butonları";
"settings.display.status.media-style" = "Durum Medya Stili"; "settings.display.status.media-style" = "Durum Medya Stili";
"settings.display.translate-button" = "Çeviri Butonunu Göster"; "settings.display.translate-button" = "Çeviri Butonunu Göster";
"settings.display.pending-at-bottom" = "Ekranın alt kısmında okunmamış düğmesini görüntüleyin";
"settings.display.theme.background" = "Arka Plan Rengi"; "settings.display.theme.background" = "Arka Plan Rengi";
"settings.display.theme.secondary-background" = "İkincil Arka Plan Rengi"; "settings.display.theme.secondary-background" = "İkincil Arka Plan Rengi";
"settings.display.theme.text-color" = "Text Color"; "settings.display.theme.text-color" = "Text Color";

View file

@ -91,6 +91,7 @@
"settings.display.status.action-buttons" = "Кнопки дій статуса"; "settings.display.status.action-buttons" = "Кнопки дій статуса";
"settings.display.status.media-style" = "Стиль медія статуса"; "settings.display.status.media-style" = "Стиль медія статуса";
"settings.display.translate-button" = "Відображати кнопку перекладу"; "settings.display.translate-button" = "Відображати кнопку перекладу";
"settings.display.pending-at-bottom" = "Показати непрочитану кнопку внизу екрана";
"settings.display.theme.background" = "Колір фону"; "settings.display.theme.background" = "Колір фону";
"settings.display.theme.secondary-background" = "Додатковий колір фону"; "settings.display.theme.secondary-background" = "Додатковий колір фону";
"settings.display.theme.text-color" = "Колір тексту"; "settings.display.theme.text-color" = "Колір тексту";

View file

@ -86,6 +86,7 @@
"settings.display.status.action-buttons" = "操作栏样式"; "settings.display.status.action-buttons" = "操作栏样式";
"settings.display.status.media-style" = "媒体内容排列"; "settings.display.status.media-style" = "媒体内容排列";
"settings.display.translate-button" = "显示翻译按钮"; "settings.display.translate-button" = "显示翻译按钮";
"settings.display.pending-at-bottom" = "在屏幕底部显示未读按钮";
"settings.display.theme.background" = "背景颜色"; "settings.display.theme.background" = "背景颜色";
"settings.display.theme.secondary-background" = "二级背景颜色"; "settings.display.theme.secondary-background" = "二级背景颜色";
"settings.display.theme.text-color" = "文本颜色"; "settings.display.theme.text-color" = "文本颜色";

View file

@ -91,6 +91,7 @@
"settings.display.status.action-buttons" = "狀態列按鈕"; "settings.display.status.action-buttons" = "狀態列按鈕";
"settings.display.status.media-style" = "狀態媒體式樣"; "settings.display.status.media-style" = "狀態媒體式樣";
"settings.display.translate-button" = "顯示翻譯按紐"; "settings.display.translate-button" = "顯示翻譯按紐";
"settings.display.pending-at-bottom" = "在螢幕底部顯示未讀按鈕";
"settings.display.theme.background" = "背景顏色"; "settings.display.theme.background" = "背景顏色";
"settings.display.theme.secondary-background" = "第二背景顏色"; "settings.display.theme.secondary-background" = "第二背景顏色";
"settings.display.theme.text-color" = "本文顏色"; "settings.display.theme.text-color" = "本文顏色";

View file

@ -9,6 +9,7 @@ import SwiftUI
class Storage { class Storage {
@AppStorage("preferred_browser") public var preferredBrowser: PreferredBrowser = .inAppSafari @AppStorage("preferred_browser") public var preferredBrowser: PreferredBrowser = .inAppSafari
@AppStorage("show_translate_button_inline") public var showTranslateButton: Bool = true @AppStorage("show_translate_button_inline") public var showTranslateButton: Bool = true
@AppStorage("show_pending_at_bottom") public var pendingShownAtBottom: Bool = false
@AppStorage("is_open_ai_enabled") public var isOpenAIEnabled: Bool = true @AppStorage("is_open_ai_enabled") public var isOpenAIEnabled: Bool = true
@AppStorage("recently_used_languages") public var recentlyUsedLanguages: [String] = [] @AppStorage("recently_used_languages") public var recentlyUsedLanguages: [String] = []
@ -72,6 +73,11 @@ import SwiftUI
storage.showTranslateButton = showTranslateButton storage.showTranslateButton = showTranslateButton
} }
} }
public var pendingShownAtBottom : Bool {
didSet {
storage.pendingShownAtBottom = pendingShownAtBottom
}
}
public var isOpenAIEnabled: Bool { public var isOpenAIEnabled: Bool {
didSet { didSet {
storage.isOpenAIEnabled = isOpenAIEnabled storage.isOpenAIEnabled = isOpenAIEnabled
@ -392,5 +398,6 @@ import SwiftUI
requestedReview = storage.requestedReview requestedReview = storage.requestedReview
collapseLongPosts = storage.collapseLongPosts collapseLongPosts = storage.collapseLongPosts
shareButtonBehavior = storage.shareButtonBehavior shareButtonBehavior = storage.shareButtonBehavior
pendingShownAtBottom = storage.pendingShownAtBottom
} }
} }

View file

@ -29,7 +29,7 @@ import SwiftUI
struct PendingStatusesObserverView: View { struct PendingStatusesObserverView: View {
@State var observer: PendingStatusesObserver @State var observer: PendingStatusesObserver
@Environment(UserPreferences.self) private var preferences
var body: some View { var body: some View {
if observer.pendingStatusesCount > 0 { if observer.pendingStatusesCount > 0 {
HStack(spacing: 6) { HStack(spacing: 6) {
@ -48,6 +48,7 @@ struct PendingStatusesObserverView: View {
.cornerRadius(8) .cornerRadius(8)
} }
.padding(12) .padding(12)
.frame(maxHeight: .infinity, alignment: preferences.pendingShownAtBottom ? .bottom : .top )
} }
} }
} }