From 6e8ccac89bbb3b5719e8a509658035b389226a21 Mon Sep 17 00:00:00 2001 From: ensan-hcl Date: Sat, 11 Nov 2023 01:35:05 +0900 Subject: [PATCH] Add 'news' section to the home tab and improve design --- MainApp/General/IconNavigationLink.swift | 37 ++++++++ .../DynamicTypeSettingFailureTips.swift | 26 ----- MainApp/Tips/News/TipsNewsSection.swift | 63 +++++++++++++ .../Tips/News/UseContactInfoSettingNews.swift | 32 +++++++ .../Tips/News/UseNextCandidateKeyNews.swift | 20 ++++ MainApp/Tips/News/UseShiftKeyNews.swift | 20 ++++ MainApp/Tips/TipsView.swift | 41 +++----- Resources/Localizable.xcstrings | 94 +++++++++++++++++++ azooKey.xcodeproj/project.pbxproj | 32 ++++++- 9 files changed, 308 insertions(+), 57 deletions(-) create mode 100644 MainApp/General/IconNavigationLink.swift delete mode 100644 MainApp/Tips/Articles/DynamicTypeSettingFailureTips.swift create mode 100644 MainApp/Tips/News/TipsNewsSection.swift create mode 100644 MainApp/Tips/News/UseContactInfoSettingNews.swift create mode 100644 MainApp/Tips/News/UseNextCandidateKeyNews.swift create mode 100644 MainApp/Tips/News/UseShiftKeyNews.swift diff --git a/MainApp/General/IconNavigationLink.swift b/MainApp/General/IconNavigationLink.swift new file mode 100644 index 00000000..e5a9cf56 --- /dev/null +++ b/MainApp/General/IconNavigationLink.swift @@ -0,0 +1,37 @@ +// +// IconNavigationLink.swift +// azooKey +// +// Created by miwa on 2023/11/11. +// Copyright © 2023 DevEn3. All rights reserved. +// + +import SwiftUI + +struct IconNavigationLink: View { + init(_ titleKey: LocalizedStringKey, systemImage: String, imageColor: Color? = nil, destination: Destination) { + self.titleKey = titleKey + self.systemImage = systemImage + self.imageColor = imageColor + self.destination = destination + } + + var titleKey: LocalizedStringKey + var systemImage: String + var imageColor: Color? + var destination: Destination + + var body: some View { + NavigationLink(destination: destination) { + Label( + title: { + Text(titleKey) + }, + icon: { + Image(systemName: systemImage) + .foregroundStyle(imageColor ?? .primary) + .font(.caption) + }) + } + } +} diff --git a/MainApp/Tips/Articles/DynamicTypeSettingFailureTips.swift b/MainApp/Tips/Articles/DynamicTypeSettingFailureTips.swift deleted file mode 100644 index c15e443a..00000000 --- a/MainApp/Tips/Articles/DynamicTypeSettingFailureTips.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// DynamicTypeSettingFailureTips.swift -// MainApp -// -// Created by ensan on 2020/10/19. -// Copyright © 2020 ensan. All rights reserved. -// - -import Foundation -import SwiftUI - -struct DynamicTypeSettingFailureTipsView: View { - var body: some View { - TipsContentView("端末の文字サイズ設定が反映されない") { - TipsContentParagraph { - Text("端末の文字サイズの設定を変更しても、キーボードに表示される文字の大きさが変わらないことがあります。") - Text("一度端末を再起動していただくと設定が反映されます。") - } - - TipsContentParagraph { - Text("azooKeyの設定タブよりキーの文字サイズを設定することが可能です。そちらもお試しください。") - } - - } - } -} diff --git a/MainApp/Tips/News/TipsNewsSection.swift b/MainApp/Tips/News/TipsNewsSection.swift new file mode 100644 index 00000000..92e23111 --- /dev/null +++ b/MainApp/Tips/News/TipsNewsSection.swift @@ -0,0 +1,63 @@ +// +// TipsNewsSection.swift +// azooKey +// +// Created by miwa on 2023/11/11. +// Copyright © 2023 DevEn3. All rights reserved. +// + +import SwiftUI + +struct TipsNewsSection: View { + @AppStorage("read_article_iOS15_service_termination") private var readArticle_iOS15_service_termination = false + @EnvironmentObject private var appStates: MainAppStates + + @MainActor + private var needUseShiftKeySettingNews: Bool { + appStates.englishLayout == .qwerty + } + + @MainActor + private var neadUseNextCandidateKeySettingNews: Bool { + if case .custard = appStates.japaneseLayout, case .custard = appStates.englishLayout { + false + } else { + true + } + } + + var iOS15TerminationNewsViewLabel: some View { + Label( + title: { + Text("iOS15のサポートを終了します") + }, + icon: { + Image(systemName: "exclamationmark.circle.fill") + .foregroundStyle(.red) + .font(.caption) + } + ) + } + var body: some View { + if #unavailable(iOS 16) { + Section("お知らせ") { + NavigationLink(destination: iOS15TerminationNewsView($readArticle_iOS15_service_termination)) { + if !readArticle_iOS15_service_termination { + iOS15TerminationNewsViewLabel + } else { + iOS15TerminationNewsViewLabel.labelStyle(.titleOnly) + } + } + } + } + Section("新機能") { + if needUseShiftKeySettingNews { + IconNavigationLink("シフトキーが使えるようになりました!", systemImage: "shift", imageColor: .orange, destination: UseShiftKeyNews()) + } + if neadUseNextCandidateKeySettingNews { + IconNavigationLink("次候補キーが使えるようになりました!", systemImage: "sparkles", imageColor: .orange, destination: UseNextCandidateKeyNews()) + } + IconNavigationLink("連絡先情報を読み込めるようになりました!", systemImage: "person.text.rectangle", imageColor: .orange, destination: UseContactInfoSettingNews()) + } + } +} diff --git a/MainApp/Tips/News/UseContactInfoSettingNews.swift b/MainApp/Tips/News/UseContactInfoSettingNews.swift new file mode 100644 index 00000000..83cf4f7c --- /dev/null +++ b/MainApp/Tips/News/UseContactInfoSettingNews.swift @@ -0,0 +1,32 @@ +// +// UseContactInfoSettingNews.swift +// azooKey +// +// Created by miwa on 2023/11/11. +// Copyright © 2023 DevEn3. All rights reserved. +// + +import SwiftUI +import class KeyboardViews.SemiStaticStates + +struct UseContactInfoSettingNews: View { + @EnvironmentObject private var appStates: MainAppStates + + var body: some View { + TipsContentView("変換に連絡先データを利用") { + TipsContentParagraph { + Text("「連絡先」アプリのデータを使って、家族や友人、職場の人の名前を素早く入力することができます。") + } + BoolSettingView(.enableContactImport) + + TipsContentParagraph { + if !SemiStaticStates.shared.hasFullAccess { + Text("この機能を利用するには、「フルアクセス」の許可が必要です。詳しくはこちらをお読みください") + NavigationLink("フルアクセスが必要な機能を使う", destination: FullAccessTipsView()) + } + Text("この機能を利用するには、連絡先データの利用の許可が必要です。機能を有効化しようとすると、許可を求める画面が表示されるので、「許可」を選んでください") + } + + } + } +} diff --git a/MainApp/Tips/News/UseNextCandidateKeyNews.swift b/MainApp/Tips/News/UseNextCandidateKeyNews.swift new file mode 100644 index 00000000..c44a4c85 --- /dev/null +++ b/MainApp/Tips/News/UseNextCandidateKeyNews.swift @@ -0,0 +1,20 @@ +// +// UseNextCandidateKeyNews.swift +// azooKey +// +// Created by miwa on 2023/11/11. +// Copyright © 2023 DevEn3. All rights reserved. +// + +import SwiftUI + +struct UseNextCandidateKeyNews: View { + var body: some View { + TipsContentView("シフトキーを使う") { + TipsContentParagraph { + Text("空白キーに「次候補」ボタンを表示するには、次の設定をオンにしてください") + } + BoolSettingView(.useNextCandidateKey) + } + } +} diff --git a/MainApp/Tips/News/UseShiftKeyNews.swift b/MainApp/Tips/News/UseShiftKeyNews.swift new file mode 100644 index 00000000..31b080cb --- /dev/null +++ b/MainApp/Tips/News/UseShiftKeyNews.swift @@ -0,0 +1,20 @@ +// +// UseShiftKeyNews.swift +// azooKey +// +// Created by miwa on 2023/11/10. +// Copyright © 2023 DevEn3. All rights reserved. +// + +import SwiftUI + +struct UseShiftKeyNews: View { + var body: some View { + TipsContentView("シフトキーを使う") { + TipsContentParagraph { + Text("Qwerty英語キーボードでシフトキーを使いたい場合、次の設定をオンにしてください") + } + BoolSettingView(.useShiftKey) + } + } +} diff --git a/MainApp/Tips/TipsView.swift b/MainApp/Tips/TipsView.swift index 10a912aa..c23d2b26 100644 --- a/MainApp/Tips/TipsView.swift +++ b/MainApp/Tips/TipsView.swift @@ -11,12 +11,10 @@ import SwiftUI struct TipsTabView: View { @EnvironmentObject private var appStates: MainAppStates - @AppStorage("read_article_iOS15_service_termination") private var readArticle_iOS15_service_termination = false - var body: some View { NavigationView { Form { - Section(header: Text("キーボードを使えるようにする")) { + Section("キーボードを使えるようにする") { if !appStates.isKeyboardActivated { Text("キーボードを有効化する") .onTapGesture { @@ -25,36 +23,25 @@ struct TipsTabView: View { } NavigationLink("入力方法を選ぶ", destination: SelctInputStyleTipsView()) } - if #unavailable(iOS 16) { - Section(header: Text("お知らせ")) { - HStack { - if !readArticle_iOS15_service_termination { - Image(systemName: "exclamationmark.circle.fill") - .foregroundStyle(.red) - } - NavigationLink("iOS15のサポートを終了します", destination: iOS15TerminationNewsView($readArticle_iOS15_service_termination)) - } - } - } - - Section(header: Text("便利な使い方")) { - NavigationLink("片手モードを使う", destination: OneHandedModeTipsView()) - NavigationLink("カーソルを自由に移動する", destination: CursorMoveTipsView()) - NavigationLink("文頭まで一気に消す", destination: SmoothDeleteTipsView()) - NavigationLink("漢字を拡大表示する", destination: KanjiLargeTextTipsView()) - NavigationLink("大文字に固定する", destination: CapsLockTipsView()) - NavigationLink("タイムスタンプを使う", destination: TemplateSettingTipsView()) - NavigationLink("キーをカスタマイズする", destination: CustomKeyTipsView()) - NavigationLink("フルアクセスが必要な機能を使う", destination: FullAccessTipsView()) + TipsNewsSection() + Section("便利な使い方") { + let imageColor = Color.blue + IconNavigationLink("片手モードを使う", systemImage: "aspectratio", imageColor: imageColor, destination: OneHandedModeTipsView()) + IconNavigationLink("カーソルを自由に移動する", systemImage: "arrowtriangle.left.and.line.vertical.and.arrowtriangle.right", imageColor: imageColor, destination: CursorMoveTipsView()) + IconNavigationLink("文頭まで一気に消す", systemImage: "xmark", imageColor: imageColor, destination: SmoothDeleteTipsView()) + IconNavigationLink("漢字を拡大表示する", systemImage: "plus.magnifyingglass", imageColor: imageColor, destination: KanjiLargeTextTipsView()) + IconNavigationLink("大文字に固定する", systemImage: "capslock.fill", imageColor: imageColor, destination: CapsLockTipsView()) + IconNavigationLink("タイムスタンプを使う", systemImage: "clock", imageColor: imageColor, destination: TemplateSettingTipsView()) + IconNavigationLink("キーをカスタマイズする", systemImage: "hammer", imageColor: imageColor, destination: CustomKeyTipsView()) + IconNavigationLink("フルアクセスが必要な機能を使う", systemImage: "lock.open", imageColor: imageColor, destination: FullAccessTipsView()) if SemiStaticStates.shared.hasFullAccess { - NavigationLink("「ほかのAppからペースト」について", destination: PasteFromOtherAppsPermissionTipsView()) + IconNavigationLink("「ほかのAppからペースト」について", systemImage: "doc.on.clipboard", imageColor: imageColor, destination: PasteFromOtherAppsPermissionTipsView()) } } - Section(header: Text("困ったときは")) { + Section("困ったときは") { NavigationLink("インストール直後、特定のアプリでキーボードが開かない", destination: KeyboardBehaviorIssueAfterInstallTipsView()) NavigationLink("特定のアプリケーションで入力がおかしくなる", destination: UseMarkedTextTipsView()) - NavigationLink("端末の文字サイズ設定が反映されない", destination: DynamicTypeSettingFailureTipsView()) NavigationLink("絵文字や顔文字の変換候補を表示したい", destination: EmojiKaomojiTipsView()) NavigationLink("バグの報告や機能のリクエストをしたい", destination: ContactView()) } diff --git a/Resources/Localizable.xcstrings b/Resources/Localizable.xcstrings index bfbea330..79937292 100644 --- a/Resources/Localizable.xcstrings +++ b/Resources/Localizable.xcstrings @@ -449,6 +449,16 @@ } } }, + "「連絡先」アプリのデータを使って、家族や友人、職場の人の名前を素早く入力することができます。" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You can now quickly input the names of family, friends, and colleagues by using data from the 'Contacts' app." + } + } + } + }, "「連絡先」へのアクセスを許可する必要があります" : { "localizations" : { "en" : { @@ -1057,6 +1067,7 @@ } }, "azooKeyの設定タブよりキーの文字サイズを設定することが可能です。そちらもお試しください。" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1454,6 +1465,16 @@ } } }, + "Qwerty英語キーボードでシフトキーを使いたい場合、次の設定をオンにしてください" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you want to use the Shift key on the Qwerty English keyboard, please turn on the following setting." + } + } + } + }, "unicode変換" : { "extractionState" : "manual", "localizations" : { @@ -3234,6 +3255,26 @@ } } }, + "この機能を利用するには、「フルアクセス」の許可が必要です。詳しくはこちらをお読みください" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To use this feature, 'Full Access' permission is required. Please read more details here." + } + } + } + }, + "この機能を利用するには、連絡先データの利用の許可が必要です。機能を有効化しようとすると、許可を求める画面が表示されるので、「許可」を選んでください" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To utilize this feature, permission to access contact data is necessary. When attempting to enable the function, a screen requesting permission will appear. Please select 'Allow' when prompted." + } + } + } + }, "この行を削除" : { "localizations" : { "en" : { @@ -3460,6 +3501,16 @@ } } }, + "シフトキーが使えるようになりました!" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shift key is now available!" + } + } + } + }, "シフトキーを使う" : { "extractionState" : "manual", "localizations" : { @@ -5130,6 +5181,7 @@ } }, "一度端末を再起動していただくと設定が反映されます。" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -7255,6 +7307,16 @@ } } }, + "新機能" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New Features" + } + } + } + }, "方向" : { "localizations" : { "en" : { @@ -7902,6 +7964,16 @@ } } }, + "次候補キーが使えるようになりました!" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The next candidate key is now available!" + } + } + } + }, "次候補キーを使う" : { "extractionState" : "manual", "localizations" : { @@ -8526,7 +8598,18 @@ } } }, + "空白キーに「次候補」ボタンを表示するには、次の設定をオンにしてください" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To display the 'Next Candidate' button on the space key, please turn on the following setting." + } + } + } + }, "端末の文字サイズの設定を変更しても、キーボードに表示される文字の大きさが変わらないことがあります。" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -8543,6 +8626,7 @@ } }, "端末の文字サイズ設定が反映されない" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -9671,6 +9755,16 @@ } } }, + "連絡先情報を読み込めるようになりました!" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "azooKey can now utilize contact information!" + } + } + } + }, "選ぶ" : { "localizations" : { "en" : { diff --git a/azooKey.xcodeproj/project.pbxproj b/azooKey.xcodeproj/project.pbxproj index 1444fb74..965375b5 100644 --- a/azooKey.xcodeproj/project.pbxproj +++ b/azooKey.xcodeproj/project.pbxproj @@ -153,7 +153,6 @@ 1AED0A612A6D22CB005B87E5 /* AzooKeyUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 1AED0A602A6D22CB005B87E5 /* AzooKeyUtils */; }; 1AF28CE0253C9FFC0012CF94 /* CursorMoveTips.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF28CDF253C9FFC0012CF94 /* CursorMoveTips.swift */; }; 1AF28CE6253CA0F50012CF94 /* KanjiLargeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF28CE5253CA0F50012CF94 /* KanjiLargeText.swift */; }; - 1AF28D00253DA5250012CF94 /* DynamicTypeSettingFailureTips.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF28CFF253DA5250012CF94 /* DynamicTypeSettingFailureTips.swift */; }; 1AF306022A00070000B4DAC3 /* KanaKanjiConverterModule in Frameworks */ = {isa = PBXBuildFile; productRef = 1AF306012A00070000B4DAC3 /* KanaKanjiConverterModule */; }; 1AF616B4256D409E001A0B32 /* MemoryResetSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF616B3256D409E001A0B32 /* MemoryResetSetting.swift */; }; 1AF6784A25CC20B400F3987B /* ThemeTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF6784925CC20B400F3987B /* ThemeTab.swift */; }; @@ -167,6 +166,11 @@ 1AFA57662584815B00477DC2 /* QwertyCustomKeysItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AFA57652584815A00477DC2 /* QwertyCustomKeysItemView.swift */; }; 1AFB68422518C48100C649C4 /* OpenSourceSoftwaresLicenseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AFB68412518C48100C649C4 /* OpenSourceSoftwaresLicenseView.swift */; }; 1AFE773026077E0E0041D74D /* WalkthroughState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AFE772F26077E0E0041D74D /* WalkthroughState.swift */; }; + 5531AA392AFE7C7B00A9642A /* UseShiftKeyNews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5531AA382AFE7C7B00A9642A /* UseShiftKeyNews.swift */; }; + 5531AA3B2AFE7F1400A9642A /* UseNextCandidateKeyNews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5531AA3A2AFE7F1400A9642A /* UseNextCandidateKeyNews.swift */; }; + 5531AA3E2AFE800E00A9642A /* UseContactInfoSettingNews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5531AA3D2AFE800E00A9642A /* UseContactInfoSettingNews.swift */; }; + 5531AA402AFE81FB00A9642A /* TipsNewsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5531AA3F2AFE81FB00A9642A /* TipsNewsSection.swift */; }; + 5531AA422AFE82BE00A9642A /* IconNavigationLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5531AA412AFE82BE00A9642A /* IconNavigationLink.swift */; }; 557D9DFB2ABEE7970028F3A0 /* ContactAuthManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 557D9DFA2ABEE7970028F3A0 /* ContactAuthManager.swift */; }; 557D9DFD2ABEF6560028F3A0 /* ContactImportSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 557D9DFC2ABEF6560028F3A0 /* ContactImportSettingView.swift */; }; 557D9DFF2ABF2B9D0028F3A0 /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 557D9DFE2ABF2B9D0028F3A0 /* InfoPlist.xcstrings */; }; @@ -347,7 +351,6 @@ 1AE70BEA258E5767009B9B8B /* TemplateEditingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateEditingView.swift; sourceTree = ""; }; 1AF28CDF253C9FFC0012CF94 /* CursorMoveTips.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CursorMoveTips.swift; sourceTree = ""; }; 1AF28CE5253CA0F50012CF94 /* KanjiLargeText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KanjiLargeText.swift; sourceTree = ""; }; - 1AF28CFF253DA5250012CF94 /* DynamicTypeSettingFailureTips.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicTypeSettingFailureTips.swift; sourceTree = ""; }; 1AF3060029FE6C2800B4DAC3 /* AzooKeyCore */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = AzooKeyCore; sourceTree = ""; }; 1AF616B3256D409E001A0B32 /* MemoryResetSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoryResetSetting.swift; sourceTree = ""; }; 1AF6784925CC20B400F3987B /* ThemeTab.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeTab.swift; sourceTree = ""; }; @@ -360,6 +363,11 @@ 1AFA57652584815A00477DC2 /* QwertyCustomKeysItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QwertyCustomKeysItemView.swift; sourceTree = ""; }; 1AFB68412518C48100C649C4 /* OpenSourceSoftwaresLicenseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSourceSoftwaresLicenseView.swift; sourceTree = ""; }; 1AFE772F26077E0E0041D74D /* WalkthroughState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalkthroughState.swift; sourceTree = ""; }; + 5531AA382AFE7C7B00A9642A /* UseShiftKeyNews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UseShiftKeyNews.swift; sourceTree = ""; }; + 5531AA3A2AFE7F1400A9642A /* UseNextCandidateKeyNews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UseNextCandidateKeyNews.swift; sourceTree = ""; }; + 5531AA3D2AFE800E00A9642A /* UseContactInfoSettingNews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UseContactInfoSettingNews.swift; sourceTree = ""; }; + 5531AA3F2AFE81FB00A9642A /* TipsNewsSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipsNewsSection.swift; sourceTree = ""; }; + 5531AA412AFE82BE00A9642A /* IconNavigationLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconNavigationLink.swift; sourceTree = ""; }; 557D9DFA2ABEE7970028F3A0 /* ContactAuthManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactAuthManager.swift; sourceTree = ""; }; 557D9DFC2ABEF6560028F3A0 /* ContactImportSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactImportSettingView.swift; sourceTree = ""; }; 557D9DFE2ABF2B9D0028F3A0 /* InfoPlist.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = InfoPlist.xcstrings; sourceTree = ""; }; @@ -536,6 +544,7 @@ children = ( 1A4E09042527390100E7ABE5 /* TipsView.swift */, 1ACEEFE82566601700899DA2 /* TipsViewComponent.swift */, + 5531AA3C2AFE7F2500A9642A /* News */, 1ACEEFE72566600700899DA2 /* Articles */, ); path = Tips; @@ -852,6 +861,7 @@ 1A4A3255262FAAFD00EDAB08 /* CancelableEditor.swift */, 1AFA575F2584810800477DC2 /* Focus.swift */, 1A3022AE2631663200E4495C /* OnEnterBackground.swift */, + 5531AA412AFE82BE00A9642A /* IconNavigationLink.swift */, 1AFA4BB2257E169100477DC2 /* PasteButton.swift */, 1AD4454226AA8E93003CF854 /* LargeButtonStyle.swift */, 1A3A160D2528C70800A5BA4F /* HeaderLogoView.swift */, @@ -875,7 +885,6 @@ 1AFA57592583051500477DC2 /* CapslockTips.swift */, 1AC8A5812594EF6500B71E5A /* TemplateSettingTipsView.swift */, 1AA346C72568294300B41A16 /* CustomKeyTipsView.swift */, - 1AF28CFF253DA5250012CF94 /* DynamicTypeSettingFailureTips.swift */, 1A2B2B5E299480B40048332A /* UseMarkedTextTipsView.swift */, 1A2B2B602994846B0048332A /* KeyboardBehaviorIssueAfterInstallTipsView.swift */, 1A9B0A2C25635090004203BB /* EmojiKaomojiView.swift */, @@ -931,6 +940,17 @@ path = Theme; sourceTree = ""; }; + 5531AA3C2AFE7F2500A9642A /* News */ = { + isa = PBXGroup; + children = ( + 5531AA3D2AFE800E00A9642A /* UseContactInfoSettingNews.swift */, + 5531AA382AFE7C7B00A9642A /* UseShiftKeyNews.swift */, + 5531AA3A2AFE7F1400A9642A /* UseNextCandidateKeyNews.swift */, + 5531AA3F2AFE81FB00A9642A /* TipsNewsSection.swift */, + ); + path = News; + sourceTree = ""; + }; 557D9DF92ABEE78D0028F3A0 /* ContactImportSetting */ = { isa = PBXGroup; children = ( @@ -1293,6 +1313,7 @@ 1AB8C3FE25E35B3C00D39BC5 /* ManageCustardView.swift in Sources */, 1AAC102729B25D060020BDE9 /* KeyboardHeightSettingView.swift in Sources */, 1AFE773026077E0E0041D74D /* WalkthroughState.swift in Sources */, + 5531AA392AFE7C7B00A9642A /* UseShiftKeyNews.swift in Sources */, 1AFA4BB3257E169100477DC2 /* PasteButton.swift in Sources */, 1A7B147325F6602E00BE2472 /* CustomizeTabWalkthrough.swift in Sources */, 1AB8C3DE25E2854C00D39BC5 /* CodableActionDataEditor.swift in Sources */, @@ -1309,9 +1330,11 @@ 1AE102CF25D3713C00CA7277 /* TrimmingView.swift in Sources */, 1A9B0A5025642C38004203BB /* EnableAzooKeyViewComponent.swift in Sources */, 1AD4454626AAB8E4003CF854 /* DisclosuringList.swift in Sources */, + 5531AA402AFE81FB00A9642A /* TipsNewsSection.swift in Sources */, 1AB5076B255ECC3C003C0BF2 /* Trie.swift in Sources */, 1A2B2B612994846B0048332A /* KeyboardBehaviorIssueAfterInstallTipsView.swift in Sources */, 1A4A3256262FAAFD00EDAB08 /* CancelableEditor.swift in Sources */, + 5531AA3E2AFE800E00A9642A /* UseContactInfoSettingNews.swift in Sources */, 1A3DC1CA2500D44B002CAA93 /* ContentView.swift in Sources */, 1AF6A54725FCF1240037D5ED /* OneHandedModeTips.swift in Sources */, 1AB50760255EC23C003C0BF2 /* AdditionalDictManageView.swift in Sources */, @@ -1322,6 +1345,7 @@ 1A4057DF255843330073C6F7 /* BoolSettingView.swift in Sources */, 1AC8A5822594EF6500B71E5A /* TemplateSettingTipsView.swift in Sources */, 1A3ACF1725FB78BF007E9938 /* ContainerInternalSetting.swift in Sources */, + 5531AA3B2AFE7F1400A9642A /* UseNextCandidateKeyNews.swift in Sources */, 1A9218DE2550FB9C005F45C4 /* SmoothDeleteTipsView.swift in Sources */, 1A12E25825C4484200316009 /* DataUpdateView.swift in Sources */, 1A3A160E2528C70800A5BA4F /* HeaderLogoView.swift in Sources */, @@ -1339,7 +1363,6 @@ 1A5C7EAC25F36A6E00A7CBA8 /* PreferredLanguageSettingView.swift in Sources */, 1AE1023625D0C99200CA7277 /* PhotoPicker.swift in Sources */, 1A2C293926273E9900DFE465 /* DraggableView.swift in Sources */, - 1AF28D00253DA5250012CF94 /* DynamicTypeSettingFailureTips.swift in Sources */, 1AE1025625D1788300CA7277 /* Capture.swift in Sources */, 1A10D7F825E4E8D30095CB67 /* CustardInformationView.swift in Sources */, 1AD4454326AA8E93003CF854 /* LargeButtonStyle.swift in Sources */, @@ -1351,6 +1374,7 @@ 1AE70BE1258DB4B9009B9B8B /* TemplateListView.swift in Sources */, 1A855C7829EA8A6400DD3702 /* ShareWordView.swift in Sources */, 1AF616B4256D409E001A0B32 /* MemoryResetSetting.swift in Sources */, + 5531AA422AFE82BE00A9642A /* IconNavigationLink.swift in Sources */, 1AE1913625D4A3370044EE4B /* ThemeShareView.swift in Sources */, 557D9DFD2ABEF6560028F3A0 /* ContactImportSettingView.swift in Sources */, 1AFA57602584810800477DC2 /* Focus.swift in Sources */,