diff --git a/GitLab Localizations/en.xcloc/Localized Contents/GitLab iOS/Assets.xcassets/AccentColor.colorset/Contents.json b/GitLab Localizations/en.xcloc/Localized Contents/GitLab iOS/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..d0ffdd5 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Localized Contents/GitLab iOS/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,15 @@ +{ + "colors" : [ + { + "idiom" : "universal", + "locale" : "en" + } + ], + "properties" : { + "localizable" : true + }, + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GitLab Localizations/en.xcloc/Localized Contents/GitLab iOS/Assets.xcassets/Contents.json b/GitLab Localizations/en.xcloc/Localized Contents/GitLab iOS/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Localized Contents/GitLab iOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GitLab Localizations/en.xcloc/Localized Contents/GitLab/Assets.xcassets/AccentColor.colorset/Contents.json b/GitLab Localizations/en.xcloc/Localized Contents/GitLab/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..d0ffdd5 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Localized Contents/GitLab/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,15 @@ +{ + "colors" : [ + { + "idiom" : "universal", + "locale" : "en" + } + ], + "properties" : { + "localizable" : true + }, + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GitLab Localizations/en.xcloc/Localized Contents/GitLab/Assets.xcassets/Contents.json b/GitLab Localizations/en.xcloc/Localized Contents/GitLab/Assets.xcassets/Contents.json new file mode 100644 index 0000000..8cbf8bf --- /dev/null +++ b/GitLab Localizations/en.xcloc/Localized Contents/GitLab/Assets.xcassets/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "compression-type" : "gpu-optimized-best" + } +} diff --git a/GitLab Localizations/en.xcloc/Localized Contents/en.xliff b/GitLab Localizations/en.xcloc/Localized Contents/en.xliff new file mode 100644 index 0000000..91cc2ab --- /dev/null +++ b/GitLab Localizations/en.xcloc/Localized Contents/en.xliff @@ -0,0 +1,1163 @@ + + + +
+ +
+ + + DesktopWidgetTool + DesktopWidgetTool + Bundle display name + + + DesktopWidgetToolExtension + DesktopWidgetToolExtension + Bundle name + + + + + Copyright (human-readable) + + +
+ +
+ +
+ + + + + + + + %@ + %@ + + + + %lld + %lld + + + + %lld discussions + %lld discussions + + + + Account + Account + + + + Active: + Active: + + + + Add Account + Add Account + + + + Add your GitLab Account + Add your GitLab Account + + + + All your Authored Merge Requests directly visible. + All your Authored Merge Requests directly visible. + + + + Approved + Approved + + + + Authored Merge Requests + Authored Merge Requests + + + + Base URL + Base URL + + + + CI Created + CI Created + + + + CI Failed + CI Failed + + + + CI Success + CI Success + + + + CI Warning + CI Warning + + + + CI canceled + CI canceled + + + + CI in progress + CI in progress + + + + CI pipeline pending + CI pipeline pending + + + + CI pipeline preparing + CI pipeline preparing + + + + CI pipeline scheduled + CI pipeline scheduled + + + + CI pipeline waiting for resources + CI pipeline waiting for resources + + + + Close + Close + + + + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + + + + Create merge request + Create merge request + + + + Created at: + Created at: + + + + Delete + Delete + + + + Dismiss + Dismiss + + + + Draft + Draft + + + + Enter token here... + Enter token here... + + + + Expires at: + Expires at: + + + + Failed + Failed + + + + GitLab Token + GitLab Token + + + + Last updated at: 19 September 2022 at 12:43 + Last updated at: 19 September 2022 at 12:43 + + + + Last used at: + Last used at: + + + + Manual CI step + Manual CI step + + + + Merge Train 🚂 + Merge Train 🚂 + + + + Merge request approved + Merge request approved + + + + Name: + Name: + + + + Needs Review + Needs Review + + + + Quick access to your recently used Repositories + Quick access to your recently used Repositories + + + + Quit + Quit + + + + Remove %@ + Remove %@ + + + + Repo Launchpad + Repo Launchpad + + + + Retry CI pipeline + Retry CI pipeline + + + + Review requested + Review requested + + + + Revoked: + Revoked: + + + + Save + Save + + + + Scopes: + Scopes: + + + + Settings + Settings + + + + Share + Share + + + + Skipped CI step + Skipped CI step + + + + Submit + Submit + + + + This %@ account will be removed immediatly. You can't undo this action. + This %@ account will be removed immediatly. You can't undo this action. + + + + Too much discussions + Too much discussions + + + + Validating... + Validating... + + + + Your Merge Requests + Your Merge Requests + + + + default widget view + default widget view + + + + https://www.gitlab.com + https://www.gitlab.com + + + + updating + updating + + + +
+ +
+ +
+ + + GitLab + GitLab + Bundle display name + + + GitLab iOS + GitLab iOS + Bundle name + + +
+ +
+ +
+ + + + + No comment provided by engineer. + + + %@ + %@ + No comment provided by engineer. + + + %lld + %lld + No comment provided by engineer. + + + %lld discussions + %lld discussions + No comment provided by engineer. + + + Account + Account + No comment provided by engineer. + + + Active: + Active: + No comment provided by engineer. + + + Add Account + Add Account + No comment provided by engineer. + + + Add your GitLab Account + Add your GitLab Account + No comment provided by engineer. + + + Approved + Approved + No comment provided by engineer. + + + Base URL + Base URL + No comment provided by engineer. + + + CI Created + CI Created + No comment provided by engineer. + + + CI Failed + CI Failed + No comment provided by engineer. + + + CI Success + CI Success + No comment provided by engineer. + + + CI Warning + CI Warning + No comment provided by engineer. + + + CI canceled + CI canceled + No comment provided by engineer. + + + CI in progress + CI in progress + No comment provided by engineer. + + + CI pipeline pending + CI pipeline pending + No comment provided by engineer. + + + CI pipeline preparing + CI pipeline preparing + No comment provided by engineer. + + + CI pipeline scheduled + CI pipeline scheduled + No comment provided by engineer. + + + CI pipeline waiting for resources + CI pipeline waiting for resources + No comment provided by engineer. + + + Cancel + Cancel + No comment provided by engineer. + + + Close + Close + No comment provided by engineer. + + + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + No comment provided by engineer. + + + Create merge request + Create merge request + No comment provided by engineer. + + + Created at: + Created at: + No comment provided by engineer. + + + Delete + Delete + No comment provided by engineer. + + + Dismiss + Dismiss + No comment provided by engineer. + + + Done + Done + No comment provided by engineer. + + + Draft + Draft + No comment provided by engineer. + + + Enter token here... + Enter token here... + No comment provided by engineer. + + + Expires at: + Expires at: + No comment provided by engineer. + + + Failed + Failed + No comment provided by engineer. + + + GitLab Token + GitLab Token + No comment provided by engineer. + + + Last updated at: 19 September 2022 at 12:43 + Last updated at: 19 September 2022 at 12:43 + No comment provided by engineer. + + + Last used at: + Last used at: + No comment provided by engineer. + + + Manual CI step + Manual CI step + No comment provided by engineer. + + + Merge Train 🚂 + Merge Train 🚂 + No comment provided by engineer. + + + Merge request approved + Merge request approved + No comment provided by engineer. + + + Name: + Name: + No comment provided by engineer. + + + Needs Review + Needs Review + No comment provided by engineer. + + + Remove %@ + Remove %@ + No comment provided by engineer. + + + Retry CI pipeline + Retry CI pipeline + No comment provided by engineer. + + + Review requested + Review requested + No comment provided by engineer. + + + Revoked: + Revoked: + No comment provided by engineer. + + + Save + Save + No comment provided by engineer. + + + Scopes: + Scopes: + No comment provided by engineer. + + + Settings + Settings + No comment provided by engineer. + + + Share + Share + No comment provided by engineer. + + + Skipped CI step + Skipped CI step + No comment provided by engineer. + + + Submit + Submit + No comment provided by engineer. + + + This %@ account will be removed immediatly. You can't undo this action. + This %@ account will be removed immediatly. You can't undo this action. + No comment provided by engineer. + + + Too much discussions + Too much discussions + No comment provided by engineer. + + + Validating... + Validating... + No comment provided by engineer. + + + Your Merge Requests + Your Merge Requests + No comment provided by engineer. + + + https://www.gitlab.com + https://www.gitlab.com + No comment provided by engineer. + + + sdf + sdf + No comment provided by engineer. + + + updating + updating + No comment provided by engineer. + + +
+ +
+ +
+ + + Enabled + Enabled + + + + Group + Group + A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. + + + Name + Name + + + + none given + none given + + + +
+ +
+ +
+ + + GitLab + GitLab + Bundle name + + +
+ +
+ +
+ + + + + No comment provided by engineer. + + + %@ + %@ + No comment provided by engineer. + + + Account + Account + No comment provided by engineer. + + + Active: + Active: + No comment provided by engineer. + + + Add your GitLab Account + Add your GitLab Account + No comment provided by engineer. + + + Approved + Approved + No comment provided by engineer. + + + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + No comment provided by engineer. + + + Created at: + Created at: + No comment provided by engineer. + + + Draft + Draft + No comment provided by engineer. + + + Enter token here... + Enter token here... + No comment provided by engineer. + + + Expires at: + Expires at: + No comment provided by engineer. + + + Failed + Failed + No comment provided by engineer. + + + GitLab Desktop + GitLab Desktop + No comment provided by engineer. + + + Last updated at: 19 September 2022 at 12:43 + Last updated at: 19 September 2022 at 12:43 + No comment provided by engineer. + + + Last used at: + Last used at: + No comment provided by engineer. + + + Merge Train 🚂 + Merge Train 🚂 + No comment provided by engineer. + + + Name: + Name: + No comment provided by engineer. + + + Needs Review + Needs Review + No comment provided by engineer. + + + Quit + Quit + No comment provided by engineer. + + + Remove %@ + Remove %@ + No comment provided by engineer. + + + Review requested + Review requested + No comment provided by engineer. + + + Revoked: + Revoked: + No comment provided by engineer. + + + Save + Save + No comment provided by engineer. + + + Scopes: + Scopes: + No comment provided by engineer. + + + Share + Share + No comment provided by engineer. + + + Submit + Submit + No comment provided by engineer. + + + This %@ account will be removed immediatly. You can't undo this action. + This %@ account will be removed immediatly. You can't undo this action. + No comment provided by engineer. + + + Validating... + Validating... + No comment provided by engineer. + + + Your Merge Requests + Your Merge Requests + No comment provided by engineer. + + + https://www.gitlab.com + https://www.gitlab.com + No comment provided by engineer. + + + sdf + sdf + No comment provided by engineer. + + + updating + updating + No comment provided by engineer. + + +
+ +
+ +
+ + + Label + Label + Class = "NSTextFieldCell"; title = "Label"; ObjectID = "Qoh-ff-zg7"; + + +
+ +
+ +
+ + + NotificationContent + NotificationContent + Bundle display name + + + NotificationContent + NotificationContent + Bundle name + + + + + Copyright (human-readable) + + +
+ +
+ +
+ + + + + No comment provided by engineer. + + + %@ + %@ + No comment provided by engineer. + + + %lld + %lld + No comment provided by engineer. + + + %lld discussions + %lld discussions + No comment provided by engineer. + + + Account + Account + No comment provided by engineer. + + + Active: + Active: + No comment provided by engineer. + + + Add Account + Add Account + No comment provided by engineer. + + + Add your GitLab Account + Add your GitLab Account + No comment provided by engineer. + + + Approved + Approved + No comment provided by engineer. + + + Base URL + Base URL + No comment provided by engineer. + + + CI Created + CI Created + No comment provided by engineer. + + + CI Failed + CI Failed + No comment provided by engineer. + + + CI Success + CI Success + No comment provided by engineer. + + + CI Warning + CI Warning + No comment provided by engineer. + + + CI canceled + CI canceled + No comment provided by engineer. + + + CI in progress + CI in progress + No comment provided by engineer. + + + CI pipeline pending + CI pipeline pending + No comment provided by engineer. + + + CI pipeline preparing + CI pipeline preparing + No comment provided by engineer. + + + CI pipeline scheduled + CI pipeline scheduled + No comment provided by engineer. + + + CI pipeline waiting for resources + CI pipeline waiting for resources + No comment provided by engineer. + + + Close + Close + No comment provided by engineer. + + + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with. + No comment provided by engineer. + + + Create merge request + Create merge request + No comment provided by engineer. + + + Created at: + Created at: + No comment provided by engineer. + + + Delete + Delete + No comment provided by engineer. + + + Dismiss + Dismiss + No comment provided by engineer. + + + Draft + Draft + No comment provided by engineer. + + + Enter token here... + Enter token here... + No comment provided by engineer. + + + Expires at: + Expires at: + No comment provided by engineer. + + + Failed + Failed + No comment provided by engineer. + + + GitLab Token + GitLab Token + No comment provided by engineer. + + + Last updated at: 19 September 2022 at 12:43 + Last updated at: 19 September 2022 at 12:43 + No comment provided by engineer. + + + Last used at: + Last used at: + No comment provided by engineer. + + + Manual CI step + Manual CI step + No comment provided by engineer. + + + Merge Train 🚂 + Merge Train 🚂 + No comment provided by engineer. + + + Merge request approved + Merge request approved + No comment provided by engineer. + + + Name: + Name: + No comment provided by engineer. + + + Needs Review + Needs Review + No comment provided by engineer. + + + Quit + Quit + No comment provided by engineer. + + + Remove %@ + Remove %@ + No comment provided by engineer. + + + Retry CI pipeline + Retry CI pipeline + No comment provided by engineer. + + + Review requested + Review requested + No comment provided by engineer. + + + Revoked: + Revoked: + No comment provided by engineer. + + + Save + Save + No comment provided by engineer. + + + Scopes: + Scopes: + No comment provided by engineer. + + + Settings + Settings + No comment provided by engineer. + + + Share + Share + No comment provided by engineer. + + + Skipped CI step + Skipped CI step + No comment provided by engineer. + + + Submit + Submit + No comment provided by engineer. + + + This %@ account will be removed immediatly. You can't undo this action. + This %@ account will be removed immediatly. You can't undo this action. + No comment provided by engineer. + + + Too much discussions + Too much discussions + No comment provided by engineer. + + + Validating... + Validating... + No comment provided by engineer. + + + Your Merge Requests + Your Merge Requests + No comment provided by engineer. + + + https://www.gitlab.com + https://www.gitlab.com + No comment provided by engineer. + + + updating + updating + No comment provided by engineer. + + +
+
diff --git a/GitLab Localizations/en.xcloc/Source Contents/DesktopWidgetTool/InfoPlist.xcstrings b/GitLab Localizations/en.xcloc/Source Contents/DesktopWidgetTool/InfoPlist.xcstrings new file mode 100644 index 0000000..874f91b --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/DesktopWidgetTool/InfoPlist.xcstrings @@ -0,0 +1,42 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "CFBundleDisplayName" : { + "comment" : "Bundle display name", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DesktopWidgetTool" + } + } + } + }, + "CFBundleName" : { + "comment" : "Bundle name", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DesktopWidgetToolExtension" + } + } + } + }, + "NSHumanReadableCopyright" : { + "comment" : "Copyright (human-readable)", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/GitLab Localizations/en.xcloc/Source Contents/DesktopWidgetTool/Localizable.xcstrings b/GitLab Localizations/en.xcloc/Source Contents/DesktopWidgetTool/Localizable.xcstrings new file mode 100644 index 0000000..eda0919 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/DesktopWidgetTool/Localizable.xcstrings @@ -0,0 +1,186 @@ +{ + "sourceLanguage" : "en", + "strings" : { + " " : { + + }, + "%@" : { + + }, + "%lld" : { + + }, + "%lld discussions" : { + + }, + "Account" : { + + }, + "Active:" : { + + }, + "Add Account" : { + + }, + "Add your GitLab Account" : { + + }, + "All your Authored Merge Requests directly visible." : { + + }, + "Approved" : { + + }, + "Authored Merge Requests" : { + + }, + "Base URL" : { + + }, + "CI canceled" : { + + }, + "CI Created" : { + + }, + "CI Failed" : { + + }, + "CI in progress" : { + + }, + "CI pipeline pending" : { + + }, + "CI pipeline preparing" : { + + }, + "CI pipeline scheduled" : { + + }, + "CI pipeline waiting for resources" : { + + }, + "CI Success" : { + + }, + "CI Warning" : { + + }, + "Close" : { + + }, + "Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with." : { + + }, + "Create merge request" : { + + }, + "Created at:" : { + + }, + "default widget view" : { + + }, + "Delete" : { + + }, + "Dismiss" : { + + }, + "Draft" : { + + }, + "Enter token here..." : { + + }, + "Expires at:" : { + + }, + "Failed" : { + + }, + "GitLab Token" : { + + }, + "https://www.gitlab.com" : { + + }, + "Last updated at: 19 September 2022 at 12:43" : { + + }, + "Last used at:" : { + + }, + "Manual CI step" : { + + }, + "Merge request approved" : { + + }, + "Merge Train 🚂" : { + + }, + "Name:" : { + + }, + "Needs Review" : { + + }, + "Quick access to your recently used Repositories" : { + + }, + "Quit" : { + + }, + "Remove %@" : { + + }, + "Repo Launchpad" : { + + }, + "Retry CI pipeline" : { + + }, + "Review requested" : { + + }, + "Revoked:" : { + + }, + "Save" : { + + }, + "Scopes:" : { + + }, + "Settings" : { + + }, + "Share" : { + + }, + "Skipped CI step" : { + + }, + "Submit" : { + + }, + "This %@ account will be removed immediatly. You can't undo this action." : { + + }, + "Too much discussions" : { + + }, + "updating" : { + + }, + "Validating..." : { + + }, + "Your Merge Requests" : { + + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Assets.xcassets/AccentColor.colorset/Contents.json b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..b3e5ea6 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,23 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "display-p3", + "components" : { + "red" : "0.322", + "alpha" : "1.000", + "blue" : "0.518", + "green" : "0.270" + } + }, + "idiom" : "universal" + } + ], + "properties" : { + "localizable" : true + }, + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Assets.xcassets/Contents.json b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Settings.bundle/en.lproj/Root.strings b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Settings.bundle/en.lproj/Root.strings new file mode 100644 index 0000000..8cd87b9 Binary files /dev/null and b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/Settings.bundle/en.lproj/Root.strings differ diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/en.lproj/GitLab iOS-InfoPlist.strings b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/en.lproj/GitLab iOS-InfoPlist.strings new file mode 100644 index 0000000..6fadf63 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/en.lproj/GitLab iOS-InfoPlist.strings @@ -0,0 +1,4 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "GitLab"; +/* Bundle name */ +"CFBundleName" = "GitLab iOS"; diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/en.lproj/Localizable.strings b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/en.lproj/Localizable.strings new file mode 100644 index 0000000..518da18 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab iOS/en.lproj/Localizable.strings @@ -0,0 +1,171 @@ +/* No comment provided by engineer. */ +" " = " "; + +/* No comment provided by engineer. */ +"%@" = "%@"; + +/* No comment provided by engineer. */ +"%lld" = "%lld"; + +/* No comment provided by engineer. */ +"%lld discussions" = "%lld discussions"; + +/* No comment provided by engineer. */ +"Account" = "Account"; + +/* No comment provided by engineer. */ +"Active:" = "Active:"; + +/* No comment provided by engineer. */ +"Add Account" = "Add Account"; + +/* No comment provided by engineer. */ +"Add your GitLab Account" = "Add your GitLab Account"; + +/* No comment provided by engineer. */ +"Approved" = "Approved"; + +/* No comment provided by engineer. */ +"Base URL" = "Base URL"; + +/* No comment provided by engineer. */ +"Cancel" = "Cancel"; + +/* No comment provided by engineer. */ +"CI canceled" = "CI canceled"; + +/* No comment provided by engineer. */ +"CI Created" = "CI Created"; + +/* No comment provided by engineer. */ +"CI Failed" = "CI Failed"; + +/* No comment provided by engineer. */ +"CI in progress" = "CI in progress"; + +/* No comment provided by engineer. */ +"CI pipeline pending" = "CI pipeline pending"; + +/* No comment provided by engineer. */ +"CI pipeline preparing" = "CI pipeline preparing"; + +/* No comment provided by engineer. */ +"CI pipeline scheduled" = "CI pipeline scheduled"; + +/* No comment provided by engineer. */ +"CI pipeline waiting for resources" = "CI pipeline waiting for resources"; + +/* No comment provided by engineer. */ +"CI Success" = "CI Success"; + +/* No comment provided by engineer. */ +"CI Warning" = "CI Warning"; + +/* No comment provided by engineer. */ +"Close" = "Close"; + +/* No comment provided by engineer. */ +"Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with." = "Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with."; + +/* No comment provided by engineer. */ +"Create merge request" = "Create merge request"; + +/* No comment provided by engineer. */ +"Created at:" = "Created at:"; + +/* No comment provided by engineer. */ +"Delete" = "Delete"; + +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + +/* No comment provided by engineer. */ +"Done" = "Done"; + +/* No comment provided by engineer. */ +"Draft" = "Draft"; + +/* No comment provided by engineer. */ +"Enter token here..." = "Enter token here..."; + +/* No comment provided by engineer. */ +"Expires at:" = "Expires at:"; + +/* No comment provided by engineer. */ +"Failed" = "Failed"; + +/* No comment provided by engineer. */ +"GitLab Token" = "GitLab Token"; + +/* No comment provided by engineer. */ +"https://www.gitlab.com" = "https://www.gitlab.com"; + +/* No comment provided by engineer. */ +"Last updated at: 19 September 2022 at 12:43" = "Last updated at: 19 September 2022 at 12:43"; + +/* No comment provided by engineer. */ +"Last used at:" = "Last used at:"; + +/* No comment provided by engineer. */ +"Manual CI step" = "Manual CI step"; + +/* No comment provided by engineer. */ +"Merge request approved" = "Merge request approved"; + +/* No comment provided by engineer. */ +"Merge Train 🚂" = "Merge Train 🚂"; + +/* No comment provided by engineer. */ +"Name:" = "Name:"; + +/* No comment provided by engineer. */ +"Needs Review" = "Needs Review"; + +/* No comment provided by engineer. */ +"Remove %@" = "Remove %@"; + +/* No comment provided by engineer. */ +"Retry CI pipeline" = "Retry CI pipeline"; + +/* No comment provided by engineer. */ +"Review requested" = "Review requested"; + +/* No comment provided by engineer. */ +"Revoked:" = "Revoked:"; + +/* No comment provided by engineer. */ +"Save" = "Save"; + +/* No comment provided by engineer. */ +"Scopes:" = "Scopes:"; + +/* No comment provided by engineer. */ +"sdf" = "sdf"; + +/* No comment provided by engineer. */ +"Settings" = "Settings"; + +/* No comment provided by engineer. */ +"Share" = "Share"; + +/* No comment provided by engineer. */ +"Skipped CI step" = "Skipped CI step"; + +/* No comment provided by engineer. */ +"Submit" = "Submit"; + +/* No comment provided by engineer. */ +"This %@ account will be removed immediatly. You can't undo this action." = "This %@ account will be removed immediatly. You can't undo this action."; + +/* No comment provided by engineer. */ +"Too much discussions" = "Too much discussions"; + +/* No comment provided by engineer. */ +"updating" = "updating"; + +/* No comment provided by engineer. */ +"Validating..." = "Validating..."; + +/* No comment provided by engineer. */ +"Your Merge Requests" = "Your Merge Requests"; + diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab/Assets.xcassets/AccentColor.colorset/Contents.json b/GitLab Localizations/en.xcloc/Source Contents/GitLab/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..4866dbd --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,14 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "properties" : { + "localizable" : true + }, + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab/Assets.xcassets/Contents.json b/GitLab Localizations/en.xcloc/Source Contents/GitLab/Assets.xcassets/Contents.json new file mode 100644 index 0000000..8cbf8bf --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab/Assets.xcassets/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "compression-type" : "gpu-optimized-best" + } +} diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab/en.lproj/InfoPlist.strings b/GitLab Localizations/en.xcloc/Source Contents/GitLab/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..01c9efd --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Bundle name */ +"CFBundleName" = "GitLab"; diff --git a/GitLab Localizations/en.xcloc/Source Contents/GitLab/en.lproj/Localizable.strings b/GitLab Localizations/en.xcloc/Source Contents/GitLab/en.lproj/Localizable.strings new file mode 100644 index 0000000..dade906 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/GitLab/en.lproj/Localizable.strings @@ -0,0 +1,96 @@ +/* No comment provided by engineer. */ +" " = " "; + +/* No comment provided by engineer. */ +"%@" = "%@"; + +/* No comment provided by engineer. */ +"Account" = "Account"; + +/* No comment provided by engineer. */ +"Active:" = "Active:"; + +/* No comment provided by engineer. */ +"Add your GitLab Account" = "Add your GitLab Account"; + +/* No comment provided by engineer. */ +"Approved" = "Approved"; + +/* No comment provided by engineer. */ +"Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with." = "Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with."; + +/* No comment provided by engineer. */ +"Created at:" = "Created at:"; + +/* No comment provided by engineer. */ +"Draft" = "Draft"; + +/* No comment provided by engineer. */ +"Enter token here..." = "Enter token here..."; + +/* No comment provided by engineer. */ +"Expires at:" = "Expires at:"; + +/* No comment provided by engineer. */ +"Failed" = "Failed"; + +/* No comment provided by engineer. */ +"GitLab Desktop" = "GitLab Desktop"; + +/* No comment provided by engineer. */ +"https://www.gitlab.com" = "https://www.gitlab.com"; + +/* No comment provided by engineer. */ +"Last updated at: 19 September 2022 at 12:43" = "Last updated at: 19 September 2022 at 12:43"; + +/* No comment provided by engineer. */ +"Last used at:" = "Last used at:"; + +/* No comment provided by engineer. */ +"Merge Train 🚂" = "Merge Train 🚂"; + +/* No comment provided by engineer. */ +"Name:" = "Name:"; + +/* No comment provided by engineer. */ +"Needs Review" = "Needs Review"; + +/* No comment provided by engineer. */ +"Quit" = "Quit"; + +/* No comment provided by engineer. */ +"Remove %@" = "Remove %@"; + +/* No comment provided by engineer. */ +"Review requested" = "Review requested"; + +/* No comment provided by engineer. */ +"Revoked:" = "Revoked:"; + +/* No comment provided by engineer. */ +"Save" = "Save"; + +/* No comment provided by engineer. */ +"Scopes:" = "Scopes:"; + +/* No comment provided by engineer. */ +"sdf" = "sdf"; + +/* No comment provided by engineer. */ +"Share" = "Share"; + +/* No comment provided by engineer. */ +"Submit" = "Submit"; + +/* No comment provided by engineer. */ +"This %@ account will be removed immediatly. You can't undo this action." = "This %@ account will be removed immediatly. You can't undo this action."; + +/* No comment provided by engineer. */ +"updating" = "updating"; + +/* No comment provided by engineer. */ +"Validating..." = "Validating..."; + +/* No comment provided by engineer. */ +"Your Merge Requests" = "Your Merge Requests"; + diff --git a/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/Base.lproj/MainInterface.storyboard b/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/Base.lproj/MainInterface.storyboard new file mode 100644 index 0000000..0018c11 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/Base.lproj/MainInterface.storyboard @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/en.lproj/InfoPlist.strings b/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..9336756 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/en.lproj/InfoPlist.strings @@ -0,0 +1,6 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "NotificationContent"; +/* Bundle name */ +"CFBundleName" = "NotificationContent"; +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = ""; diff --git a/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/en.lproj/Localizable.strings b/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/en.lproj/Localizable.strings new file mode 100644 index 0000000..8344a88 --- /dev/null +++ b/GitLab Localizations/en.xcloc/Source Contents/NotificationContent/en.lproj/Localizable.strings @@ -0,0 +1,165 @@ +/* No comment provided by engineer. */ +" " = " "; + +/* No comment provided by engineer. */ +"%@" = "%@"; + +/* No comment provided by engineer. */ +"%lld" = "%lld"; + +/* No comment provided by engineer. */ +"%lld discussions" = "%lld discussions"; + +/* No comment provided by engineer. */ +"Account" = "Account"; + +/* No comment provided by engineer. */ +"Active:" = "Active:"; + +/* No comment provided by engineer. */ +"Add Account" = "Add Account"; + +/* No comment provided by engineer. */ +"Add your GitLab Account" = "Add your GitLab Account"; + +/* No comment provided by engineer. */ +"Approved" = "Approved"; + +/* No comment provided by engineer. */ +"Base URL" = "Base URL"; + +/* No comment provided by engineer. */ +"CI canceled" = "CI canceled"; + +/* No comment provided by engineer. */ +"CI Created" = "CI Created"; + +/* No comment provided by engineer. */ +"CI Failed" = "CI Failed"; + +/* No comment provided by engineer. */ +"CI in progress" = "CI in progress"; + +/* No comment provided by engineer. */ +"CI pipeline pending" = "CI pipeline pending"; + +/* No comment provided by engineer. */ +"CI pipeline preparing" = "CI pipeline preparing"; + +/* No comment provided by engineer. */ +"CI pipeline scheduled" = "CI pipeline scheduled"; + +/* No comment provided by engineer. */ +"CI pipeline waiting for resources" = "CI pipeline waiting for resources"; + +/* No comment provided by engineer. */ +"CI Success" = "CI Success"; + +/* No comment provided by engineer. */ +"CI Warning" = "CI Warning"; + +/* No comment provided by engineer. */ +"Close" = "Close"; + +/* No comment provided by engineer. */ +"Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with." = "Create a read-only GitLab [access-token](https://gitlab.com/-/profile/personal_access_tokens) that the app can use to query the API with."; + +/* No comment provided by engineer. */ +"Create merge request" = "Create merge request"; + +/* No comment provided by engineer. */ +"Created at:" = "Created at:"; + +/* No comment provided by engineer. */ +"Delete" = "Delete"; + +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + +/* No comment provided by engineer. */ +"Draft" = "Draft"; + +/* No comment provided by engineer. */ +"Enter token here..." = "Enter token here..."; + +/* No comment provided by engineer. */ +"Expires at:" = "Expires at:"; + +/* No comment provided by engineer. */ +"Failed" = "Failed"; + +/* No comment provided by engineer. */ +"GitLab Token" = "GitLab Token"; + +/* No comment provided by engineer. */ +"https://www.gitlab.com" = "https://www.gitlab.com"; + +/* No comment provided by engineer. */ +"Last updated at: 19 September 2022 at 12:43" = "Last updated at: 19 September 2022 at 12:43"; + +/* No comment provided by engineer. */ +"Last used at:" = "Last used at:"; + +/* No comment provided by engineer. */ +"Manual CI step" = "Manual CI step"; + +/* No comment provided by engineer. */ +"Merge request approved" = "Merge request approved"; + +/* No comment provided by engineer. */ +"Merge Train 🚂" = "Merge Train 🚂"; + +/* No comment provided by engineer. */ +"Name:" = "Name:"; + +/* No comment provided by engineer. */ +"Needs Review" = "Needs Review"; + +/* No comment provided by engineer. */ +"Quit" = "Quit"; + +/* No comment provided by engineer. */ +"Remove %@" = "Remove %@"; + +/* No comment provided by engineer. */ +"Retry CI pipeline" = "Retry CI pipeline"; + +/* No comment provided by engineer. */ +"Review requested" = "Review requested"; + +/* No comment provided by engineer. */ +"Revoked:" = "Revoked:"; + +/* No comment provided by engineer. */ +"Save" = "Save"; + +/* No comment provided by engineer. */ +"Scopes:" = "Scopes:"; + +/* No comment provided by engineer. */ +"Settings" = "Settings"; + +/* No comment provided by engineer. */ +"Share" = "Share"; + +/* No comment provided by engineer. */ +"Skipped CI step" = "Skipped CI step"; + +/* No comment provided by engineer. */ +"Submit" = "Submit"; + +/* No comment provided by engineer. */ +"This %@ account will be removed immediatly. You can't undo this action." = "This %@ account will be removed immediatly. You can't undo this action."; + +/* No comment provided by engineer. */ +"Too much discussions" = "Too much discussions"; + +/* No comment provided by engineer. */ +"updating" = "updating"; + +/* No comment provided by engineer. */ +"Validating..." = "Validating..."; + +/* No comment provided by engineer. */ +"Your Merge Requests" = "Your Merge Requests"; + diff --git a/GitLab Localizations/en.xcloc/contents.json b/GitLab Localizations/en.xcloc/contents.json new file mode 100644 index 0000000..99df9a6 --- /dev/null +++ b/GitLab Localizations/en.xcloc/contents.json @@ -0,0 +1,12 @@ +{ + "developmentRegion" : "en", + "project" : "GitLab.xcodeproj", + "targetLocale" : "en", + "toolInfo" : { + "toolBuildNumber" : "16A242d", + "toolID" : "com.apple.dt.xcode", + "toolName" : "Xcode", + "toolVersion" : "16.0" + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/GitLab.xcodeproj/project.pbxproj b/GitLab.xcodeproj/project.pbxproj index d3a7fd6..d90e34e 100644 --- a/GitLab.xcodeproj/project.pbxproj +++ b/GitLab.xcodeproj/project.pbxproj @@ -75,7 +75,6 @@ 8A7935ED2A5583E400F8FB6C /* ExpandHitBoxModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D122A55817400819B80 /* ExpandHitBoxModifier.swift */; }; 8A7935EE2A5583E400F8FB6C /* LastUpdateMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D132A55817400819B80 /* LastUpdateMessageView.swift */; }; 8A7935EF2A5583E400F8FB6C /* MergeStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D142A55817400819B80 /* MergeStatusView.swift */; }; - 8A7935F02A5583E400F8FB6C /* LastUpdateMessagePlaceholderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D152A55817400819B80 /* LastUpdateMessagePlaceholderView.swift */; }; 8A7935F12A5583E400F8FB6C /* CIStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D162A55817400819B80 /* CIStatusView.swift */; }; 8A7935F22A5583E400F8FB6C /* MergeRequestLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D172A55817400819B80 /* MergeRequestLabelView.swift */; }; 8A7935F32A5583E400F8FB6C /* TitleWebLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D1A2A55817400819B80 /* TitleWebLink.swift */; }; @@ -87,6 +86,10 @@ 8A7935F92A5583E400F8FB6C /* LaunchpadItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D202A55817400819B80 /* LaunchpadItem.swift */; }; 8A7935FB2A5583F700F8FB6C /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 8A7935FA2A5583F700F8FB6C /* Get */; }; 8A7935FD2A5583FA00F8FB6C /* CachedAsyncImage in Frameworks */ = {isa = PBXBuildFile; productRef = 8A7935FC2A5583FA00F8FB6C /* CachedAsyncImage */; }; + 8A91E2172CB7B68900BE51B9 /* UserAvatarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A91E2162CB7B68900BE51B9 /* UserAvatarView.swift */; }; + 8A91E2182CB7B68900BE51B9 /* UserAvatarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A91E2162CB7B68900BE51B9 /* UserAvatarView.swift */; }; + 8A91E2192CB7B68900BE51B9 /* UserAvatarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A91E2162CB7B68900BE51B9 /* UserAvatarView.swift */; }; + 8A91E21A2CB7B68900BE51B9 /* UserAvatarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A91E2162CB7B68900BE51B9 /* UserAvatarView.swift */; }; 8A9D878A2BD2736C00E2C0CD /* ProjectLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9D87892BD2736C00E2C0CD /* ProjectLink.swift */; }; 8A9D878B2BD2736C00E2C0CD /* ProjectLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9D87892BD2736C00E2C0CD /* ProjectLink.swift */; }; 8A9D878C2BD2736C00E2C0CD /* ProjectLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9D87892BD2736C00E2C0CD /* ProjectLink.swift */; }; @@ -127,9 +130,6 @@ 8ADD57102B8220D3001F8E8F /* ModelContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD570F2B8220D3001F8E8F /* ModelContainer.swift */; }; 8ADD57112B8220D3001F8E8F /* ModelContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD570F2B8220D3001F8E8F /* ModelContainer.swift */; }; 8ADD57122B8220D3001F8E8F /* ModelContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD570F2B8220D3001F8E8F /* ModelContainer.swift */; }; - 8ADD57152B82291B001F8E8F /* WidgetInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD57142B82291B001F8E8F /* WidgetInterface.swift */; }; - 8ADD57162B82291B001F8E8F /* WidgetInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD57142B82291B001F8E8F /* WidgetInterface.swift */; }; - 8ADD57172B82291B001F8E8F /* WidgetInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD57142B82291B001F8E8F /* WidgetInterface.swift */; }; 8ADEBF9E2A83A227007C22CD /* URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADEBF9D2A83A227007C22CD /* URL.swift */; }; 8ADEBF9F2A83A227007C22CD /* URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADEBF9D2A83A227007C22CD /* URL.swift */; }; 8AE024DB2A92457C000548D7 /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 8AE024DA2A92457C000548D7 /* Get */; }; @@ -143,7 +143,6 @@ 8AE8A6EF2B989E9A002B3C9E /* DesktopWidgetTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AE8A6EE2B989E9A002B3C9E /* DesktopWidgetTool.swift */; }; 8AE8A6F12B989E9B002B3C9E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8AE8A6F02B989E9B002B3C9E /* Assets.xcassets */; }; 8AE8A6F62B989E9B002B3C9E /* DesktopWidgetToolExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 8AE8A6E82B989E9A002B3C9E /* DesktopWidgetToolExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 8AE8A6FA2B989EFA002B3C9E /* WidgetInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD57142B82291B001F8E8F /* WidgetInterface.swift */; }; 8AE8A6FB2B989EFA002B3C9E /* GitProviderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AFDAAC82A85112E001937AC /* GitProviderView.swift */; }; 8AE8A6FC2B989EFA002B3C9E /* NoticeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80CF22A55817400819B80 /* NoticeType.swift */; }; 8AE8A6FD2B989EFA002B3C9E /* ApprovedReviewIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80CFA2A55817400819B80 /* ApprovedReviewIcon.swift */; }; @@ -190,7 +189,6 @@ 8AE8A7262B989EFA002B3C9E /* TokenInformationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AC0C20D2A5D51FA0096772B /* TokenInformationView.swift */; }; 8AE8A7272B989EFA002B3C9E /* CIManualIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80CF62A55817400819B80 /* CIManualIcon.swift */; }; 8AE8A7282B989EFA002B3C9E /* CISuccessIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80CFB2A55817400819B80 /* CISuccessIcon.swift */; }; - 8AE8A7292B989EFA002B3C9E /* LastUpdateMessagePlaceholderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D152A55817400819B80 /* LastUpdateMessagePlaceholderView.swift */; }; 8AE8A72A2B989EFA002B3C9E /* ExpandHitBoxModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D122A55817400819B80 /* ExpandHitBoxModifier.swift */; }; 8AE8A72B2B989EFA002B3C9E /* KeyedDecodingContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AE7A3D62A83A3FF0004506F /* KeyedDecodingContainer.swift */; }; 8AE8A72C2B989EFA002B3C9E /* NetworkReachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80CEF2A55817400819B80 /* NetworkReachability.swift */; }; @@ -307,8 +305,6 @@ 8AF80DAC2A55817400819B80 /* LastUpdateMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D132A55817400819B80 /* LastUpdateMessageView.swift */; }; 8AF80DAE2A55817400819B80 /* MergeStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D142A55817400819B80 /* MergeStatusView.swift */; }; 8AF80DAF2A55817400819B80 /* MergeStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D142A55817400819B80 /* MergeStatusView.swift */; }; - 8AF80DB12A55817400819B80 /* LastUpdateMessagePlaceholderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D152A55817400819B80 /* LastUpdateMessagePlaceholderView.swift */; }; - 8AF80DB22A55817400819B80 /* LastUpdateMessagePlaceholderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D152A55817400819B80 /* LastUpdateMessagePlaceholderView.swift */; }; 8AF80DB42A55817400819B80 /* CIStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D162A55817400819B80 /* CIStatusView.swift */; }; 8AF80DB52A55817400819B80 /* CIStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D162A55817400819B80 /* CIStatusView.swift */; }; 8AF80DB72A55817400819B80 /* MergeRequestLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF80D172A55817400819B80 /* MergeRequestLabelView.swift */; }; @@ -472,6 +468,8 @@ 8A5FC11A26EFD08F004136AB /* GitLabUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GitLabUITests.swift; sourceTree = ""; }; 8A5FC11C26EFD08F004136AB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8A7FBF6729C3326D0032E394 /* GitLabAPIService.xpc */ = {isa = PBXFileReference; explicitFileType = "wrapper.xpc-service"; path = GitLabAPIService.xpc; sourceTree = BUILT_PRODUCTS_DIR; }; + 8A91E2142CB7B5FE00BE51B9 /* en.xcloc */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = en.xcloc; sourceTree = ""; }; + 8A91E2162CB7B68900BE51B9 /* UserAvatarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAvatarView.swift; sourceTree = ""; }; 8A9D87892BD2736C00E2C0CD /* ProjectLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectLink.swift; sourceTree = ""; }; 8A9D878E2BD2786E00E2C0CD /* AutoSizingWebLinks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoSizingWebLinks.swift; sourceTree = ""; }; 8AB969012BDBC0210078E5CD /* ExtraLargeMergeRequestWidgetInterface.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtraLargeMergeRequestWidgetInterface.swift; sourceTree = ""; }; @@ -494,7 +492,6 @@ 8ADD57052B821964001F8E8F /* PlainMergeRequestList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlainMergeRequestList.swift; sourceTree = ""; }; 8ADD570A2B82197C001F8E8F /* SectionedMergeRequestList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SectionedMergeRequestList.swift; sourceTree = ""; }; 8ADD570F2B8220D3001F8E8F /* ModelContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModelContainer.swift; sourceTree = ""; }; - 8ADD57142B82291B001F8E8F /* WidgetInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WidgetInterface.swift; path = Views/WidgetInterface.swift; sourceTree = ""; }; 8ADEBF9D2A83A227007C22CD /* URL.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URL.swift; sourceTree = ""; }; 8AE0248A2A91128C000548D7 /* GitLabDesktopWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GitLabDesktopWidgetBundle.swift; sourceTree = ""; }; 8AE0248C2A91128C000548D7 /* GitLabDesktopWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GitLabDesktopWidget.swift; sourceTree = ""; }; @@ -553,7 +550,6 @@ 8AF80D122A55817400819B80 /* ExpandHitBoxModifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExpandHitBoxModifier.swift; sourceTree = ""; }; 8AF80D132A55817400819B80 /* LastUpdateMessageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LastUpdateMessageView.swift; sourceTree = ""; }; 8AF80D142A55817400819B80 /* MergeStatusView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MergeStatusView.swift; sourceTree = ""; }; - 8AF80D152A55817400819B80 /* LastUpdateMessagePlaceholderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LastUpdateMessagePlaceholderView.swift; sourceTree = ""; }; 8AF80D162A55817400819B80 /* CIStatusView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIStatusView.swift; sourceTree = ""; }; 8AF80D172A55817400819B80 /* MergeRequestLabelView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MergeRequestLabelView.swift; sourceTree = ""; }; 8AF80D192A55817400819B80 /* CIJobsNotificationView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIJobsNotificationView.swift; sourceTree = ""; }; @@ -726,6 +722,7 @@ 8A5FC0ED26EFD08E004136AB = { isa = PBXGroup; children = ( + 8A91E2152CB7B5FE00BE51B9 /* GitLab Localizations */, 8A13B85D2A66A3E30090A6D9 /* Credits.rtf */, 8AF80BE92A5580E700819B80 /* Shared */, 8A07E5672890492C0042EACB /* README.md */, @@ -808,6 +805,14 @@ path = Extensions; sourceTree = ""; }; + 8A91E2152CB7B5FE00BE51B9 /* GitLab Localizations */ = { + isa = PBXGroup; + children = ( + 8A91E2142CB7B5FE00BE51B9 /* en.xcloc */, + ); + path = "GitLab Localizations"; + sourceTree = ""; + }; 8AB968FF2BDBBFE60078E5CD /* MergeRequestWiget */ = { isa = PBXGroup; children = ( @@ -880,13 +885,13 @@ 8AF80CDE2A55817400819B80 /* UserInterface */ = { isa = PBXGroup; children = ( + 8A91E2162CB7B68900BE51B9 /* UserAvatarView.swift */, 8AFF87ED2BDA711500D21D16 /* EnvironmentValues */, 8AFDAA962A84FAED001937AC /* SwiftData */, 8A63DE6F2A83A1FC002DD636 /* Extensions */, 8AF80CDF2A55817400819B80 /* Models */, 8AF80CF42A55817400819B80 /* Icons */, 8AF80D062A55817400819B80 /* UserInterface.swift */, - 8ADD57142B82291B001F8E8F /* WidgetInterface.swift */, 8A2E61842A9766A6001B6EAE /* MainGitLabView.swift */, 8AF80D072A55817400819B80 /* Views */, ); @@ -963,7 +968,6 @@ 8AF80D122A55817400819B80 /* ExpandHitBoxModifier.swift */, 8AF80D132A55817400819B80 /* LastUpdateMessageView.swift */, 8AF80D142A55817400819B80 /* MergeStatusView.swift */, - 8AF80D152A55817400819B80 /* LastUpdateMessagePlaceholderView.swift */, 8AF80D162A55817400819B80 /* CIStatusView.swift */, 8AF80D172A55817400819B80 /* MergeRequestLabelView.swift */, 8AF80D182A55817400819B80 /* NotificationViews */, @@ -1347,7 +1351,6 @@ 8AF80D792A55817400819B80 /* CIPendingIcon.swift in Sources */, 8AF80D372A55817400819B80 /* Structs.swift in Sources */, 8AF80D7F2A55817400819B80 /* ShareMergeRequestIcon.swift in Sources */, - 8ADD57162B82291B001F8E8F /* WidgetInterface.swift in Sources */, 8AE024DE2A92471A000548D7 /* KeyedDecodingContainer.swift in Sources */, 8AF80D9A2A55817400819B80 /* AccountSettingsView.swift in Sources */, 8A9D878B2BD2736C00E2C0CD /* ProjectLink.swift in Sources */, @@ -1359,7 +1362,6 @@ 8AFF87F02BDA713800D21D16 /* IsInWidget.swift in Sources */, 8AFDAACA2A85112E001937AC /* GitProviderView.swift in Sources */, 8AF80DCD2A55817400819B80 /* MenuBarButtonStyle.swift in Sources */, - 8AF80DB22A55817400819B80 /* LastUpdateMessagePlaceholderView.swift in Sources */, 8AF80D702A55817400819B80 /* CIWaitingForResourceIcon.swift in Sources */, 8AFDAABE2A850763001937AC /* AddAccountView.swift in Sources */, 8AF80D8B2A55817400819B80 /* CIProgressIcon.swift in Sources */, @@ -1397,6 +1399,7 @@ 8AF80D882A55817400819B80 /* MergeTrainIcon.swift in Sources */, 8AF80D7C2A55817400819B80 /* CIRetryIcon.swift in Sources */, 8AF80D5B2A55817400819B80 /* CISkippedIcon.swift in Sources */, + 8A91E2182CB7B68900BE51B9 /* UserAvatarView.swift in Sources */, 8AF80DAF2A55817400819B80 /* MergeStatusView.swift in Sources */, 8AF80D2E2A55817400819B80 /* NetworkManager+fetchReviewRequestedMergeRequests.swift in Sources */, 8ADD57112B8220D3001F8E8F /* ModelContainer.swift in Sources */, @@ -1436,6 +1439,7 @@ files = ( 8A7935C12A5583E400F8FB6C /* NetworkManager+repoLaunchPad.swift in Sources */, 8A7935C22A5583E400F8FB6C /* LaunchpadState.swift in Sources */, + 8A91E2172CB7B68900BE51B9 /* UserAvatarView.swift in Sources */, 8A7935C32A5583E400F8FB6C /* PushEvents.swift in Sources */, 8A7935C42A5583E400F8FB6C /* NetworkManager+fetchLatestBranchPush.swift in Sources */, 8A7935C52A5583E400F8FB6C /* NetworkManager+fetchReviewRequestedMergeRequests.swift in Sources */, @@ -1475,7 +1479,6 @@ 8AFDAACB2A85112E001937AC /* GitProviderView.swift in Sources */, 8A7935DF2A5583E400F8FB6C /* ShareMergeRequestIcon.swift in Sources */, 8AFAE1942BEB7C1C0030541E /* MergeRequestList.swift in Sources */, - 8ADD57172B82291B001F8E8F /* WidgetInterface.swift in Sources */, 8A7935E02A5583E400F8FB6C /* CICreatedIcon.swift in Sources */, 8A7935E12A5583E400F8FB6C /* NeedsReviewIcon.swift in Sources */, 8A2E61872A9766A6001B6EAE /* MainGitLabView.swift in Sources */, @@ -1496,7 +1499,6 @@ 8A7935ED2A5583E400F8FB6C /* ExpandHitBoxModifier.swift in Sources */, 8A7935EE2A5583E400F8FB6C /* LastUpdateMessageView.swift in Sources */, 8A7935EF2A5583E400F8FB6C /* MergeStatusView.swift in Sources */, - 8A7935F02A5583E400F8FB6C /* LastUpdateMessagePlaceholderView.swift in Sources */, 8A7935F12A5583E400F8FB6C /* CIStatusView.swift in Sources */, 8A7935F22A5583E400F8FB6C /* MergeRequestLabelView.swift in Sources */, 8A7935F32A5583E400F8FB6C /* TitleWebLink.swift in Sources */, @@ -1519,8 +1521,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8AF80DB12A55817400819B80 /* LastUpdateMessagePlaceholderView.swift in Sources */, 8AF80D722A55817400819B80 /* DiscussionCountIcon.swift in Sources */, + 8A91E2192CB7B68900BE51B9 /* UserAvatarView.swift in Sources */, 8AF80D812A55817400819B80 /* CICreatedIcon.swift in Sources */, 8AF80D842A55817400819B80 /* NeedsReviewIcon.swift in Sources */, 8AF80DA52A55817400819B80 /* PipelineView.swift in Sources */, @@ -1560,7 +1562,6 @@ 8AF80D8D2A55817400819B80 /* UserInterface.swift in Sources */, 8AF80D5A2A55817400819B80 /* CISkippedIcon.swift in Sources */, 8AFAE1922BEB7C1C0030541E /* MergeRequestList.swift in Sources */, - 8ADD57152B82291B001F8E8F /* WidgetInterface.swift in Sources */, 8A0CDABB2A55932E0056B63F /* CIJobsNotificationView.swift in Sources */, 8AF80D602A55817400819B80 /* CICanceledIcon.swift in Sources */, 8A2E61852A9766A6001B6EAE /* MainGitLabView.swift in Sources */, @@ -1620,7 +1621,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8AE8A6FA2B989EFA002B3C9E /* WidgetInterface.swift in Sources */, 8AE8A6FB2B989EFA002B3C9E /* GitProviderView.swift in Sources */, 8AE8A6FC2B989EFA002B3C9E /* NoticeType.swift in Sources */, 8AE8A6FD2B989EFA002B3C9E /* ApprovedReviewIcon.swift in Sources */, @@ -1678,7 +1678,6 @@ 8AE8A7262B989EFA002B3C9E /* TokenInformationView.swift in Sources */, 8AE8A7272B989EFA002B3C9E /* CIManualIcon.swift in Sources */, 8AE8A7282B989EFA002B3C9E /* CISuccessIcon.swift in Sources */, - 8AE8A7292B989EFA002B3C9E /* LastUpdateMessagePlaceholderView.swift in Sources */, 8AE8A72A2B989EFA002B3C9E /* ExpandHitBoxModifier.swift in Sources */, 8AE8A72B2B989EFA002B3C9E /* KeyedDecodingContainer.swift in Sources */, 8AE8A72C2B989EFA002B3C9E /* NetworkReachability.swift in Sources */, @@ -1706,6 +1705,7 @@ 8AE8A73D2B989EFA002B3C9E /* RefreshStatus.swift in Sources */, 8AE8A73E2B989EFA002B3C9E /* CIJobsNotificationView.swift in Sources */, 8AB969242BDBC25E0078E5CD /* SmallLaunchPadWidgetView.swift in Sources */, + 8A91E21A2CB7B68900BE51B9 /* UserAvatarView.swift in Sources */, 8AE8A6EF2B989E9A002B3C9E /* DesktopWidgetTool.swift in Sources */, 8AE8A6ED2B989E9A002B3C9E /* DesktopWidgetToolBundle.swift in Sources */, ); diff --git a/Shared/UserInterface/Icons/ApprovedReviewIcon.swift b/Shared/UserInterface/Icons/ApprovedReviewIcon.swift index e7fec87..64a15d3 100644 --- a/Shared/UserInterface/Icons/ApprovedReviewIcon.swift +++ b/Shared/UserInterface/Icons/ApprovedReviewIcon.swift @@ -13,48 +13,6 @@ typealias PlatformImage = NSImage import SwiftUI -struct UserAvatarView: View { - let author: Author - let account: Account? - - @Environment(\.isInWidget) private var isInWidget - - var body: some View { - VStack { - // TODO: ios support - // TODO: cache data fetch response - if isInWidget, let avatarUrl = author.avatarUrl, let data = try? Data(contentsOf: avatarUrl), let image = PlatformImage(data: data) { -#if os(iOS) - Image(uiImage: image) - .resizable() -#elseif os(macOS) - Image(nsImage: image) - .resizable() -#endif - - } else - // Previously we used account.instace to create the base url - if let avatarUrl = author.avatarUrl { - AsyncImage(url: avatarUrl) { image in - image.resizable() - } placeholder: { - Image(systemName: "person.circle.fill") - .symbolRenderingMode(.hierarchical) - .foregroundColor(.secondary) - .font(.system(size: 14)) - } - } - } - .aspectRatio(contentMode: .fill) - .clipShape(Circle()) - .frame(width: 14, height: 14) - .help(author.username ?? "") - } -} - -#Preview { - UserAvatarView(author: .preview, account: .preview) -} struct ApprovedReviewIcon: View { var approvedBy: [Author] @@ -82,7 +40,7 @@ struct ApprovedReviewIcon: View { .opacity(0.3) ) .padding(1) - .help("Merge request approved") + .help(String(localized: "Merge request approved")) } /// TODO: Diff in style from CI completed check circle @@ -91,7 +49,7 @@ struct ApprovedReviewIcon: View { .symbolRenderingMode(.hierarchical) .foregroundColor(.green) .font(.system(size: 18)) - .help("Merge request approved") + .help(String(localized: "Merge request approved")) .clipShape(Rectangle()) // .frame(width: 20, height: 20) } diff --git a/Shared/UserInterface/Icons/CICanceledIcon.swift b/Shared/UserInterface/Icons/CICanceledIcon.swift index bce1179..dbfcabe 100644 --- a/Shared/UserInterface/Icons/CICanceledIcon.swift +++ b/Shared/UserInterface/Icons/CICanceledIcon.swift @@ -12,7 +12,7 @@ struct CICanceledIcon: View { Image(systemName: "circle.slash") .foregroundColor(.gray) .font(.system(size: 18)) - .help("CI canceled") + .help(String(localized: "CI canceled")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CICreatedIcon.swift b/Shared/UserInterface/Icons/CICreatedIcon.swift index c44c67f..7418e44 100644 --- a/Shared/UserInterface/Icons/CICreatedIcon.swift +++ b/Shared/UserInterface/Icons/CICreatedIcon.swift @@ -13,7 +13,7 @@ struct CICreatedIcon: View { .foregroundColor(.secondary) .symbolRenderingMode(.hierarchical) .font(.system(size: 18)) - .help("CI Created") + .help(String(localized: "CI Created")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIFailedIcon.swift b/Shared/UserInterface/Icons/CIFailedIcon.swift index 4b38264..eff14a2 100644 --- a/Shared/UserInterface/Icons/CIFailedIcon.swift +++ b/Shared/UserInterface/Icons/CIFailedIcon.swift @@ -12,7 +12,7 @@ struct CIFailedIcon: View { Image(systemName: "exclamationmark.circle") .foregroundColor(.red) .font(.system(size: 18)) - .help("CI Failed") + .help(String(localized: "CI Failed")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIManualIcon.swift b/Shared/UserInterface/Icons/CIManualIcon.swift index 4ee4ff7..e1bcd4d 100644 --- a/Shared/UserInterface/Icons/CIManualIcon.swift +++ b/Shared/UserInterface/Icons/CIManualIcon.swift @@ -12,7 +12,7 @@ struct CIManualIcon: View { Image(systemName: "gearshape.circle") .foregroundColor(.secondary) .font(.system(size: 18)) - .help("Manual CI step") + .help(String(localized: "Manual CI step")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIPendingIcon.swift b/Shared/UserInterface/Icons/CIPendingIcon.swift index dcf34f8..c7f953d 100644 --- a/Shared/UserInterface/Icons/CIPendingIcon.swift +++ b/Shared/UserInterface/Icons/CIPendingIcon.swift @@ -12,7 +12,7 @@ struct CIPendingIcon: View { Image(systemName: "pause.circle") .foregroundColor(Color(.displayP3, red: (217)/255, green: (123)/255, blue: (0)/255, opacity: 1)) .font(.system(size: 18)) - .help("CI pipeline pending") + .help(String(localized: "CI pipeline pending")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIPreparingIcon.swift b/Shared/UserInterface/Icons/CIPreparingIcon.swift index 1521800..c5a4d1f 100644 --- a/Shared/UserInterface/Icons/CIPreparingIcon.swift +++ b/Shared/UserInterface/Icons/CIPreparingIcon.swift @@ -12,7 +12,7 @@ struct CIPreparingIcon: View { Image(systemName: "circle.dotted") .foregroundColor(.secondary) .font(.system(size: 18)) - .help("CI pipeline preparing") + .help(String(localized: "CI pipeline preparing")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIProgressIcon.swift b/Shared/UserInterface/Icons/CIProgressIcon.swift index ca0fbc2..315704c 100644 --- a/Shared/UserInterface/Icons/CIProgressIcon.swift +++ b/Shared/UserInterface/Icons/CIProgressIcon.swift @@ -33,7 +33,7 @@ struct CIProgressIcon: View { }) } .padding(1) - .help("CI in progress") + .help(String(localized: "CI in progress")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIRetryIcon.swift b/Shared/UserInterface/Icons/CIRetryIcon.swift index 11c021f..f256a8e 100644 --- a/Shared/UserInterface/Icons/CIRetryIcon.swift +++ b/Shared/UserInterface/Icons/CIRetryIcon.swift @@ -12,7 +12,7 @@ struct CIRetryIcon: View { Image(systemName: "exclamationmark.arrow.circlepath") .foregroundColor(.red) .font(.system(size: 18)) - .help("Retry CI pipeline") + .help(String(localized: "Retry CI pipeline")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIScheduledIcon.swift b/Shared/UserInterface/Icons/CIScheduledIcon.swift index 9e5bad7..4126a6d 100644 --- a/Shared/UserInterface/Icons/CIScheduledIcon.swift +++ b/Shared/UserInterface/Icons/CIScheduledIcon.swift @@ -12,7 +12,7 @@ struct CIScheduledIcon: View { Image(systemName: "clock.circle") .foregroundColor(.primary) .font(.system(size: 18)) - .help("CI pipeline scheduled") + .help(String(localized: "CI pipeline scheduled")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CISkippedIcon.swift b/Shared/UserInterface/Icons/CISkippedIcon.swift index 60ed547..04dde61 100644 --- a/Shared/UserInterface/Icons/CISkippedIcon.swift +++ b/Shared/UserInterface/Icons/CISkippedIcon.swift @@ -12,6 +12,7 @@ struct CISkippedIcon: View { Image(systemName: "chevron.right.circle") .foregroundColor(.secondary) .font(.system(size: 18)) + .help(String(localized: "Skipped CI step")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CISuccessIcon.swift b/Shared/UserInterface/Icons/CISuccessIcon.swift index 617328b..81c25ed 100644 --- a/Shared/UserInterface/Icons/CISuccessIcon.swift +++ b/Shared/UserInterface/Icons/CISuccessIcon.swift @@ -12,7 +12,7 @@ struct CISuccessIcon: View { Image(systemName: "checkmark.circle") .foregroundColor(.green) .font(.system(size: 18)) - .help("CI Success") + .help(String(localized: "CI Success")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIWaitingForResourceIcon.swift b/Shared/UserInterface/Icons/CIWaitingForResourceIcon.swift index 1c6f891..a71a812 100644 --- a/Shared/UserInterface/Icons/CIWaitingForResourceIcon.swift +++ b/Shared/UserInterface/Icons/CIWaitingForResourceIcon.swift @@ -12,7 +12,7 @@ struct CIWaitingForResourceIcon: View { Image(systemName: "circle.circle") .foregroundColor(.secondary) .font(.system(size: 18)) - .help("CI pipeline waiting for resources") + .help(String(localized: "CI pipeline waiting for resources")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/CIWarningIcon.swift b/Shared/UserInterface/Icons/CIWarningIcon.swift index eac54a7..97e335e 100644 --- a/Shared/UserInterface/Icons/CIWarningIcon.swift +++ b/Shared/UserInterface/Icons/CIWarningIcon.swift @@ -12,7 +12,7 @@ struct CIWarningIcon: View { Image(systemName: "exclamationmark.circle") .foregroundColor(.orange) .font(.system(size: 18)) - .help("CI Warning") + .help(String(localized: "CI Warning")) .clipShape(Rectangle()) } } diff --git a/Shared/UserInterface/Icons/DiscussionCountIcon.swift b/Shared/UserInterface/Icons/DiscussionCountIcon.swift index 7a2da94..6aed84f 100644 --- a/Shared/UserInterface/Icons/DiscussionCountIcon.swift +++ b/Shared/UserInterface/Icons/DiscussionCountIcon.swift @@ -18,13 +18,13 @@ struct DiscussionCountIcon: View { .font(.system(size: 14)) Text("\(count)") .font(.system(size: 12)) - .help("\(count) discussions") + .help(String(localized: "\(count) discussions")) } } else { Image(systemName: "gift.circle") .symbolRenderingMode(.hierarchical) .font(.system(size: 18)) - .help("Too much discussions") + .help(String(localized: "Too much discussions")) } } } diff --git a/Shared/UserInterface/UserAvatarView.swift b/Shared/UserInterface/UserAvatarView.swift new file mode 100644 index 0000000..de364eb --- /dev/null +++ b/Shared/UserInterface/UserAvatarView.swift @@ -0,0 +1,52 @@ +// +// UserAvatarView.swift +// GitLab +// +// Created by Stef Kors on 10/10/2024. +// + + +import SwiftUI + +struct UserAvatarView: View { + let author: Author + let account: Account? + + @Environment(\.isInWidget) private var isInWidget + + var body: some View { + VStack { + // TODO: ios support + // TODO: cache data fetch response + if isInWidget, let avatarUrl = author.avatarUrl, let data = try? Data(contentsOf: avatarUrl), let image = PlatformImage(data: data) { +#if os(iOS) + Image(uiImage: image) + .resizable() +#elseif os(macOS) + Image(nsImage: image) + .resizable() +#endif + + } else + // Previously we used account.instace to create the base url + if let avatarUrl = author.avatarUrl { + AsyncImage(url: avatarUrl) { image in + image.resizable() + } placeholder: { + Image(systemName: "person.circle.fill") + .symbolRenderingMode(.hierarchical) + .foregroundColor(.secondary) + .font(.system(size: 14)) + } + } + } + .aspectRatio(contentMode: .fill) + .clipShape(Circle()) + .frame(width: 14, height: 14) + .help(author.username ?? "") + } +} + +#Preview { + UserAvatarView(author: .preview, account: .preview) +} diff --git a/Shared/UserInterface/Views/CIJobsView.swift b/Shared/UserInterface/Views/CIJobsView.swift index 56b1d1f..c2fab2e 100644 --- a/Shared/UserInterface/Views/CIJobsView.swift +++ b/Shared/UserInterface/Views/CIJobsView.swift @@ -18,7 +18,6 @@ struct CIJobsView: View { } @State var presentPopover: Bool = false - @State var isHovering: Bool = false @State var tapState: Bool = false private var hasFailedChildJob: Bool { @@ -66,9 +65,5 @@ struct CIJobsView: View { } }) } - .animation(.spring(response: 0.35, dampingFraction: 1, blendDuration: 0), value: isHovering) - // .onHover { hovering in - // isHovering = hovering - // } } } diff --git a/Shared/UserInterface/Views/LastUpdateMessagePlaceholderView.swift b/Shared/UserInterface/Views/LastUpdateMessagePlaceholderView.swift deleted file mode 100644 index 746e6fe..0000000 --- a/Shared/UserInterface/Views/LastUpdateMessagePlaceholderView.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// LastUpdateMessagePlaceholderView.swift -// -// -// Created by Stef Kors on 19/09/2022. -// - -import SwiftUI - -struct LastUpdateMessagePlaceholderView: View { - var body: some View { - Text("Last updated at: 19 September 2022 at 12:43") - .opacity(0) - .redacted(reason: .placeholder) - .transition(.opacity.animation(.easeInOut(duration: 0.35).delay(0.2))) - .foregroundColor(.gray) - .font(.system(size: 10)) - .cornerRadius(5) - } -} - -struct LastUpdateMessagePlaceholderView_Previews: PreviewProvider { - static var previews: some View { - LastUpdateMessagePlaceholderView() - } -} diff --git a/Shared/UserInterface/Views/MenuBarButtonStyle.swift b/Shared/UserInterface/Views/MenuBarButtonStyle.swift index 280a155..ec1dc0c 100644 --- a/Shared/UserInterface/Views/MenuBarButtonStyle.swift +++ b/Shared/UserInterface/Views/MenuBarButtonStyle.swift @@ -18,8 +18,6 @@ import SwiftUI configuration.label } .opacity(isMouseDown ? 0 : 1) - // .offset(y: isMouseDown ? 10 : 0) - // .scaleEffect(isMouseDown ? 0.7 : 1) .animation(.spring(), value: isMouseDown) } diff --git a/Shared/UserInterface/Views/TitleWebLink.swift b/Shared/UserInterface/Views/TitleWebLink.swift index 43fbf99..23221e0 100644 --- a/Shared/UserInterface/Views/TitleWebLink.swift +++ b/Shared/UserInterface/Views/TitleWebLink.swift @@ -34,8 +34,8 @@ struct TitleWebLink: View { return linkText } - var body: some View { - let text = HStack { + var TitleLabel: some View { + HStack { if linkText.isDraft { Text("Draft") .font(.footnote) @@ -50,18 +50,18 @@ struct TitleWebLink: View { .foregroundColor(isHovering ? .accentColor : .primary) .multilineTextAlignment(.leading) } -// .animation(.easeInOut(duration: 0.2), value: isHovering) - + } + var body: some View { if let url = destination { Link(destination: url, label: { - text + TitleLabel }).onHover { hovering in isHovering = hovering } } else { - text + TitleLabel } } diff --git a/Shared/UserInterface/Views/TokenInformationView.swift b/Shared/UserInterface/Views/TokenInformationView.swift index 06a6969..3326d5c 100644 --- a/Shared/UserInterface/Views/TokenInformationView.swift +++ b/Shared/UserInterface/Views/TokenInformationView.swift @@ -79,8 +79,6 @@ struct TokenInformationView: View { GroupBox { Text(scope) } - // .padding(2) - // .background(Color.accentColor, in: RoundedRectangle(cornerRadius: 4)) } } } diff --git a/Shared/UserInterface/Views/WebLink.swift b/Shared/UserInterface/Views/WebLink.swift index 74e974d..0330e67 100644 --- a/Shared/UserInterface/Views/WebLink.swift +++ b/Shared/UserInterface/Views/WebLink.swift @@ -22,15 +22,10 @@ struct WebLink: View { } .foregroundColor(isHovering ? .primary : .secondary) .animation(.interactiveSpring(), value: isHovering) -// .lineLimit(1) -// .truncationMode(.head) }) -// Link(linkText, destination: url) } else { Text(linkText) .foregroundColor(.secondary) -// .lineLimit(1) -// .truncationMode(.head) } } } diff --git a/Shared/UserInterface/Views/WidgetInterface.swift b/Shared/UserInterface/Views/WidgetInterface.swift deleted file mode 100644 index 2de3fad..0000000 --- a/Shared/UserInterface/Views/WidgetInterface.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// UserInterface.swift -// GitLab -// -// Created by Stef Kors on 13/09/2021. -// - -import SwiftUI -import SwiftData -// -//struct WidgetInterface: View { -// // last update -// var lastUpdate: Date? -// var mergeRequests: [MergeRequest] = [] -// var accounts: [Account] = [] -// var repos: [LaunchpadRepo] = [] -// -// @State private var selectedView: QueryType = .reviewRequestedMergeRequests -// @State private var timelineDate: Date = .now -// -// var filteredMergeRequests: [MergeRequest] { -// mergeRequests //.filter { $0.type == selectedView } -// } -// -// var body: some View { -// VStack(alignment: .leading, spacing: 10) { -// VStack(alignment: .leading) { -// if accounts.count > 1 { -// SectionedMergeRequestList( -// accounts: accounts, -// mergeRequests: filteredMergeRequests, -// selectedView: selectedView -// ) -// } else { -// PlainMergeRequestList(mergeRequests: filteredMergeRequests) -// } -// } -// -// if let lastUpdate { -// Text(lastUpdate.description) -// } -// -// Text("mergeRequests \(mergeRequests.count.description)") -// Text("accounts \(accounts.count.description)") -// Text("repos \(repos.count.description)") -// if accounts.isEmpty { -// BaseTextView(message: "Setup your accounts in the settings") -// } else if filteredMergeRequests.isEmpty { -// -// BaseTextView(message: "All done 🥳") -// .foregroundStyle(.secondary) -// } -// -// -// }.frame(alignment: .top) -// } -//} -// -//#Preview { -// WidgetInterface() -//}