xref: /OpenGrok/opengrok-indexer/src/test/resources/analysis/swift/sample.swift (revision eeb7e5b33d1bcc524fcc9d1d560447b044e286a4)
1*eeb7e5b3SAdam Hornáček // Copyright (c) 2017 di2pra <pas495@gmail.com>
2*eeb7e5b3SAdam Hornáček //
3*eeb7e5b3SAdam Hornáček // Permission is hereby granted, free of charge, to any person obtaining a copy
4*eeb7e5b3SAdam Hornáček // of this software and associated documentation files (the "Software"), to deal
5*eeb7e5b3SAdam Hornáček // in the Software without restriction, including without limitation the rights
6*eeb7e5b3SAdam Hornáček // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7*eeb7e5b3SAdam Hornáček // copies of the Software, and to permit persons to whom the Software is
8*eeb7e5b3SAdam Hornáček // furnished to do so, subject to the following conditions:
9*eeb7e5b3SAdam Hornáček //
10*eeb7e5b3SAdam Hornáček // The above copyright notice and this permission notice shall be included in
11*eeb7e5b3SAdam Hornáček // all copies or substantial portions of the Software.
12*eeb7e5b3SAdam Hornáček //
13*eeb7e5b3SAdam Hornáček // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14*eeb7e5b3SAdam Hornáček // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15*eeb7e5b3SAdam Hornáček // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16*eeb7e5b3SAdam Hornáček // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17*eeb7e5b3SAdam Hornáček // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18*eeb7e5b3SAdam Hornáček // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19*eeb7e5b3SAdam Hornáček // THE SOFTWARE.
20*eeb7e5b3SAdam Hornáček 
21*eeb7e5b3SAdam Hornáček //
22*eeb7e5b3SAdam Hornáček //  D2PDatePicker.swift
23*eeb7e5b3SAdam Hornáček //  D2PDatePicker
24*eeb7e5b3SAdam Hornáček //
25*eeb7e5b3SAdam Hornáček //  Created by Pradheep Rajendirane on 09/08/2017.
26*eeb7e5b3SAdam Hornáček //  Copyright © 2017 DI2PRA. All rights reserved.
27*eeb7e5b3SAdam Hornáček //
28*eeb7e5b3SAdam Hornáček 
29*eeb7e5b3SAdam Hornáček import UIKit
30*eeb7e5b3SAdam Hornáček 
31*eeb7e5b3SAdam Hornáček public protocol D2PDatePickerDelegate: class {
didChangenull32*eeb7e5b3SAdam Hornáček     func didChange(toDate date: Date)
33*eeb7e5b3SAdam Hornáček }
34*eeb7e5b3SAdam Hornáček 
35*eeb7e5b3SAdam Hornáček public class D2PDatePicker: UIView {
36*eeb7e5b3SAdam Hornáček 
37*eeb7e5b3SAdam Hornáček     public weak var delegate: D2PDatePickerDelegate?
38*eeb7e5b3SAdam Hornáček 
39*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var topView:UIView!
40*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var middleView:UIView!
41*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var bottomView:UIView!
42*eeb7e5b3SAdam Hornáček 
43*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var dayNextBtn:UIButton!
44*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var dayPrevBtn:UIButton!
45*eeb7e5b3SAdam Hornáček 
46*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var monthNextBtn:UIButton!
47*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var monthPrevBtn:UIButton!
48*eeb7e5b3SAdam Hornáček 
49*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var yearNextBtn:UIButton!
50*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var yearPrevBtn:UIButton!
51*eeb7e5b3SAdam Hornáček 
52*eeb7e5b3SAdam Hornáček     @IBOutlet private  weak var dayView:DayView!
53*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var monthView:MonthView!
54*eeb7e5b3SAdam Hornáček     @IBOutlet private weak var yearView:YearView!
55*eeb7e5b3SAdam Hornáček 
56*eeb7e5b3SAdam Hornáček 
57*eeb7e5b3SAdam Hornáček     private var selectedDate:Date! = Date() {
58*eeb7e5b3SAdam Hornáček         didSet {
59*eeb7e5b3SAdam Hornáček             delegate?.didChange(toDate: selectedDate)
60*eeb7e5b3SAdam Hornáček         }
61*eeb7e5b3SAdam Hornáček     }
62*eeb7e5b3SAdam Hornáček 
63*eeb7e5b3SAdam Hornáček 
64*eeb7e5b3SAdam Hornáček     required public init?(coder aDecoder: NSCoder) {   // 2 - storyboard initializer
65*eeb7e5b3SAdam Hornáček         super.init(coder: aDecoder)
66*eeb7e5b3SAdam Hornáček 
67*eeb7e5b3SAdam Hornáček         fromNib()   // 5.
68*eeb7e5b3SAdam Hornáček 
69*eeb7e5b3SAdam Hornáček     }
70*eeb7e5b3SAdam Hornáček 
71*eeb7e5b3SAdam Hornáček     override init(frame: CGRect) {
72*eeb7e5b3SAdam Hornáček         super.init(frame: CGRect())  // 4.
73*eeb7e5b3SAdam Hornáček         fromNib()  // 6.
74*eeb7e5b3SAdam Hornáček     }
75*eeb7e5b3SAdam Hornáček 
76*eeb7e5b3SAdam Hornáček     public convenience init(frame: CGRect, date: Date) {
77*eeb7e5b3SAdam Hornáček 
78*eeb7e5b3SAdam Hornáček         self.init(frame: frame)
79*eeb7e5b3SAdam Hornáček         self.selectedDate = date
80*eeb7e5b3SAdam Hornáček         self.awakeFromNib()
81*eeb7e5b3SAdam Hornáček 
82*eeb7e5b3SAdam Hornáček     }
83*eeb7e5b3SAdam Hornáček 
84*eeb7e5b3SAdam Hornáček     public var mainColor: UIColor! = UIColor(red:0.99, green:0.28, blue:0.25, alpha:1.0) { // #FD4741
85*eeb7e5b3SAdam Hornáček         didSet {
86*eeb7e5b3SAdam Hornáček             self.topView.backgroundColor = mainColor
87*eeb7e5b3SAdam Hornáček             self.dayView.weekDayLabel.textColor = mainColor
88*eeb7e5b3SAdam Hornáček         }
89*eeb7e5b3SAdam Hornáček     }
90*eeb7e5b3SAdam Hornáček 
91*eeb7e5b3SAdam Hornáček 
92*eeb7e5b3SAdam Hornáček     /*init() {   // 3 - programmatic initializer
93*eeb7e5b3SAdam Hornáček         super.init(frame: CGRect())  // 4.
94*eeb7e5b3SAdam Hornáček 
95*eeb7e5b3SAdam Hornáček 
96*eeb7e5b3SAdam Hornáček     }*/
97*eeb7e5b3SAdam Hornáček 
98*eeb7e5b3SAdam Hornáček     override public func awakeFromNib() {
99*eeb7e5b3SAdam Hornáček         super.awakeFromNib()
100*eeb7e5b3SAdam Hornáček 
101*eeb7e5b3SAdam Hornáček         // topView Rounded Corner
102*eeb7e5b3SAdam Hornáček         self.topView.layer.cornerRadius = 10.0
103*eeb7e5b3SAdam Hornáček         self.topView.clipsToBounds = true
104*eeb7e5b3SAdam Hornáček 
105*eeb7e5b3SAdam Hornáček 
106*eeb7e5b3SAdam Hornáček         // middleView Border
107*eeb7e5b3SAdam Hornáček         self.middleView.layer.borderColor = UIColor.groupTableViewBackground.cgColor
108*eeb7e5b3SAdam Hornáček         self.middleView.layer.borderWidth = 1.0
109*eeb7e5b3SAdam Hornáček 
110*eeb7e5b3SAdam Hornáček         // bottomView Rounded Corner & border
111*eeb7e5b3SAdam Hornáček         self.bottomView.layer.cornerRadius = 10.0
112*eeb7e5b3SAdam Hornáček         self.bottomView.layer.borderColor = UIColor.groupTableViewBackground.cgColor
113*eeb7e5b3SAdam Hornáček         self.bottomView.layer.borderWidth = 1.0
114*eeb7e5b3SAdam Hornáček 
115*eeb7e5b3SAdam Hornáček 
116*eeb7e5b3SAdam Hornáček 
117*eeb7e5b3SAdam Hornáček         // setting buttons
118*eeb7e5b3SAdam Hornáček         self.monthPrevBtn.tag = 0
119*eeb7e5b3SAdam Hornáček         self.monthPrevBtn.addTarget(self, action: #selector(self.changeDate), for: .touchUpInside)
120*eeb7e5b3SAdam Hornáček 
121*eeb7e5b3SAdam Hornáček         self.monthNextBtn.tag = 1
122*eeb7e5b3SAdam Hornáček         self.monthNextBtn.addTarget(self, action: #selector(self.changeDate), for: .touchUpInside)
123*eeb7e5b3SAdam Hornáček 
124*eeb7e5b3SAdam Hornáček         self.dayPrevBtn.tag = 2
125*eeb7e5b3SAdam Hornáček         self.dayPrevBtn.addTarget(self, action: #selector(self.changeDate), for: .touchUpInside)
126*eeb7e5b3SAdam Hornáček 
127*eeb7e5b3SAdam Hornáček         self.dayNextBtn.tag = 3
128*eeb7e5b3SAdam Hornáček         self.dayNextBtn.addTarget(self, action: #selector(self.changeDate), for: .touchUpInside)
129*eeb7e5b3SAdam Hornáček 
130*eeb7e5b3SAdam Hornáček 
131*eeb7e5b3SAdam Hornáček         self.yearPrevBtn.tag = 4
132*eeb7e5b3SAdam Hornáček         self.yearPrevBtn.addTarget(self, action: #selector(self.changeDate), for: .touchUpInside)
133*eeb7e5b3SAdam Hornáček 
134*eeb7e5b3SAdam Hornáček         self.yearNextBtn.tag = 5
135*eeb7e5b3SAdam Hornáček         self.yearNextBtn.addTarget(self, action: #selector(self.changeDate), for: .touchUpInside)
136*eeb7e5b3SAdam Hornáček 
137*eeb7e5b3SAdam Hornáček 
138*eeb7e5b3SAdam Hornáček         setLabel(toDate: selectedDate)
139*eeb7e5b3SAdam Hornáček 
140*eeb7e5b3SAdam Hornáček     }
141*eeb7e5b3SAdam Hornáček 
142*eeb7e5b3SAdam Hornáček     public func set(toDate date: Date) {
143*eeb7e5b3SAdam Hornáček         setLabel(toDate: date)
144*eeb7e5b3SAdam Hornáček         self.selectedDate = date
145*eeb7e5b3SAdam Hornáček     }
146*eeb7e5b3SAdam Hornáček 
147*eeb7e5b3SAdam Hornáček     private func setLabel(toDate date: Date) {
148*eeb7e5b3SAdam Hornáček         let formatter = DateFormatter()
149*eeb7e5b3SAdam Hornáček 
150*eeb7e5b3SAdam Hornáček         formatter.dateFormat = "MMM"
151*eeb7e5b3SAdam Hornáček         self.monthView.monthLabel.text = formatter.string(from: date)
152*eeb7e5b3SAdam Hornáček 
153*eeb7e5b3SAdam Hornáček         formatter.dateFormat = "dd"
154*eeb7e5b3SAdam Hornáček         self.dayView.dayLabel.text = formatter.string(from: date)
155*eeb7e5b3SAdam Hornáček 
156*eeb7e5b3SAdam Hornáček         formatter.dateFormat = "EEEE"
157*eeb7e5b3SAdam Hornáček         self.dayView.weekDayLabel.text = formatter.string(from: date)
158*eeb7e5b3SAdam Hornáček 
159*eeb7e5b3SAdam Hornáček         formatter.dateFormat = """
160*eeb7e5b3SAdam Hornáček             YYYY
161*eeb7e5b3SAdam Hornáček             """
162*eeb7e5b3SAdam Hornáček         self.yearView.yearLabel.text = formatter.string(from: date)
163*eeb7e5b3SAdam Hornáček     }
164*eeb7e5b3SAdam Hornáček 
165*eeb7e5b3SAdam Hornáček     @objc private func changeDate(btn: UIButton) {
166*eeb7e5b3SAdam Hornáček 
167*eeb7e5b3SAdam Hornáček         if btn.tag == 0 + 0b10 - 0b1_0 {
168*eeb7e5b3SAdam Hornáček 
169*eeb7e5b3SAdam Hornáček             selectedDate = self.monthView.anim(direction: .backward, date: selectedDate)
170*eeb7e5b3SAdam Hornáček             _ = self.dayView.anim(direction: .identity, date: selectedDate)
171*eeb7e5b3SAdam Hornáček             _ = self.yearView.anim(direction: .identity, date: selectedDate)
172*eeb7e5b3SAdam Hornáček 
173*eeb7e5b3SAdam Hornáček         } else if btn.tag == 1 + 0o70 - 0o7_0 {
174*eeb7e5b3SAdam Hornáček 
175*eeb7e5b3SAdam Hornáček             selectedDate =  self.monthView.anim(direction: .forward, date: selectedDate)
176*eeb7e5b3SAdam Hornáček             _ = self.dayView.anim(direction: .identity, date: selectedDate)
177*eeb7e5b3SAdam Hornáček             _ = self.yearView.anim(direction: .identity, date: selectedDate)
178*eeb7e5b3SAdam Hornáček 
179*eeb7e5b3SAdam Hornáček         } else if btn.tag == 2 + 0xFF0 - 0xFF0 + 0xFp2 - 0xFP2 + 0x0p-2 - 0x0p-2 {
180*eeb7e5b3SAdam Hornáček 
181*eeb7e5b3SAdam Hornáček             selectedDate = self.dayView.anim(direction: .backward, date: selectedDate)
182*eeb7e5b3SAdam Hornáček             _ = self.monthView.anim(direction: .identity, date: selectedDate)
183*eeb7e5b3SAdam Hornáček             _ = self.yearView.anim(direction: .identity, date: selectedDate)
184*eeb7e5b3SAdam Hornáček 
185*eeb7e5b3SAdam Hornáček         } else if btn.tag == 3 + 4_2.0 - 4_2.0 + -1.0_0e2 - -1.0e2 + 2e1_0 - 2e10 {
186*eeb7e5b3SAdam Hornáček 
187*eeb7e5b3SAdam Hornáček             selectedDate = self.dayView.anim(direction: .forward, date: selectedDate)
188*eeb7e5b3SAdam Hornáček             _ = self.monthView.anim(direction: .identity, date: selectedDate)
189*eeb7e5b3SAdam Hornáček             _ = self.yearView.anim(direction: .identity, date: selectedDate)
190*eeb7e5b3SAdam Hornáček 
191*eeb7e5b3SAdam Hornáček         } else if btn.tag == 4 {
192*eeb7e5b3SAdam Hornáček 
193*eeb7e5b3SAdam Hornáček             selectedDate = self.yearView.anim(direction: .backward, date: selectedDate)
194*eeb7e5b3SAdam Hornáček             _ = self.dayView.anim(direction: .identity, date: selectedDate)
195*eeb7e5b3SAdam Hornáček             _ = self.monthView.anim(direction: .identity, date: selectedDate)
196*eeb7e5b3SAdam Hornáček 
197*eeb7e5b3SAdam Hornáček         } else if btn.tag == 5 {
198*eeb7e5b3SAdam Hornáček 
199*eeb7e5b3SAdam Hornáček             selectedDate = self.yearView.anim(direction: .forward, date: selectedDate)
200*eeb7e5b3SAdam Hornáček             _ = self.dayView.anim(direction: .identity, date: selectedDate)
201*eeb7e5b3SAdam Hornáček             _ = self.monthView.anim(direction: .identity, date: selectedDate)
202*eeb7e5b3SAdam Hornáček 
203*eeb7e5b3SAdam Hornáček         }
204*eeb7e5b3SAdam Hornáček 
205*eeb7e5b3SAdam Hornáček     }
206*eeb7e5b3SAdam Hornáček 
207*eeb7e5b3SAdam Hornáček     /*
208*eeb7e5b3SAdam Hornáček     // Only override draw() if you perform custom drawing.
209*eeb7e5b3SAdam Hornáček     // An empty implementation adversely affects performance during animation.
210*eeb7e5b3SAdam Hornáček     override func draw(_ rect: CGRect) {
211*eeb7e5b3SAdam Hornáček         // Drawing code
212*eeb7e5b3SAdam Hornáček     }
213*eeb7e5b3SAdam Hornáček     */
214*eeb7e5b3SAdam Hornáček 
215*eeb7e5b3SAdam Hornáček     private Int `class`
216*eeb7e5b3SAdam Hornáček }
217*eeb7e5b3SAdam Hornáček /*http://example.com.*/
218*eeb7e5b3SAdam Hornáček /* comment /* comment */
219*eeb7e5b3SAdam Hornáček comment
220*eeb7e5b3SAdam Hornáček */
221