@@ -25,19 +25,10 @@ class TicketQueryViewController: BaseViewController {
25
25
self . stackContentView. addView ( firstSearchView, in: . top)
26
26
self . stackContentView. addView ( secondSearchView, in: . top)
27
27
self . stackContentView. addView ( ticketTableView, in: . top)
28
-
29
28
self . stackContentView. orientation = . vertical
30
29
self . stackContentView. alignment = . centerX
31
30
self . stackContentView. spacing = 0
32
31
33
- self . fromStationNameTxt. tableViewDelegate = self
34
- self . toStationNameTxt. tableViewDelegate = self
35
-
36
- self . fromStationNameTxt. stringValue = QueryDefaultManager . sharedInstance. lastFromStation
37
- self . toStationNameTxt. stringValue = QueryDefaultManager . sharedInstance. lastToStation
38
-
39
- passengerViewControllerList = [ PassengerViewController] ( )
40
-
41
32
filterBtn. isEnabled = false
42
33
filterCbx. isEnabled = false
43
34
filterBtn. isHidden = true
@@ -46,14 +37,27 @@ class TicketQueryViewController: BaseViewController {
46
37
autoQueryNumTxt. isHidden = true
47
38
48
39
self . registerAllNotification ( )
40
+ self . initQueryParams ( )
41
+ self . initSortParams ( )
42
+ }
43
+
44
+ private func initQueryParams( ) {
45
+ self . fromStationNameTxt. tableViewDelegate = self
46
+ self . toStationNameTxt. tableViewDelegate = self
47
+
48
+ self . fromStationNameTxt. stringValue = QueryDefaultManager . sharedInstance. lastFromStation
49
+ self . toStationNameTxt. stringValue = QueryDefaultManager . sharedInstance. lastToStation
49
50
50
51
if QueryDefaultManager . sharedInstance. lastQueryDate. compare ( Date ( ) ) == . orderedAscending {
51
- self . setQueryDateValue ( Date ( ) )
52
+ self . allSelectedDates . append ( Date ( ) )
52
53
}
53
54
else {
54
- self . setQueryDateValue ( QueryDefaultManager . sharedInstance. lastQueryDate as Date )
55
+ self . allSelectedDates . append ( QueryDefaultManager . sharedInstance. lastQueryDate as Date )
55
56
}
56
-
57
+ self . setQueryDateValue ( allSelectedDates, index: self . queryDateIndex)
58
+ }
59
+
60
+ private func initSortParams( ) {
57
61
let descriptorStartTime = NSSortDescriptor ( key: TicketOrder . StartTime. rawValue, ascending: true )
58
62
let descriptorArriveTime = NSSortDescriptor ( key: TicketOrder . ArriveTime. rawValue, ascending: true )
59
63
let descriptorLishi = NSSortDescriptor ( key: TicketOrder . Lishi. rawValue, ascending: true )
@@ -69,24 +73,38 @@ class TicketQueryViewController: BaseViewController {
69
73
@IBOutlet weak var queryBtn : NSButton !
70
74
@IBOutlet weak var converCityBtn : NSButton !
71
75
@IBOutlet weak var autoQueryNumTxt : NSTextField !
76
+ @IBOutlet weak var queryDataLabel : NSTextField !
72
77
73
78
var autoQueryNum = 0
74
79
var calendarViewController : LunarCalendarView ?
75
80
var repeatTimer : Timer ?
76
81
var ticketType : TicketType = . Normal
82
+ var allSelectedDates : [ Date ] = [ Date] ( )
83
+ var queryDateIndex = 0
77
84
78
85
fileprivate func getDateStr( _ date: Date ) -> String {
79
86
let dateDescription = date. description
80
87
let dateRange = dateDescription. range ( of: " " )
81
88
return dateDescription [ dateDescription. startIndex..< dateRange!. lowerBound]
82
89
}
83
90
84
- fileprivate func setQueryDateValue( _ date : Date ) {
91
+ fileprivate func setQueryDateValue( _ dates : [ Date ] , index : Int ) {
85
92
var calender = Calendar . current
86
93
calender. timeZone = TimeZone ( abbreviation: " UTC " ) !
87
- let trunkNextDate = calender. startOfDay ( for: date)
88
94
89
- self . queryDate. dateValue = trunkNextDate
95
+ if dates. count > 1 {
96
+ self . queryDataLabel. stringValue = " 出发日期 \( dates. count) - \( index + 1 ) "
97
+ }
98
+ else {
99
+ self . queryDataLabel. stringValue = " 出发日期 "
100
+ }
101
+
102
+ self . queryDate. dateValue = calender. startOfDay ( for: dates [ index] )
103
+ self . queryDateIndex = index + 1
104
+ if self . queryDateIndex >= self . allSelectedDates. count {
105
+ self . queryDateIndex = 0
106
+ }
107
+
90
108
}
91
109
92
110
fileprivate func stopAutoQuery( ) {
@@ -214,21 +232,6 @@ class TicketQueryViewController: BaseViewController {
214
232
return popover
215
233
} ( )
216
234
217
-
218
-
219
- func openSubmitSheet( isAutoSubmit: Bool , ifShowCode: Bool = true ) {
220
- submitWindowController = SubmitWindowController ( )
221
- submitWindowController. isAutoSubmit = isAutoSubmit
222
- submitWindowController. ifShowCode = ifShowCode
223
- if let window = self . view. window {
224
- window. beginSheet ( submitWindowController. window!, completionHandler: { response in
225
- if response == NSModalResponseOK{
226
- ///
227
- }
228
- } )
229
- }
230
- }
231
-
232
235
func ticketOrderedBy( _ tickets: [ QueryLeftNewDTO ] , orderedBy: TicketOrder , ascending: Bool ) -> [ QueryLeftNewDTO ] {
233
236
let sortedTickets : [ QueryLeftNewDTO ] = tickets. sorted {
234
237
var isOriginAscending = true
@@ -253,42 +256,6 @@ class TicketQueryViewController: BaseViewController {
253
256
return sortedTickets
254
257
}
255
258
256
- func filterTrain( ) {
257
- trainFilterWindowController. trains = ticketQueryResult. filter ( { item in
258
- return !item. isTicketInvalid ( )
259
- } )
260
- trainFilterWindowController. fromStationName = self . fromStationNameTxt. stringValue
261
- trainFilterWindowController. toStationName = self . toStationNameTxt. stringValue
262
- trainFilterWindowController. trainDate = self . date!
263
-
264
-
265
- if let window = self . view. window {
266
- window. beginSheet ( trainFilterWindowController. window!, completionHandler: { response in
267
- if response == NSModalResponseOK{
268
- self . trainFilterKey = self . trainFilterWindowController. trainFilterKey
269
- self . seatFilterKey = self . trainFilterWindowController. seatFilterKey
270
- logger. info ( " trainFilterKey: \( self . trainFilterKey) " )
271
- logger. info ( " seatFilterKey: \( self . seatFilterKey) " )
272
-
273
- self . filterQueryResult = self . ticketQueryResult. filter ( { item in return self . trainFilterKey. contains ( " | " + item. TrainCode! + " | " ) } )
274
-
275
- if let ticketOrderX = self . ticketOrder, let ticketAscendingX = self . ticketAscending {
276
- self . filterQueryResult = self . ticketOrderedBy ( self . filterQueryResult, orderedBy: ticketOrderX, ascending: ticketAscendingX)
277
- }
278
-
279
- self . leftTicketTable. reloadData ( )
280
-
281
- if GeneralPreferenceManager . sharedInstance. isAutoQueryAfterFilter {
282
- self . autoQuery = true
283
- }
284
- }
285
- else {
286
- self . autoQuery = false ;
287
- }
288
- } )
289
- }
290
- }
291
-
292
259
func queryTicketAndSubmit( ) {
293
260
let summitHandler = {
294
261
self . addAutoQueryNumStatus ( )
@@ -326,6 +293,10 @@ class TicketQueryViewController: BaseViewController {
326
293
func queryTicket( _ summitHandler: @escaping ( ) -> ( ) = { } ) {
327
294
let fromStation = self . fromStationNameTxt. stringValue
328
295
let toStation = self . toStationNameTxt. stringValue
296
+
297
+
298
+ self . setQueryDateValue ( allSelectedDates, index: self . queryDateIndex)
299
+
329
300
let date = getDateStr ( queryDate. dateValue)
330
301
331
302
logger. info ( " \( fromStation) -> \( toStation) \( date) \( self . autoQueryNum) " )
@@ -485,11 +456,60 @@ class TicketQueryViewController: BaseViewController {
485
456
}
486
457
}
487
458
488
-
489
459
deinit {
490
460
let notificationCenter = NotificationCenter . default
491
461
notificationCenter. removeObserver ( self )
492
462
}
463
+
464
+ // MARK: - open sheet
465
+ func openfilterTrainSheet( ) {
466
+ trainFilterWindowController. trains = ticketQueryResult. filter ( { item in
467
+ return !item. isTicketInvalid ( )
468
+ } )
469
+ trainFilterWindowController. fromStationName = self . fromStationNameTxt. stringValue
470
+ trainFilterWindowController. toStationName = self . toStationNameTxt. stringValue
471
+ trainFilterWindowController. trainDate = self . date!
472
+
473
+
474
+ if let window = self . view. window {
475
+ window. beginSheet ( trainFilterWindowController. window!, completionHandler: { response in
476
+ if response == NSModalResponseOK{
477
+ self . trainFilterKey = self . trainFilterWindowController. trainFilterKey
478
+ self . seatFilterKey = self . trainFilterWindowController. seatFilterKey
479
+ logger. info ( " trainFilterKey: \( self . trainFilterKey) " )
480
+ logger. info ( " seatFilterKey: \( self . seatFilterKey) " )
481
+
482
+ self . filterQueryResult = self . ticketQueryResult. filter ( { item in return self . trainFilterKey. contains ( " | " + item. TrainCode! + " | " ) } )
483
+
484
+ if let ticketOrderX = self . ticketOrder, let ticketAscendingX = self . ticketAscending {
485
+ self . filterQueryResult = self . ticketOrderedBy ( self . filterQueryResult, orderedBy: ticketOrderX, ascending: ticketAscendingX)
486
+ }
487
+
488
+ self . leftTicketTable. reloadData ( )
489
+
490
+ if GeneralPreferenceManager . sharedInstance. isAutoQueryAfterFilter {
491
+ self . autoQuery = true
492
+ }
493
+ }
494
+ else {
495
+ self . autoQuery = false ;
496
+ }
497
+ } )
498
+ }
499
+ }
500
+
501
+ func openSubmitTicketSheet( isAutoSubmit: Bool , ifShowCode: Bool = true ) {
502
+ submitWindowController = SubmitWindowController ( )
503
+ submitWindowController. isAutoSubmit = isAutoSubmit
504
+ submitWindowController. ifShowCode = ifShowCode
505
+ if let window = self . view. window {
506
+ window. beginSheet ( submitWindowController. window!, completionHandler: { response in
507
+ if response == NSModalResponseOK{
508
+ ///
509
+ }
510
+ } )
511
+ }
512
+ }
493
513
494
514
// MARK: - notification
495
515
func registerAllNotification( ) {
@@ -563,15 +583,15 @@ class TicketQueryViewController: BaseViewController {
563
583
}
564
584
565
585
func recvDidSubmitNotification( _ note: Notification ) {
566
- openSubmitSheet ( isAutoSubmit: false )
586
+ openSubmitTicketSheet ( isAutoSubmit: false )
567
587
}
568
588
569
589
func recvAutoSubmitNotification( _ note: Notification ) {
570
- openSubmitSheet ( isAutoSubmit: true )
590
+ openSubmitTicketSheet ( isAutoSubmit: true )
571
591
}
572
592
573
593
func recvAutoSubmitWithoutRandCodeNotification( _ note: Notification ) {
574
- openSubmitSheet ( isAutoSubmit: true , ifShowCode: false )
594
+ openSubmitTicketSheet ( isAutoSubmit: true , ifShowCode: false )
575
595
}
576
596
577
597
// MARK: - Click Action
@@ -623,7 +643,7 @@ class TicketQueryViewController: BaseViewController {
623
643
@IBAction func clickAutoQueryCbx( _ sender: NSButton ) {
624
644
if sender. state == NSOnState {
625
645
if self . seatFilterKey == " " {
626
- self . filterTrain ( )
646
+ self . openfilterTrainSheet ( )
627
647
}
628
648
else {
629
649
autoQuery = true
@@ -635,7 +655,7 @@ class TicketQueryViewController: BaseViewController {
635
655
}
636
656
637
657
@IBAction func clickFilterTrain( _ sender: AnyObject ) {
638
- self . filterTrain ( )
658
+ self . openfilterTrainSheet ( )
639
659
}
640
660
641
661
@IBAction func clickAddPassenger( _ sender: NSButton ) {
@@ -750,6 +770,7 @@ extension TicketQueryViewController:NSPopoverDelegate {
750
770
@IBAction func showCalendar( _ sender: AnyObject ) {
751
771
let calendarPopover = NSPopover ( )
752
772
let cp = LunarCalendarView ( with: self . queryDate. dateValue)
773
+ cp. allSelectedDates = self . allSelectedDates
753
774
calendarPopover. contentViewController = cp
754
775
calendarPopover. appearance = NSAppearance ( named: " NSAppearanceNameAqua " )
755
776
calendarPopover. animates = true
@@ -762,7 +783,8 @@ extension TicketQueryViewController:NSPopoverDelegate {
762
783
}
763
784
764
785
func popoverDidClose( _ notification: Notification ) {
765
- self . setQueryDateValue ( calendarViewController!. allSelectedDates [ 0 ] )
786
+ self . allSelectedDates = calendarViewController!. allSelectedDates
787
+ self . queryDateIndex = 0
766
788
767
789
autoQuery = false
768
790
self . clickQueryTicketBtn ( nil )
0 commit comments