swipe actions improvements (#785)
* swipe actions improvements * use old values as default settings * Polish swipe actions settings * Fix background color --------- Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
This commit is contained in:
parent
c6a4aa5fff
commit
124aeef7fb
|
@ -80,6 +80,7 @@
|
|||
9FE151A6293C90F900E9683D /* IconSelectorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FE151A5293C90F900E9683D /* IconSelectorView.swift */; };
|
||||
9FE3DB57296FEFCA00628CB0 /* AppAccount in Frameworks */ = {isa = PBXBuildFile; productRef = 9FE3DB56296FEFCA00628CB0 /* AppAccount */; };
|
||||
C9B22677297F6C2E001F9EFE /* ContentSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B22676297F6C2E001F9EFE /* ContentSettingsView.swift */; };
|
||||
D08A9C3529956CFA00204A4A /* SwipeActionsSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08A9C3429956CFA00204A4A /* SwipeActionsSettingsView.swift */; };
|
||||
E92817FA298443D600875FD1 /* Models in Frameworks */ = {isa = PBXBuildFile; productRef = E92817F9298443D600875FD1 /* Models */; };
|
||||
E92817FC298443D600875FD1 /* Network in Frameworks */ = {isa = PBXBuildFile; productRef = E92817FB298443D600875FD1 /* Network */; };
|
||||
E92817FE29844DB700875FD1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E92817FD29844DB700875FD1 /* Assets.xcassets */; };
|
||||
|
@ -224,6 +225,7 @@
|
|||
C4CBB90B298A0DA3007E1707 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
|
||||
C4FBCF6F298FD88A0015DF22 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
|
||||
C9B22676297F6C2E001F9EFE /* ContentSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentSettingsView.swift; sourceTree = "<group>"; };
|
||||
D08A9C3429956CFA00204A4A /* SwipeActionsSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwipeActionsSettingsView.swift; sourceTree = "<group>"; };
|
||||
DD31E2E5297FB68B00A4BE29 /* IceCubesApp.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = IceCubesApp.xcconfig; sourceTree = "<group>"; };
|
||||
E92817FD29844DB700875FD1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
E970C10929845A9400E88A8C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
|
@ -466,6 +468,7 @@
|
|||
9F2A5410296A1429009B2D7C /* PushNotificationsView.swift */,
|
||||
9FAE4ACA293783B000772766 /* SettingsTab.swift */,
|
||||
9F2A540629699698009B2D7C /* SupportAppView.swift */,
|
||||
D08A9C3429956CFA00204A4A /* SwipeActionsSettingsView.swift */,
|
||||
);
|
||||
path = Settings;
|
||||
sourceTree = "<group>";
|
||||
|
@ -758,6 +761,7 @@
|
|||
9F2B92FA295DA7D700DE16D0 /* AddAccountsView.swift in Sources */,
|
||||
639CDF9C296AC82F00C35E58 /* SafariRouter.swift in Sources */,
|
||||
9F35DB4729506F6600B3281A /* NotificationTab.swift in Sources */,
|
||||
D08A9C3529956CFA00204A4A /* SwipeActionsSettingsView.swift in Sources */,
|
||||
9F7335F22967608F00AFF0BA /* AddRemoteTimelineView.swift in Sources */,
|
||||
9F55C68D2955968700F94077 /* ExploreTab.swift in Sources */,
|
||||
9F1E8B47298EBCBB00609F80 /* HapticSettingsView.swift in Sources */,
|
||||
|
|
|
@ -113,6 +113,9 @@ struct SettingsTabs: View {
|
|||
NavigationLink(destination: ContentSettingsView()) {
|
||||
Label("settings.general.content", systemImage: "rectangle.on.rectangle")
|
||||
}
|
||||
NavigationLink(destination: SwipeActionsSettingsView()) {
|
||||
Label("settings.general.swipeactions", systemImage: "hand.draw")
|
||||
}
|
||||
Link(destination: URL(string: UIApplication.openSettingsURLString)!) {
|
||||
Label("settings.system", systemImage: "gear")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
import DesignSystem
|
||||
import Env
|
||||
import SwiftUI
|
||||
|
||||
struct SwipeActionsSettingsView: View {
|
||||
@EnvironmentObject private var theme: Theme
|
||||
@EnvironmentObject private var userPreferences: UserPreferences
|
||||
|
||||
var body: some View {
|
||||
|
||||
Form {
|
||||
Section("settings.swipeactions.status") {
|
||||
HStack {
|
||||
Text("settings.swipeactions.status.leading")
|
||||
Image(systemName: "arrow.right")
|
||||
}
|
||||
Picker(selection: $userPreferences.swipeActionsStatusLeadingLeft, label: makeSwipeLabel(left: true, text: "settings.swipeactions.status.leading.left")) {
|
||||
ForEach(StatusAction.allCases) { action in
|
||||
Text(action.displayName).tag(action)
|
||||
}
|
||||
}
|
||||
Picker(selection: $userPreferences.swipeActionsStatusLeadingRight, label: makeSwipeLabel(left: false, text: "settings.swipeactions.status.leading.right")) {
|
||||
ForEach(StatusAction.allCases) { action in
|
||||
Text(action.displayName).tag(action)
|
||||
}
|
||||
}
|
||||
HStack {
|
||||
Text("settings.swipeactions.status.trailing")
|
||||
Image(systemName: "arrow.left")
|
||||
}
|
||||
Picker(selection: $userPreferences.swipeActionsStatusTrailingLeft, label: makeSwipeLabel(left: true, text: "settings.swipeactions.status.trailing.left")) {
|
||||
ForEach(StatusAction.allCases) { action in
|
||||
Text(action.displayName).tag(action)
|
||||
}
|
||||
}
|
||||
Picker(selection: $userPreferences.swipeActionsStatusTrailingRight, label: makeSwipeLabel(left: false, text: "settings.swipeactions.status.trailing.right")) {
|
||||
ForEach(StatusAction.allCases) { action in
|
||||
Text(action.displayName).tag(action)
|
||||
}
|
||||
}
|
||||
}
|
||||
.listRowBackground(theme.primaryBackgroundColor)
|
||||
}
|
||||
.navigationTitle("settings.swipeactions.navigation-title")
|
||||
.scrollContentBackground(.hidden)
|
||||
.background(theme.secondaryBackgroundColor)
|
||||
}
|
||||
|
||||
private func makeSwipeLabel(left: Bool, text: LocalizedStringKey) -> some View {
|
||||
return HStack {
|
||||
Image(systemName: left ? "rectangle.lefthalf.filled" : "rectangle.righthalf.filled")
|
||||
Text(text)
|
||||
}.padding(.leading, 16)
|
||||
}
|
||||
}
|
|
@ -160,6 +160,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Habilitar columna secondària";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Exploreu";
|
||||
"tab.federated" = "Federat";
|
||||
|
|
|
@ -158,6 +158,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Zweite Spalte aktivieren";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
"enum.expand-media.show" = "Alle zeigen";
|
||||
"enum.expand-media.hide" = "Alle ausblenden";
|
||||
"enum.expand-media.hide-sensitive" = "Sensible ausblenden";
|
||||
|
|
|
@ -164,6 +164,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Enable secondary column";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Explore";
|
||||
"tab.federated" = "Federated";
|
||||
|
|
|
@ -162,6 +162,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Enable secondary column";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Explore";
|
||||
"tab.federated" = "Federated";
|
||||
|
|
|
@ -158,6 +158,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Enable secondary column";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
"enum.expand-media.show" = "Siempre";
|
||||
"enum.expand-media.hide" = "Nunca";
|
||||
"enum.expand-media.hide-sensitive" = "Ocultar contenido sensible";
|
||||
|
|
|
@ -158,6 +158,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Gaitu bigarren zutabea";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
"enum.expand-media.show" = "Erakutsi guztia";
|
||||
"enum.expand-media.hide" = "Ezkutatu guztia";
|
||||
"enum.expand-media.hide-sensitive" = "Ezkutatu hunkigarria";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Activer la colonne secondaire";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Explorer";
|
||||
"tab.federated" = "Fédéré";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Attiva la seconda colonna";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Esplora";
|
||||
"tab.federated" = "Federazione";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "セカンドカラムを有効にする";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "エクスプローラー";
|
||||
"tab.federated" = "連合";
|
||||
|
|
|
@ -160,6 +160,22 @@
|
|||
"settings.display.show-tab-label" = "하단 탭 바에 제목 표시";
|
||||
"settings.display.show-ipad-column" = "보조 열 사용";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "둘러보기";
|
||||
"tab.federated" = "연합";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Enable secondary column";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Utforsk";
|
||||
"tab.federated" = "Federert";
|
||||
|
|
|
@ -158,6 +158,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Toon tweede kolom";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Ontdekken";
|
||||
"tab.federated" = "Gefedereerd";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Włącz dodatkową kolumnę";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Odkrywaj";
|
||||
"tab.federated" = "Globalny";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Enable secondary column";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Explorar";
|
||||
"tab.federated" = "Linha global";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "Enable secondary column";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "Keşfet";
|
||||
"tab.federated" = "Birleştirilmiş";
|
||||
|
|
|
@ -161,6 +161,22 @@
|
|||
|
||||
"settings.display.show-ipad-column" = "启用边栏";
|
||||
|
||||
"settings.general.swipeactions" = "Swipe Actions";
|
||||
"settings.swipeactions.navigation-title" = "Swipe Actions";
|
||||
"settings.swipeactions.status.action.bookmark" = "Bookmark";
|
||||
"settings.swipeactions.status.action.boost" = "Boost";
|
||||
"settings.swipeactions.status.action.favorite" = "Favorite";
|
||||
"settings.swipeactions.status.action.none" = "None";
|
||||
"settings.swipeactions.status.action.quote" = "Quote";
|
||||
"settings.swipeactions.status.action.reply" = "Reply";
|
||||
"settings.swipeactions.status.leading" = "Swipe right";
|
||||
"settings.swipeactions.status.leading.left" = "left";
|
||||
"settings.swipeactions.status.leading.right" = "right";
|
||||
"settings.swipeactions.status.trailing" = " Swipe left";
|
||||
"settings.swipeactions.status.trailing.left" = "left";
|
||||
"settings.swipeactions.status.trailing.right" = "right";
|
||||
"settings.swipeactions.status" = "Post";
|
||||
|
||||
// MARK: Tabs
|
||||
"tab.explore" = "探索";
|
||||
"tab.federated" = "跨站";
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
import SwiftUI
|
||||
|
||||
public enum StatusAction : String, CaseIterable, Identifiable {
|
||||
public var id: String {
|
||||
"\(rawValue)"
|
||||
}
|
||||
case none, boost, reply, quote, favorite, bookmark
|
||||
|
||||
public var displayName: LocalizedStringKey {
|
||||
switch self {
|
||||
case .none:
|
||||
return "settings.swipeactions.status.action.none"
|
||||
case .reply:
|
||||
return "settings.swipeactions.status.action.reply"
|
||||
case .quote:
|
||||
return "settings.swipeactions.status.action.quote"
|
||||
case .boost:
|
||||
return "settings.swipeactions.status.action.boost"
|
||||
case .favorite:
|
||||
return "settings.swipeactions.status.action.favorite"
|
||||
case .bookmark:
|
||||
return "settings.swipeactions.status.action.bookmark"
|
||||
}
|
||||
}
|
||||
|
||||
public func iconName(isReblogged: Bool = false, isFavorited: Bool = false, isBookmarked: Bool = false) -> String {
|
||||
switch self {
|
||||
case .none:
|
||||
return "slash.circle"
|
||||
case .reply:
|
||||
return "arrowshape.turn.up.left"
|
||||
case .quote:
|
||||
return "quote.bubble"
|
||||
case .boost:
|
||||
return isReblogged ? "arrow.left.arrow.right.circle.fill" : "arrow.left.arrow.right.circle"
|
||||
case .favorite:
|
||||
return isFavorited ? "star.fill" : "star"
|
||||
case .bookmark:
|
||||
return isBookmarked ? "bookmark.fill" : "bookmark"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -40,6 +40,43 @@ public class UserPreferences: ObservableObject {
|
|||
|
||||
@AppStorage("show_second_column_ipad") public var showiPadSecondaryColumn = true
|
||||
|
||||
@AppStorage("swipeactions.status.trailing.right") var _swipeActionsStatusTrailingRight = StatusAction.favorite.rawValue
|
||||
public var swipeActionsStatusTrailingRight: StatusAction {
|
||||
get {
|
||||
StatusAction(rawValue: _swipeActionsStatusTrailingRight) ?? StatusAction.none
|
||||
}
|
||||
set {
|
||||
_swipeActionsStatusTrailingRight = newValue.rawValue
|
||||
}
|
||||
}
|
||||
@AppStorage("swipeactions.status.trailing.left") var _swipeActionsStatusTrailingLeft = StatusAction.boost.rawValue
|
||||
public var swipeActionsStatusTrailingLeft: StatusAction {
|
||||
get {
|
||||
StatusAction(rawValue: _swipeActionsStatusTrailingLeft) ?? StatusAction.none
|
||||
}
|
||||
set {
|
||||
_swipeActionsStatusTrailingLeft = newValue.rawValue
|
||||
}
|
||||
}
|
||||
@AppStorage("swipeactions.status.leading.left") var _swipeActionsStatusLeadingLeft = StatusAction.reply.rawValue
|
||||
public var swipeActionsStatusLeadingLeft: StatusAction {
|
||||
get {
|
||||
StatusAction(rawValue: _swipeActionsStatusLeadingLeft) ?? StatusAction.none
|
||||
}
|
||||
set {
|
||||
_swipeActionsStatusLeadingLeft = newValue.rawValue
|
||||
}
|
||||
}
|
||||
@AppStorage("swipeactions.status.leading.right") var _swipeActionsStatusLeadingRight = StatusAction.none.rawValue
|
||||
public var swipeActionsStatusLeadingRight: StatusAction {
|
||||
get {
|
||||
StatusAction(rawValue: _swipeActionsStatusLeadingRight) ?? StatusAction.none
|
||||
}
|
||||
set {
|
||||
_swipeActionsStatusLeadingRight = newValue.rawValue
|
||||
}
|
||||
}
|
||||
|
||||
public var postVisibility: Models.Visibility {
|
||||
if useInstanceContentSettings {
|
||||
return serverPreferences?.postVisibility ?? .pub
|
||||
|
|
|
@ -85,7 +85,7 @@ public struct StatusRowView: View {
|
|||
.listRowBackground(viewModel.highlightRowColor)
|
||||
.swipeActions(edge: .trailing) {
|
||||
if !viewModel.isCompact {
|
||||
trailinSwipeActions
|
||||
trailingSwipeActions
|
||||
}
|
||||
}
|
||||
.swipeActions(edge: .leading) {
|
||||
|
@ -453,43 +453,88 @@ public struct StatusRowView: View {
|
|||
}
|
||||
|
||||
@ViewBuilder
|
||||
private var trailinSwipeActions: some View {
|
||||
Button {
|
||||
Task {
|
||||
HapticManager.shared.fireHaptic(of: .notification(.success))
|
||||
private var trailingSwipeActions: some View {
|
||||
if preferences.swipeActionsStatusTrailingRight != StatusAction.none {
|
||||
makeSwipeButton(action: preferences.swipeActionsStatusTrailingRight)
|
||||
.tint(theme.tintColor)
|
||||
}
|
||||
if preferences.swipeActionsStatusTrailingLeft != StatusAction.none {
|
||||
makeSwipeButton(action: preferences.swipeActionsStatusTrailingLeft)
|
||||
.tint(.gray)
|
||||
}
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
private var leadingSwipeActions: some View {
|
||||
if preferences.swipeActionsStatusLeadingLeft != StatusAction.none {
|
||||
makeSwipeButton(action: preferences.swipeActionsStatusLeadingLeft)
|
||||
.tint(theme.tintColor)
|
||||
}
|
||||
if preferences.swipeActionsStatusLeadingRight != StatusAction.none {
|
||||
makeSwipeButton(action: preferences.swipeActionsStatusLeadingRight)
|
||||
.tint(.gray)
|
||||
}
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
private func makeSwipeButton(action: StatusAction) -> some View {
|
||||
switch action {
|
||||
case .reply:
|
||||
makeSwipeButtonForRouterPath(action: action, destination: .replyToStatusEditor(status: viewModel.status))
|
||||
case .quote:
|
||||
makeSwipeButtonForRouterPath(action: action, destination: .quoteStatusEditor(status: viewModel.status))
|
||||
case .favorite:
|
||||
makeSwipeButtonForTask(action: action) {
|
||||
if viewModel.isFavorited {
|
||||
await viewModel.unFavorite()
|
||||
} else {
|
||||
await viewModel.favorite()
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Image(systemName: "star")
|
||||
}
|
||||
.tint(.yellow)
|
||||
Button {
|
||||
Task {
|
||||
HapticManager.shared.fireHaptic(of: .notification(.success))
|
||||
case .boost:
|
||||
makeSwipeButtonForTask(action: action) {
|
||||
if viewModel.isReblogged {
|
||||
await viewModel.unReblog()
|
||||
} else {
|
||||
await viewModel.reblog()
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Image(systemName: "arrow.left.arrow.right.circle")
|
||||
case .bookmark:
|
||||
makeSwipeButtonForTask(action: action) {
|
||||
if viewModel.isBookmarked {
|
||||
await viewModel.unbookmark()
|
||||
} else {
|
||||
await
|
||||
viewModel.bookmark()
|
||||
}
|
||||
}
|
||||
case .none:
|
||||
EmptyView()
|
||||
}
|
||||
.tint(theme.tintColor)
|
||||
}
|
||||
|
||||
|
||||
@ViewBuilder
|
||||
private var leadingSwipeActions: some View {
|
||||
private func makeSwipeButtonForRouterPath(action: StatusAction, destination: SheetDestinations) -> some View {
|
||||
Button {
|
||||
HapticManager.shared.fireHaptic(of: .notification(.success))
|
||||
routerPath.presentedSheet = .replyToStatusEditor(status: viewModel.status)
|
||||
routerPath.presentedSheet = destination
|
||||
} label: {
|
||||
Image(systemName: "arrowshape.turn.up.left")
|
||||
Text(action.displayName)
|
||||
Image(systemName: action.iconName(isReblogged: viewModel.isReblogged, isFavorited: viewModel.isFavorited, isBookmarked: viewModel.isBookmarked))
|
||||
.foregroundColor(.red)
|
||||
}
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
private func makeSwipeButtonForTask(action: StatusAction, task: @escaping () async -> Void ) -> some View {
|
||||
Button {
|
||||
Task {
|
||||
HapticManager.shared.fireHaptic(of: .notification(.success))
|
||||
await task()
|
||||
}
|
||||
} label: {
|
||||
Text(action.displayName)
|
||||
Image(systemName: action.iconName(isReblogged: viewModel.isReblogged, isFavorited: viewModel.isFavorited, isBookmarked: viewModel.isBookmarked))
|
||||
}
|
||||
.tint(theme.tintColor)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue