@@ -9,8 +9,14 @@ import SwiftUI
99
1010struct MykeMode : View {
1111
12- @State private var selectedDate : Date = Date ( timeIntervalSince1970: TimeInterval ( 1639239835 ) )
12+ // @State private var selectedDate: Date = Date(timeIntervalSince1970: TimeInterval(1639239835))
1313// @State private var selectedDate: Date = Date(timeIntervalSince1970: TimeInterval(1631892600))
14+
15+ @Binding var selectedDate : Date
16+ @Binding var selectedTimeZone : String
17+
18+ @State private var selectedFormatStyle : DateFormat = dateFormats [ 0 ]
19+
1420 @State private var selectedTimeZones : [ TimeZone ] = [
1521 TimeZone ( identifier: " America/Los_Angeles " ) !,
1622 TimeZone ( identifier: " America/New_York " ) !,
@@ -24,36 +30,48 @@ struct MykeMode: View {
2430 df. timeStyle = . short
2531 df. timeZone = zone
2632 df. locale = Locale ( identifier: " en/us " )
27- return df. string ( from: selectedDate)
33+ return df. string ( from: convert ( date : selectedDate, from : TimeZone ( identifier : selectedTimeZone ) ! , to : TimeZone . current ) )
2834 }
2935
3036 var body : some View {
3137
32- VStack ( alignment: . leading, spacing: 20 ) {
33-
34- Text ( " \( selectedDate) " )
38+ NavigationView {
3539
36- List {
37- ForEach ( selectedTimeZones, id: \. self) { tz in
38- HStack {
39- Text ( " \( flagForTimeZone ( tz) ) \( selectedTimeInZone ( tz) ) " )
40- Spacer ( )
41- if let abbreviation = fudgedAbbreviation ( for: tz) {
42- Text ( abbreviation)
43- . foregroundColor ( . secondary)
40+ ScrollView ( showsIndicators: true ) {
41+ DateTimeZonePicker ( selectedDate: $selectedDate, selectedTimeZone: $selectedTimeZone)
42+
43+ Text ( " Time Zones: " )
44+ . font ( . headline)
45+ . frame ( minWidth: 0 , maxWidth: . infinity, alignment: . leading)
46+
47+ List {
48+ ForEach ( selectedTimeZones, id: \. self) { tz in
49+ HStack {
50+ Text ( " \( flagForTimeZone ( tz) ) \( selectedTimeInZone ( tz) ) " )
51+ Spacer ( )
52+ if let abbreviation = fudgedAbbreviation ( for: tz) {
53+ Text ( abbreviation)
54+ . foregroundColor ( . secondary)
55+ }
56+ }
57+ . onDrag {
58+ let tzItemProvider = tz. itemProvider
59+ let itemProvider = NSItemProvider ( object: tzItemProvider)
60+ itemProvider. suggestedName = tzItemProvider. resolvedName
61+ return itemProvider
4462 }
4563 }
46- . onDrag {
47- let tzItemProvider = tz. itemProvider
48- let itemProvider = NSItemProvider ( object: tzItemProvider)
49- itemProvider. suggestedName = tzItemProvider. resolvedName
50- return itemProvider
51- }
64+ . onMove ( perform: move)
5265 }
53- . onMove ( perform: move)
66+ . listStyle ( PlainListStyle ( ) )
67+ . scaledToFill ( )
68+
5469 }
55-
70+ . padding ( . horizontal)
71+ . navigationTitle ( " Myke Mode " )
72+ . navigationBarTitleDisplayMode ( . inline)
5673 }
74+ . navigationViewStyle ( StackNavigationViewStyle ( ) )
5775
5876 }
5977
@@ -79,6 +97,6 @@ struct MykeMode: View {
7997
8098struct MykeMode_Previews : PreviewProvider {
8199 static var previews : some View {
82- MykeMode ( )
100+ MykeMode ( selectedDate : . constant ( Date ( ) ) , selectedTimeZone : . constant ( " America/Los_Angeles " ) )
83101 }
84102}
0 commit comments