Add app icon shortcut

This commit is contained in:
Ilya Laktyushin 2024-04-20 22:20:01 +04:00
parent e32b2d3d09
commit 4956d1a79a
12 changed files with 58 additions and 25 deletions

View File

@ -0,0 +1,24 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "appicon.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,12 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "ic_camera.pdf"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -1,7 +1,7 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"provides-namespace" : true

View File

@ -12102,3 +12102,5 @@ Sorry for the inconvenience.";
"Channel.AdminLog.MessageManyDeleted.Messages_any" = "%@ messages";
"Channel.AdminLog.MessageManyDeleted.ShowAll" = "show all";
"Channel.AdminLog.MessageManyDeleted.HideAll" = "hide all";
"Shortcut.AppIcon" = "Edit App Icon";

View File

@ -338,7 +338,7 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry {
case let .iconItem(theme, strings, icons, isPremium, value):
return ThemeSettingsAppIconItem(theme: theme, strings: strings, sectionId: self.section, icons: icons, isPremium: isPremium, currentIconName: value, updated: { icon in
arguments.selectAppIcon(icon)
})
}, tag: ThemeSettingsEntryTag.icon)
case .powerSaving:
return ItemListDisclosureItem(presentationData: presentationData, icon: nil, title: presentationData.strings.AppearanceSettings_Animations, label: "", labelStyle: .text, sectionId: self.section, style: .blocks, disclosureStyle: .arrow, action: {
arguments.openPowerSavingSettings()

View File

@ -366,7 +366,6 @@ public class ChatMessageActionBubbleContentNode: ChatMessageBubbleContentNode {
let baseBackgroundFrame = labelFrame.offsetBy(dx: 0.0, dy: -11.0)
if var rect = strongSelf.labelNode.textNode.cachedLayout?.allAttributeRects(name: TelegramTextAttributes.Button).first?.1 {
rect = rect.insetBy(dx: -2.0, dy: 2.0).offsetBy(dx: 0.0, dy: 1.0 - UIScreenPixel)
let highlightNode: LinkHighlightingNode

View File

@ -2379,6 +2379,8 @@ private func extractAccountManagerState(records: AccountRecordsView<TelegramAcco
self.openChatWhenReady(accountId: nil, peerId: context.context.account.peerId, threadId: nil, storyId: nil)
case .account:
context.switchAccount()
case .appIcon:
context.openAppIcon()
}
}
}

View File

@ -947,6 +947,10 @@ final class AuthorizedApplicationContext {
self.rootController.openRootCamera()
}
func openAppIcon() {
self.rootController.openAppIcon()
}
func switchAccount() {
let _ = (activeAccountsAndPeers(context: self.context)
|> take(1)

View File

@ -9,6 +9,7 @@ enum ApplicationShortcutItemType: String {
case camera
case savedMessages
case account
case appIcon
}
struct ApplicationShortcutItem: Equatable {
@ -32,6 +33,8 @@ extension ApplicationShortcutItem {
icon = UIApplicationShortcutIcon(templateImageName: "Shortcuts/SavedMessages")
case .account:
icon = UIApplicationShortcutIcon(templateImageName: "Shortcuts/Account")
case .appIcon:
icon = UIApplicationShortcutIcon(templateImageName: "Shortcuts/AppIcon")
}
return UIApplicationShortcutItem(type: self.type.rawValue, localizedTitle: self.title, localizedSubtitle: self.subtitle, icon: icon, userInfo: nil)
}
@ -45,18 +48,12 @@ func applicationShortcutItems(strings: PresentationStrings, otherAccountName: St
ApplicationShortcutItem(type: .savedMessages, title: strings.Conversation_SavedMessages, subtitle: nil),
ApplicationShortcutItem(type: .account, title: strings.Shortcut_SwitchAccount, subtitle: otherAccountName)
]
} else if DeviceAccess.isCameraAccessAuthorized() {
return [
ApplicationShortcutItem(type: .search, title: strings.Common_Search, subtitle: nil),
ApplicationShortcutItem(type: .compose, title: strings.Compose_NewMessage, subtitle: nil),
ApplicationShortcutItem(type: .camera, title: strings.Camera_Title, subtitle: nil),
ApplicationShortcutItem(type: .savedMessages, title: strings.Conversation_SavedMessages, subtitle: nil)
]
} else {
return [
ApplicationShortcutItem(type: .search, title: strings.Common_Search, subtitle: nil),
ApplicationShortcutItem(type: .compose, title: strings.Compose_NewMessage, subtitle: nil),
ApplicationShortcutItem(type: .savedMessages, title: strings.Conversation_SavedMessages, subtitle: nil)
ApplicationShortcutItem(type: .savedMessages, title: strings.Conversation_SavedMessages, subtitle: nil),
ApplicationShortcutItem(type: .appIcon, title: strings.Shortcut_AppIcon, subtitle: nil)
]
}
}

View File

@ -273,6 +273,23 @@ public final class TelegramRootController: NavigationController, TelegramRootCon
presentedLegacyShortcutCamera(context: self.context, saveCapturedMedia: false, saveEditedPhotos: false, mediaGrouping: true, parentController: controller)
}
public func openAppIcon() {
guard let rootTabController = self.rootTabController else {
return
}
self.popToRoot(animated: false)
if let index = rootTabController.controllers.firstIndex(where: { $0 is PeerInfoScreenImpl }) {
rootTabController.selectedIndex = index
}
let themeController = themeSettingsController(context: self.context, focusOnItemTag: .icon)
var controllers: [UIViewController] = Array(self.viewControllers.prefix(1))
controllers.append(themeController)
self.setViewControllers(controllers, animated: true)
}
@discardableResult
public func openStoryCamera(customTarget: EnginePeer.Id?, transitionIn: StoryCameraTransitionIn?, transitionedIn: @escaping () -> Void, transitionOut: @escaping (Stories.PendingTarget?, Bool) -> StoryCameraTransitionOut?) -> StoryCameraTransitionInCoordinator? {
guard let controller = self.viewControllers.last as? ViewController else {