From bc80ba6bed467a0b1d21c70dc0b957bff160740c Mon Sep 17 00:00:00 2001 From: Takasur Azeem Date: Sun, 1 Oct 2023 21:39:22 +0500 Subject: [PATCH 1/3] Translation init Translation init Add comments for translation. Localize Urdu Update localizations for Urdu Update project.pbxproj Update project.pbxproj Recommended project settings. Update QuranDataDependencyContainer.swift Fix warning Localized the PDF. Fix date text alignment --- QuranMajeed.xcodeproj/project.pbxproj | 20 +- .../xcshareddata/swiftpm/Package.resolved | 35 +-- .../xcschemes/QuranMajeed.xcscheme | 90 ++++++ QuranMajeed/Localizable.xcstrings | 257 ++++++++++++++++++ .../View/FlexibleViewContainerSettings.swift | 2 + .../Quiz/Main/Model/WordForWordsMeaning.swift | 2 +- .../Quiz/Main/View/SelectedSurahView.swift | 2 +- QuranMajeed/Quiz/Main/View/SuraListView.swift | 2 +- .../Quiz/Main/View/VerseListView.swift | 3 +- .../PDFPreview/Utility/PDFGenerator.swift | 49 ++-- .../QuranDataDependencyContainer.swift | 2 +- 11 files changed, 403 insertions(+), 61 deletions(-) create mode 100644 QuranMajeed.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme create mode 100644 QuranMajeed/Localizable.xcstrings diff --git a/QuranMajeed.xcodeproj/project.pbxproj b/QuranMajeed.xcodeproj/project.pbxproj index dc58b83..b1758d6 100644 --- a/QuranMajeed.xcodeproj/project.pbxproj +++ b/QuranMajeed.xcodeproj/project.pbxproj @@ -66,8 +66,8 @@ F9D60D332A77E01300701635 /* PDFGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D60D322A77E01300701635 /* PDFGenerator.swift */; }; F9D60D362A7852F400701635 /* PDFDocument+Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D60D352A7852F400701635 /* PDFDocument+Transferable.swift */; }; F9D60D392A78534B00701635 /* PDFKitView+UIViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D60D382A78534B00701635 /* PDFKitView+UIViewRepresentable.swift */; }; + F9D90A4F2ACD850000CD8FD4 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F9D90A4E2ACD850000CD8FD4 /* Localizable.xcstrings */; }; F9F11E0C2AC4D66800100507 /* FlexibleViewContainerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F11E0B2AC4D66800100507 /* FlexibleViewContainerViewModel.swift */; }; - F9F11E0E2AC4D6A200100507 /* FlexibleViewContainerSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F11E0D2AC4D6A200100507 /* FlexibleViewContainerSettings.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -104,7 +104,6 @@ F952CFD12A96D6BA0039478F /* String+size.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+size.swift"; sourceTree = ""; }; F952CFD32A96D6E50039478F /* NSAttributedString+size.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSAttributedString+size.swift"; sourceTree = ""; }; F96002A82ABA48C7008C16D5 /* GenericDataSource */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = GenericDataSource; path = ../../../../Documents/GitHub/GenericDataSource; sourceTree = ""; }; - F96002A92ABA4FD0008C16D5 /* quran-ios */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = "quran-ios"; path = "../../../../Documents/GitHub/quran-ios"; sourceTree = ""; }; F96447792AB454F200DB5412 /* QuranRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuranRepository.swift; sourceTree = ""; }; F964477B2AB4561900DB5412 /* MainQuranRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainQuranRepository.swift; sourceTree = ""; }; F964477E2AB457AE00DB5412 /* QuranService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuranService.swift; sourceTree = ""; }; @@ -135,8 +134,8 @@ F9D60D322A77E01300701635 /* PDFGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PDFGenerator.swift; sourceTree = ""; }; F9D60D352A7852F400701635 /* PDFDocument+Transferable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PDFDocument+Transferable.swift"; sourceTree = ""; }; F9D60D382A78534B00701635 /* PDFKitView+UIViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PDFKitView+UIViewRepresentable.swift"; sourceTree = ""; }; + F9D90A4E2ACD850000CD8FD4 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; F9F11E0B2AC4D66800100507 /* FlexibleViewContainerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlexibleViewContainerViewModel.swift; sourceTree = ""; }; - F9F11E0D2AC4D6A200100507 /* FlexibleViewContainerSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlexibleViewContainerSettings.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -322,7 +321,6 @@ F9D60CFF2A76C69D00701635 /* QuranMajeed */ = { isa = PBXGroup; children = ( - F96002A92ABA4FD0008C16D5 /* quran-ios */, F96002A82ABA48C7008C16D5 /* GenericDataSource */, F9A105312AB31BD2008FA0DE /* QuranMajeed */, F9D60D0E2A76C6AC00701635 /* Quiz */, @@ -335,6 +333,7 @@ F9D60D242A76C6EF00701635 /* fonts */, F9D60D042A76C69E00701635 /* Assets.xcassets */, F9D60D062A76C69E00701635 /* Preview Content */, + F9D90A4E2ACD850000CD8FD4 /* Localizable.xcstrings */, ); path = QuranMajeed; sourceTree = ""; @@ -471,7 +470,6 @@ children = ( F91766492AC3A3DC00792D2F /* _FlexibleView.swift */, F91766482AC3A3DC00792D2F /* FlexibleViewContainer.swift */, - F9F11E0D2AC4D6A200100507 /* FlexibleViewContainerSettings.swift */, F91766472AC3A3DC00792D2F /* FlexibleView.swift */, F917664A2AC3A3DC00792D2F /* SizeReader.swift */, ); @@ -546,6 +544,7 @@ BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1500; LastUpgradeCheck = 1500; + ORGANIZATIONNAME = Islam; TargetAttributes = { F950FAD72AB4BA0000CB45B5 = { CreatedOnToolsVersion = 15.0; @@ -564,6 +563,9 @@ knownRegions = ( en, Base, + ar, + ur, + "ur-Arab-PK", ); mainGroup = F9D60CF42A76C69D00701635; packageReferences = ( @@ -603,6 +605,7 @@ F94C11C12AB2986D004BAD10 /* Jameel Noori Nastaleeq Regular.ttf in Resources */, F992EBA92AB3CC1A00649632 /* ScheherazadeNew-Regular.ttf in Resources */, F952CFC92A90273C0039478F /* Quran_ur.json in Resources */, + F9D90A4F2ACD850000CD8FD4 /* Localizable.xcstrings in Resources */, F9D60D052A76C69E00701635 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -637,7 +640,6 @@ F952CFD42A96D6E50039478F /* NSAttributedString+size.swift in Sources */, F96447852AB466CC00DB5412 /* QuranProvider.swift in Sources */, F9D60D152A76C6AC00701635 /* QuizViewModel.swift in Sources */, - F9F11E0E2AC4D6A200100507 /* FlexibleViewContainerSettings.swift in Sources */, F9D60D332A77E01300701635 /* PDFGenerator.swift in Sources */, F9D60D172A76C6AC00701635 /* QuizView.swift in Sources */, F91839622AB7D0BA00E4D45B /* LoggingAnalyticsLibrary.swift in Sources */, @@ -723,6 +725,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -770,7 +773,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -785,6 +788,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -826,7 +830,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; diff --git a/QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 9983125..81184fd 100644 --- a/QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/groue/GRDB.swift", "state": { "branch": null, - "revision": "ce63f697ed381383041d245b185af3c501de8bef", - "version": "6.18.0" + "revision": "458b7211df26cc39b0283aa6dceeebbfe2181aa6", + "version": "6.19.0" } }, { @@ -28,6 +28,15 @@ "version": null } }, + { + "package": "QuranEngine", + "repositoryURL": "https://github.com/quran/quran-ios", + "state": { + "branch": "main", + "revision": "af9cbdc7278cc3247e7ca417239556db0132285e", + "version": null + } + }, { "package": "AsyncAlgorithms", "repositoryURL": "https://github.com/apple/swift-async-algorithms", @@ -42,8 +51,8 @@ "repositoryURL": "https://github.com/apple/swift-collections", "state": { "branch": null, - "revision": "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version": "1.0.4" + "revision": "a902f1823a7ff3c9ab2fba0f992396b948eda307", + "version": "1.0.5" } }, { @@ -55,24 +64,6 @@ "version": "1.5.3" } }, - { - "package": "swift-snapshot-testing", - "repositoryURL": "https://github.com/pointfreeco/swift-snapshot-testing.git", - "state": { - "branch": null, - "revision": "696b86a6d151578bca7c1a2a3ed419a5f834d40f", - "version": "1.13.0" - } - }, - { - "package": "swift-syntax", - "repositoryURL": "https://github.com/apple/swift-syntax.git", - "state": { - "branch": null, - "revision": "74203046135342e4a4a627476dd6caf8b28fe11b", - "version": "509.0.0" - } - }, { "package": "WhatsNewKit", "repositoryURL": "https://github.com/SvenTiigi/WhatsNewKit.git", diff --git a/QuranMajeed.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme b/QuranMajeed.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme new file mode 100644 index 0000000..118104f --- /dev/null +++ b/QuranMajeed.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/QuranMajeed/Localizable.xcstrings b/QuranMajeed/Localizable.xcstrings new file mode 100644 index 0000000..58d65ff --- /dev/null +++ b/QuranMajeed/Localizable.xcstrings @@ -0,0 +1,257 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "%lld" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" + } + }, + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" + } + } + } + }, + "Ayah Selection" : { + "comment" : "Ayah is a noun, but can be translated in Urdu and Arabic and in some other languages as well.", + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "آیت کا انتخاب" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "منتخب سورة" + } + } + } + }, + "Date:" : { + "comment" : "The date text, not the today's date.", + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "بتاریخ:" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "بتاریخ:" + } + } + } + }, + "Name: ____________________" : { + "comment" : "Name of the student", + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "نام طالب علم: ____________________" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "نام طالب علم: ____________________" + } + } + } + }, + "PDF" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "ڈاکیومنٹ" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "ڈاکیومنٹ" + } + } + } + }, + "PDF Preview" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "ڈاکیومنٹ" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "ڈاکیومنٹ" + } + } + } + }, + "Prepare Quiz" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "کوئز تیار کریں۔" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "کوئز تیار کریں۔" + } + } + } + }, + "Select Surah" : { + "comment" : "Sura is a noun, but can be translated in Urdu and Arabic and in some other languages as well.", + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "سورہ منتخب کریں۔" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "سورہ منتخب کریں۔" + } + } + } + }, + "Select verses for translation" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "ترجمہ کے لیے آیات کا انتخاب کریں۔" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "ترجمہ کے لیے آیات کا انتخاب کریں۔" + } + } + } + }, + "Select verses for words meaning" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "الفاظ کے معنی کے لیے آیات کا انتخاب کریں۔" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "الفاظ کے معنی کے لیے آیات کا انتخاب کریں۔" + } + } + } + }, + "Selected Surah" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "منتخب سورة" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "منتخب سورة" + } + } + } + }, + "Selected verses for translation" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "ترجمہ کے لیے منتخب آیات۔" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "ترجمہ کے لیے منتخب آیات۔" + } + } + } + }, + "Selected verses for words meaning" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "الفاظ کے معنی کے لیے منتخب آیات۔" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "الفاظ کے معنی کے لیے منتخب آیات۔" + } + } + } + }, + "Translate the following verses" : { + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "درج زیل آیات ترجمہ لکھیں:" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "درج زیل آیات ترجمہ لکھیں:" + } + } + } + }, + "Weekly Test" : { + "comment" : "Middle heading", + "localizations" : { + "ur" : { + "stringUnit" : { + "state" : "translated", + "value" : "سلسلہ وار ٹیسٹ" + } + }, + "ur-Arab-PK" : { + "stringUnit" : { + "state" : "translated", + "value" : "سلسلہ وار ٹیسٹ" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/QuranMajeed/Quiz/CustomComponents/FlexibleLayout/View/FlexibleViewContainerSettings.swift b/QuranMajeed/Quiz/CustomComponents/FlexibleLayout/View/FlexibleViewContainerSettings.swift index 3dd4c1b..3167bb3 100644 --- a/QuranMajeed/Quiz/CustomComponents/FlexibleLayout/View/FlexibleViewContainerSettings.swift +++ b/QuranMajeed/Quiz/CustomComponents/FlexibleLayout/View/FlexibleViewContainerSettings.swift @@ -7,6 +7,7 @@ import SwiftUI +/* THE FILE REFERENCE IS REMOVED TO KEEP DIRECTORY CLEAN */ struct FlexibleViewContainerSettings: View { @ObservedObject var viewModel: FlexibleViewContainer.ViewModel let alignmentName: [String] = ["leading", "center", "trailing"] @@ -53,3 +54,4 @@ struct FlexibleViewContainerSettings: View { .padding() } } + diff --git a/QuranMajeed/Quiz/Main/Model/WordForWordsMeaning.swift b/QuranMajeed/Quiz/Main/Model/WordForWordsMeaning.swift index 7df9bfd..d5b63e3 100644 --- a/QuranMajeed/Quiz/Main/Model/WordForWordsMeaning.swift +++ b/QuranMajeed/Quiz/Main/Model/WordForWordsMeaning.swift @@ -19,7 +19,7 @@ struct WordForWordsMeaning: Identifiable, Hashable, Comparable, Equatable { var id: Double let word: String - var isSelected = true + var isSelected = false func hash(into hasher: inout Hasher) { hasher.combine(word) diff --git a/QuranMajeed/Quiz/Main/View/SelectedSurahView.swift b/QuranMajeed/Quiz/Main/View/SelectedSurahView.swift index 70131dc..7d62dcd 100644 --- a/QuranMajeed/Quiz/Main/View/SelectedSurahView.swift +++ b/QuranMajeed/Quiz/Main/View/SelectedSurahView.swift @@ -12,7 +12,7 @@ import QuranKit struct SelectedSurahView: View { @ObservedObject var viewModel: QuizView.ViewModel var body: some View { - Section("Selected Surah") { + Section(header: Text("Selected Surah")) { NavigationLink(value: viewModel.suras) { VStack { SuraNameView(for: viewModel.selectedSurah) diff --git a/QuranMajeed/Quiz/Main/View/SuraListView.swift b/QuranMajeed/Quiz/Main/View/SuraListView.swift index c22fb68..7291e4b 100644 --- a/QuranMajeed/Quiz/Main/View/SuraListView.swift +++ b/QuranMajeed/Quiz/Main/View/SuraListView.swift @@ -31,7 +31,7 @@ struct SuraListView: View { presentationMode.wrappedValue.dismiss() } } - .navigationTitle("Select Sura") + .navigationTitle(Text("Select Surah", comment: "Sura is a noun, but can be translated in Urdu and Arabic and in some other languages as well.")) .searchable(text: $searchText) } } diff --git a/QuranMajeed/Quiz/Main/View/VerseListView.swift b/QuranMajeed/Quiz/Main/View/VerseListView.swift index 3fe8b5a..7210278 100644 --- a/QuranMajeed/Quiz/Main/View/VerseListView.swift +++ b/QuranMajeed/Quiz/Main/View/VerseListView.swift @@ -36,7 +36,7 @@ struct VerseListView: View { .multilineTextAlignment(.trailing) } } - .navigationTitle("Ayah Selection") + .navigationTitle(Text("Ayah Selection", comment: "Ayah is a noun, but can be translated in Urdu and Arabic and in some other languages as well.")) .environment(\.editMode, .constant(.active)) .onAppear { selection = Set(selectedVerses) @@ -53,6 +53,7 @@ struct VerseListView: View { struct VerseListView_Previews: PreviewProvider { static var previews: some View { ContentPreview() + .environment(\.locale, .init(identifier: "ur")) } } diff --git a/QuranMajeed/Quiz/PDFPreview/Utility/PDFGenerator.swift b/QuranMajeed/Quiz/PDFPreview/Utility/PDFGenerator.swift index 8520cbf..82213c6 100644 --- a/QuranMajeed/Quiz/PDFPreview/Utility/PDFGenerator.swift +++ b/QuranMajeed/Quiz/PDFPreview/Utility/PDFGenerator.swift @@ -6,6 +6,8 @@ // import PDFKit +import Foundation +import SwiftUI class PDFGenerator { init( @@ -237,11 +239,11 @@ class PDFGenerator { let theOpeningText = "بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ" let rightHeadingText = "امن ترجمةالقرآن کلاس" let leftHeadingText = "جامع مسجد امن واپڈا ٹاؤن گوجراںوالہ" - let belowOpeningText = "سلسلہ وار ٹیسٹ" - let studentNameText = "نام طالب علم:" + let belowOpeningText = NSLocalizedString("Weekly Test", comment: "Middle heading") + let studentNameText = NSLocalizedString("Name: ____________________", comment: "") // "نام طالب علم:" let nameUnderScores = Array(repeating: "_", count: 20).reduce("", +) - let dateText = "بتاریخ:" - let translateFollowingAyahsText = "درج زیل آیات ترجمہ لکھیں:" + let dateText = NSLocalizedString("Date:", comment: "") + let translateFollowingAyahsText = NSLocalizedString("Translate the following verses", comment: "") // MARK: - MetaData let pdfMetaData: [CFString: String] @@ -350,33 +352,28 @@ extension PDFGenerator { ), withAttributes: nameFieldAttributes ) - nameUnderScores.draw( - at: CGPoint( - x: pageWidth - studentNameTextWidth - (nameUnderScores.width(usingFont: .boldSystemFont(ofSize: 14)) * 1.10), - y: studentNameRowYPos - ), - withAttributes: nameFieldAttributes - ) - dateText.draw( - at: CGPoint( - x: dateTextXPos, - y: studentNameRowYPos - ), - withAttributes: nameFieldAttributes - ) } - + /* + "\(dateText) \(date)".draw( + at: CGPoint( + x: dateTextXPos, + y: studentNameRowYPos + ), + withAttributes: nameFieldAttributes + ) + */ private func drawDateField() { - let dateFieldAttributes = [ - NSAttributedString.Key.font: nameAndDateTextFont, - NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue - ] as [NSAttributedString.Key : Any] - date.draw( + let fullText = "\(dateText) \(date)" + let dateRange = (fullText as NSString).range(of: date) + let attributedString = NSMutableAttributedString(string: fullText) + attributedString.addAttribute(.font, value: nameAndDateTextFont, range: NSMakeRange(0, attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: dateRange) + + attributedString.draw( at: CGPoint( x: 15, y: studentNameRowYPos - ), - withAttributes: dateFieldAttributes + ) ) } diff --git a/QuranMajeed/QuranMajeed/Quran/DependencyContainer/QuranDataDependencyContainer.swift b/QuranMajeed/QuranMajeed/Quran/DependencyContainer/QuranDataDependencyContainer.swift index fe45796..de64cd9 100644 --- a/QuranMajeed/QuranMajeed/Quran/DependencyContainer/QuranDataDependencyContainer.swift +++ b/QuranMajeed/QuranMajeed/Quran/DependencyContainer/QuranDataDependencyContainer.swift @@ -17,7 +17,7 @@ struct QuranDataDependencyContainer { } private func makeQuranService() throws -> QuranService { - try MainQuranService(providerForQuran: providerForQuran) + MainQuranService(providerForQuran: providerForQuran) } private let providerForQuran: QuranProvider From 0f90a2c69e757c62ddc095af25c8e07ec2602d8a Mon Sep 17 00:00:00 2001 From: Takasur Azeem Date: Fri, 20 Oct 2023 05:04:15 +0500 Subject: [PATCH 2/3] Change project name. --- .../project.pbxproj | 50 +++++++++---------- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/swiftpm/Package.resolved | 0 .../xcschemes/QuranMajeed.xcscheme | 24 ++++----- 6 files changed, 37 insertions(+), 37 deletions(-) rename {QuranMajeed.xcodeproj => Al-Tanzeel.xcodeproj}/project.pbxproj (96%) rename {QuranMajeed.xcodeproj => Al-Tanzeel.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) rename {QuranMajeed.xcodeproj => Al-Tanzeel.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {QuranMajeed.xcodeproj => Al-Tanzeel.xcodeproj}/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {QuranMajeed.xcodeproj => Al-Tanzeel.xcodeproj}/project.xcworkspace/xcshareddata/swiftpm/Package.resolved (100%) rename {QuranMajeed.xcodeproj => Al-Tanzeel.xcodeproj}/xcshareddata/xcschemes/QuranMajeed.xcscheme (80%) diff --git a/QuranMajeed.xcodeproj/project.pbxproj b/Al-Tanzeel.xcodeproj/project.pbxproj similarity index 96% rename from QuranMajeed.xcodeproj/project.pbxproj rename to Al-Tanzeel.xcodeproj/project.pbxproj index b1758d6..6bf5fae 100644 --- a/QuranMajeed.xcodeproj/project.pbxproj +++ b/Al-Tanzeel.xcodeproj/project.pbxproj @@ -94,8 +94,9 @@ F918394C2AB7B69900E4D45B /* SuraNameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuraNameView.swift; sourceTree = ""; }; F91839612AB7D0BA00E4D45B /* LoggingAnalyticsLibrary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggingAnalyticsLibrary.swift; sourceTree = ""; }; F91839652AB7D98D00E4D45B /* VerseListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerseListView.swift; sourceTree = ""; }; + F936509C2AE1FB3C007773CE /* GenericDataSource */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = GenericDataSource; path = ../../../../Documents/GitHub/GenericDataSource; sourceTree = ""; }; F94C11C32AB2F962004BAD10 /* AppDependencyContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDependencyContainer.swift; sourceTree = ""; }; - F950FAD82AB4BA0000CB45B5 /* QuranMajeedTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QuranMajeedTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F950FAD82AB4BA0000CB45B5 /* Al-TanzeelTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Al-TanzeelTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; F950FAE12AB4BA6400CB45B5 /* QuranMajeedTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "QuranMajeedTests-Bridging-Header.h"; sourceTree = ""; }; F950FAE22AB4BA6400CB45B5 /* SurasTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SurasTests.swift; sourceTree = ""; }; F952CFC82A90273C0039478F /* Quran_ur.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Quran_ur.json; sourceTree = ""; }; @@ -103,7 +104,6 @@ F952CFCB2A90425D0039478F /* Jameel Noori Nastaleeq Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jameel Noori Nastaleeq Regular.ttf"; sourceTree = ""; }; F952CFD12A96D6BA0039478F /* String+size.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+size.swift"; sourceTree = ""; }; F952CFD32A96D6E50039478F /* NSAttributedString+size.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSAttributedString+size.swift"; sourceTree = ""; }; - F96002A82ABA48C7008C16D5 /* GenericDataSource */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = GenericDataSource; path = ../../../../Documents/GitHub/GenericDataSource; sourceTree = ""; }; F96447792AB454F200DB5412 /* QuranRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuranRepository.swift; sourceTree = ""; }; F964477B2AB4561900DB5412 /* MainQuranRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainQuranRepository.swift; sourceTree = ""; }; F964477E2AB457AE00DB5412 /* QuranService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuranService.swift; sourceTree = ""; }; @@ -118,7 +118,7 @@ F992EBA62AB3CC1A00649632 /* ScheherazadeNew-SemiBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ScheherazadeNew-SemiBold.ttf"; sourceTree = ""; }; F992EBA72AB3CC1A00649632 /* ScheherazadeNew-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ScheherazadeNew-Bold.ttf"; sourceTree = ""; }; F992EBA82AB3CC1A00649632 /* ScheherazadeNew-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ScheherazadeNew-Medium.ttf"; sourceTree = ""; }; - F9D60CFD2A76C69D00701635 /* QuranMajeed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QuranMajeed.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F9D60CFD2A76C69D00701635 /* Al-Tanzeel.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Al-Tanzeel.app"; sourceTree = BUILT_PRODUCTS_DIR; }; F9D60D002A76C69D00701635 /* QuranQuizApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuranQuizApp.swift; sourceTree = ""; }; F9D60D042A76C69E00701635 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; F9D60D072A76C69E00701635 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; @@ -312,8 +312,8 @@ F9D60CFE2A76C69D00701635 /* Products */ = { isa = PBXGroup; children = ( - F9D60CFD2A76C69D00701635 /* QuranMajeed.app */, - F950FAD82AB4BA0000CB45B5 /* QuranMajeedTests.xctest */, + F9D60CFD2A76C69D00701635 /* Al-Tanzeel.app */, + F950FAD82AB4BA0000CB45B5 /* Al-TanzeelTests.xctest */, ); name = Products; sourceTree = ""; @@ -321,7 +321,7 @@ F9D60CFF2A76C69D00701635 /* QuranMajeed */ = { isa = PBXGroup; children = ( - F96002A82ABA48C7008C16D5 /* GenericDataSource */, + F936509C2AE1FB3C007773CE /* GenericDataSource */, F9A105312AB31BD2008FA0DE /* QuranMajeed */, F9D60D0E2A76C6AC00701635 /* Quiz */, F9D60D372A78531600701635 /* UIViewRepresentable */, @@ -487,9 +487,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - F950FAD72AB4BA0000CB45B5 /* QuranMajeedTests */ = { + F950FAD72AB4BA0000CB45B5 /* Al-TanzeelTests */ = { isa = PBXNativeTarget; - buildConfigurationList = F950FADE2AB4BA0000CB45B5 /* Build configuration list for PBXNativeTarget "QuranMajeedTests" */; + buildConfigurationList = F950FADE2AB4BA0000CB45B5 /* Build configuration list for PBXNativeTarget "Al-TanzeelTests" */; buildPhases = ( F950FAD42AB4BA0000CB45B5 /* Sources */, F950FAD52AB4BA0000CB45B5 /* Frameworks */, @@ -500,14 +500,14 @@ dependencies = ( F950FADD2AB4BA0000CB45B5 /* PBXTargetDependency */, ); - name = QuranMajeedTests; + name = "Al-TanzeelTests"; productName = QuranMajeedTests; - productReference = F950FAD82AB4BA0000CB45B5 /* QuranMajeedTests.xctest */; + productReference = F950FAD82AB4BA0000CB45B5 /* Al-TanzeelTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - F9D60CFC2A76C69D00701635 /* QuranMajeed */ = { + F9D60CFC2A76C69D00701635 /* Al-Tanzeel */ = { isa = PBXNativeTarget; - buildConfigurationList = F9D60D0B2A76C69E00701635 /* Build configuration list for PBXNativeTarget "QuranMajeed" */; + buildConfigurationList = F9D60D0B2A76C69E00701635 /* Build configuration list for PBXNativeTarget "Al-Tanzeel" */; buildPhases = ( F9D60CF92A76C69D00701635 /* Sources */, F9D60CFA2A76C69D00701635 /* Frameworks */, @@ -517,7 +517,7 @@ ); dependencies = ( ); - name = QuranMajeed; + name = "Al-Tanzeel"; packageProductDependencies = ( 763539CF2AB7943600CC27FD /* QuranKit */, 763539D42AB7975500CC27FD /* ReadingService */, @@ -532,7 +532,7 @@ F918395E2AB7CDA700E4D45B /* AppStructureFeature */, ); productName = QuranQuiz; - productReference = F9D60CFD2A76C69D00701635 /* QuranMajeed.app */; + productReference = F9D60CFD2A76C69D00701635 /* Al-Tanzeel.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -556,7 +556,7 @@ }; }; }; - buildConfigurationList = F9D60CF82A76C69D00701635 /* Build configuration list for PBXProject "QuranMajeed" */; + buildConfigurationList = F9D60CF82A76C69D00701635 /* Build configuration list for PBXProject "Al-Tanzeel" */; compatibilityVersion = "Xcode 14.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -575,8 +575,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - F9D60CFC2A76C69D00701635 /* QuranMajeed */, - F950FAD72AB4BA0000CB45B5 /* QuranMajeedTests */, + F9D60CFC2A76C69D00701635 /* Al-Tanzeel */, + F950FAD72AB4BA0000CB45B5 /* Al-TanzeelTests */, ); }; /* End PBXProject section */ @@ -668,7 +668,7 @@ /* Begin PBXTargetDependency section */ F950FADD2AB4BA0000CB45B5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = F9D60CFC2A76C69D00701635 /* QuranMajeed */; + target = F9D60CFC2A76C69D00701635 /* Al-Tanzeel */; targetProxy = F950FADC2AB4BA0000CB45B5 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -694,7 +694,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/QuranMajeed.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/QuranMajeed"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Al-Tanzeel.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Al-Tanzeel"; }; name = Debug; }; @@ -716,7 +716,7 @@ SWIFT_OBJC_BRIDGING_HEADER = "QuranMajeedTests/QuranMajeedTests-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/QuranMajeed.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/QuranMajeed"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Al-Tanzeel.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Al-Tanzeel"; }; name = Release; }; @@ -848,7 +848,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"QuranMajeed/Preview Content\""; - DEVELOPMENT_TEAM = E2D87XL9X7; + DEVELOPMENT_TEAM = 95B9YTC3G2; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = QuranMajeed/Info.plist; @@ -878,7 +878,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"QuranMajeed/Preview Content\""; - DEVELOPMENT_TEAM = E2D87XL9X7; + DEVELOPMENT_TEAM = 95B9YTC3G2; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = QuranMajeed/Info.plist; @@ -903,7 +903,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - F950FADE2AB4BA0000CB45B5 /* Build configuration list for PBXNativeTarget "QuranMajeedTests" */ = { + F950FADE2AB4BA0000CB45B5 /* Build configuration list for PBXNativeTarget "Al-TanzeelTests" */ = { isa = XCConfigurationList; buildConfigurations = ( F950FADF2AB4BA0000CB45B5 /* Debug */, @@ -912,7 +912,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F9D60CF82A76C69D00701635 /* Build configuration list for PBXProject "QuranMajeed" */ = { + F9D60CF82A76C69D00701635 /* Build configuration list for PBXProject "Al-Tanzeel" */ = { isa = XCConfigurationList; buildConfigurations = ( F9D60D092A76C69E00701635 /* Debug */, @@ -921,7 +921,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F9D60D0B2A76C69E00701635 /* Build configuration list for PBXNativeTarget "QuranMajeed" */ = { + F9D60D0B2A76C69E00701635 /* Build configuration list for PBXNativeTarget "Al-Tanzeel" */ = { isa = XCConfigurationList; buildConfigurations = ( F9D60D0C2A76C69E00701635 /* Debug */, diff --git a/QuranMajeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Al-Tanzeel.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from QuranMajeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Al-Tanzeel.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Al-Tanzeel.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Al-Tanzeel.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Al-Tanzeel.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to Al-Tanzeel.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Al-Tanzeel.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from QuranMajeed.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Al-Tanzeel.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/QuranMajeed.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme b/Al-Tanzeel.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme similarity index 80% rename from QuranMajeed.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme rename to Al-Tanzeel.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme index 118104f..ed18acb 100644 --- a/QuranMajeed.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme +++ b/Al-Tanzeel.xcodeproj/xcshareddata/xcschemes/QuranMajeed.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "Al-Tanzeel.app" + BlueprintName = "Al-Tanzeel" + ReferencedContainer = "container:Al-Tanzeel.xcodeproj"> @@ -35,9 +35,9 @@ + BuildableName = "Al-TanzeelTests.xctest" + BlueprintName = "Al-TanzeelTests" + ReferencedContainer = "container:Al-Tanzeel.xcodeproj"> @@ -57,9 +57,9 @@ + BuildableName = "Al-Tanzeel.app" + BlueprintName = "Al-Tanzeel" + ReferencedContainer = "container:Al-Tanzeel.xcodeproj"> @@ -74,9 +74,9 @@ + BuildableName = "Al-Tanzeel.app" + BlueprintName = "Al-Tanzeel" + ReferencedContainer = "container:Al-Tanzeel.xcodeproj"> From 291e64c8a3c180a67399e3d7a7683c65e125fe5d Mon Sep 17 00:00:00 2001 From: Takasur Azeem Date: Fri, 20 Oct 2023 05:27:42 +0500 Subject: [PATCH 3/3] Add GenericDataSource as local repo --- Al-Tanzeel.xcodeproj/project.pbxproj | 4 ++-- Packges/GenericDataSource | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 160000 Packges/GenericDataSource diff --git a/Al-Tanzeel.xcodeproj/project.pbxproj b/Al-Tanzeel.xcodeproj/project.pbxproj index 6bf5fae..270fdbf 100644 --- a/Al-Tanzeel.xcodeproj/project.pbxproj +++ b/Al-Tanzeel.xcodeproj/project.pbxproj @@ -94,7 +94,6 @@ F918394C2AB7B69900E4D45B /* SuraNameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuraNameView.swift; sourceTree = ""; }; F91839612AB7D0BA00E4D45B /* LoggingAnalyticsLibrary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggingAnalyticsLibrary.swift; sourceTree = ""; }; F91839652AB7D98D00E4D45B /* VerseListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerseListView.swift; sourceTree = ""; }; - F936509C2AE1FB3C007773CE /* GenericDataSource */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = GenericDataSource; path = ../../../../Documents/GitHub/GenericDataSource; sourceTree = ""; }; F94C11C32AB2F962004BAD10 /* AppDependencyContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDependencyContainer.swift; sourceTree = ""; }; F950FAD82AB4BA0000CB45B5 /* Al-TanzeelTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Al-TanzeelTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; F950FAE12AB4BA6400CB45B5 /* QuranMajeedTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "QuranMajeedTests-Bridging-Header.h"; sourceTree = ""; }; @@ -136,6 +135,7 @@ F9D60D382A78534B00701635 /* PDFKitView+UIViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PDFKitView+UIViewRepresentable.swift"; sourceTree = ""; }; F9D90A4E2ACD850000CD8FD4 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; F9F11E0B2AC4D66800100507 /* FlexibleViewContainerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlexibleViewContainerViewModel.swift; sourceTree = ""; }; + F9F250162AE200BA00D2CCD4 /* GenericDataSource */ = {isa = PBXFileReference; lastKnownFileType = text; name = GenericDataSource; path = Packges/GenericDataSource; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -321,7 +321,7 @@ F9D60CFF2A76C69D00701635 /* QuranMajeed */ = { isa = PBXGroup; children = ( - F936509C2AE1FB3C007773CE /* GenericDataSource */, + F9F250162AE200BA00D2CCD4 /* GenericDataSource */, F9A105312AB31BD2008FA0DE /* QuranMajeed */, F9D60D0E2A76C6AC00701635 /* Quiz */, F9D60D372A78531600701635 /* UIViewRepresentable */, diff --git a/Packges/GenericDataSource b/Packges/GenericDataSource new file mode 160000 index 0000000..8b06dfd --- /dev/null +++ b/Packges/GenericDataSource @@ -0,0 +1 @@ +Subproject commit 8b06dfd564afc80155ab0a30a2613dc8e04be1e9