@@ -18,7 +18,8 @@ struct ProjectFormView: View {
18
18
@State private var outputPathValid = false
19
19
@State private var stringsDirectoryValid = false
20
20
@State private var outputSwiftCodeFileDirectoryValid = false
21
-
21
+ @State private var copied = false
22
+
22
23
var onSave : ( ( Project ) -> Void ) ? = nil
23
24
var onDelete : ( ( Project ) -> Void ) ? = nil
24
25
var onLocalize : ( ( Project ) -> Void ) ? = nil
@@ -52,6 +53,19 @@ struct ProjectFormView: View {
52
53
deleteButton ( for: viewModel. project) . padding ( )
53
54
}
54
55
. padding ( )
56
+ . overlay {
57
+ if copied {
58
+ Text ( " Copied to clipboard! " )
59
+ . padding ( 8 )
60
+ . background (
61
+ Color . black
62
+ . opacity ( 0.4 )
63
+ )
64
+ . clipShape ( RoundedRectangle ( cornerRadius: 6 ) )
65
+ . frame ( maxWidth: . infinity, maxHeight: . infinity, alignment: . top)
66
+ . padding ( . top, 6 )
67
+ }
68
+ }
55
69
}
56
70
}
57
71
@@ -104,7 +118,8 @@ private extension ProjectFormView {
104
118
bookmarkDataKey: viewModel. project. bookmarkDataForDirectoryPath,
105
119
directoryPath: $viewModel. project. directoryPath,
106
120
isValid: $outputPathValid,
107
- onDirectorySelected: updateDirectoryPaths
121
+ onDirectorySelected: updateDirectoryPaths,
122
+ onDirectoryCopied: showCopiedMessage
108
123
)
109
124
} ) {
110
125
Text ( . init( Lingua . ProjectForm. outputDirectoryHelp) )
@@ -135,7 +150,8 @@ private extension ProjectFormView {
135
150
title: Lingua . ProjectForm. stringsDirectory,
136
151
bookmarkDataKey: viewModel. project. bookmarkDataForStringsDirectory,
137
152
directoryPath: $viewModel. project. swiftCode. stringsDirectory,
138
- isValid: $stringsDirectoryValid
153
+ isValid: $stringsDirectoryValid,
154
+ onDirectoryCopied: showCopiedMessage
139
155
)
140
156
} ) {
141
157
Text ( . init( Lingua . ProjectForm. lprojDirectoryHelp) )
@@ -147,7 +163,8 @@ private extension ProjectFormView {
147
163
title: Lingua . ProjectForm. linguaSwiftOutputDirectory,
148
164
bookmarkDataKey: viewModel. project. bookmarkDataForOutputSwiftCodeFileDirectory ,
149
165
directoryPath: $viewModel. project. swiftCode. outputSwiftCodeFileDirectory,
150
- isValid: $outputSwiftCodeFileDirectoryValid
166
+ isValid: $outputSwiftCodeFileDirectoryValid,
167
+ onDirectoryCopied: showCopiedMessage
151
168
)
152
169
} ) {
153
170
Text ( . init( Lingua . ProjectForm. linguaSwiftOutputDirectoryHelp) )
@@ -242,4 +259,15 @@ private extension ProjectFormView {
242
259
try ? firstLprojFullURL. saveBookmarkData ( forKey: viewModel. project. bookmarkDataForStringsDirectory)
243
260
}
244
261
}
262
+
263
+ func showCopiedMessage( ) {
264
+ withAnimation {
265
+ copied = true
266
+ }
267
+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + 1.5 ) {
268
+ withAnimation {
269
+ self . copied = false
270
+ }
271
+ }
272
+ }
245
273
}
0 commit comments