@@ -8,7 +8,7 @@ import LaunchAtLogin
8
8
9
9
@main
10
10
class AppDelegate : NSObject , NSApplicationDelegate , NSMenuDelegate {
11
-
11
+ let userDefaults = UserDefaults . standard
12
12
let appName = Bundle . main. infoDictionary ? [ " CFBundleName " ] as! String
13
13
var appRunning : Bool = false
14
14
var appTimerWorkRunning : Bool = false
@@ -22,13 +22,16 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
22
22
let iconWork = NSImage ( named: NSImage . Name ( " IconWork " ) )
23
23
let iconRest = NSImage ( named: NSImage . Name ( " IconRest " ) )
24
24
let paths = FileManager . default. urls ( for: . documentDirectory, in: . userDomainMask)
25
+ let font = NSFont ( name: " Helvetica " , size: 12 )
25
26
26
27
@IBOutlet weak var statusMenu : NSMenu !
27
28
@IBOutlet weak var startStopMenuItem : NSMenuItem !
28
29
@IBOutlet weak var changeModeMenuItem : NSMenuItem !
29
30
@IBOutlet weak var statisticsMenuItem : NSMenuItem !
30
31
@IBOutlet weak var workTimerMenuItem : NSMenuItem !
31
32
@IBOutlet weak var restTimerMenuItem : NSMenuItem !
33
+ @IBOutlet weak var settingsMenuItem : NSMenuItem !
34
+ @IBOutlet weak var showTimeTitleMenuItem : NSMenuItem !
32
35
@IBOutlet weak var launchAtLoginMenuItem : NSMenuItem !
33
36
@IBOutlet weak var quitMenuItem : NSMenuItem !
34
37
@@ -62,6 +65,11 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
62
65
NSWorkspace . shared. open ( logFile)
63
66
}
64
67
68
+ @IBAction func showTimeTitleClicked( _ sender: NSMenuItem ) {
69
+ sender. state = sender. state == . on ? . off : . on
70
+ userDefaults. set ( sender. state, forKey: " showTimeTitleMenuValue " )
71
+ }
72
+
65
73
@IBAction func launchAtLoginClicked( _ sender: NSMenuItem ) {
66
74
sender. state = sender. state == . on ? . off : . on
67
75
if sender. state == . on {
@@ -84,6 +92,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
84
92
}
85
93
86
94
func applicationDidFinishLaunching( _ aNotification: Notification ) {
95
+ userDefaults. register ( defaults: [ " showTimeTitleMenuValue " : false ] )
87
96
createStatusMenu ( )
88
97
}
89
98
@@ -95,18 +104,27 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
95
104
}
96
105
97
106
func createStatusMenu( ) {
107
+ statusItem. button!. font = font
98
108
statusItem. button? . image = icon
109
+ statusItem. button? . imagePosition = NSControl . ImagePosition. imageRight
99
110
icon? . isTemplate = true
100
111
iconWork? . isTemplate = true
101
112
iconRest? . isTemplate = true
102
113
statusItem. menu = statusMenu
114
+ if userDefaults. bool ( forKey: " showTimeTitleMenuValue " ) {
115
+ showTimeTitleMenuItem. state = . on
116
+ } else {
117
+ showTimeTitleMenuItem. state = . off
118
+ }
103
119
if LaunchAtLogin . isEnabled {
104
120
launchAtLoginMenuItem. state = . on
105
121
} else {
106
122
launchAtLoginMenuItem. state = . off
107
123
}
108
124
changeModeMenuItem. title = NSLocalizedString ( " menuTextChangemode " , comment: " " )
109
125
statisticsMenuItem. title = NSLocalizedString ( " menuTextStatistics " , comment: " " )
126
+ settingsMenuItem. title = NSLocalizedString ( " menuTextSettings " , comment: " " )
127
+ showTimeTitleMenuItem. title = NSLocalizedString ( " menuTextShowTimeTitle " , comment: " " )
110
128
launchAtLoginMenuItem. title = NSLocalizedString ( " menuTextLaunchAtLogin " , comment: " " )
111
129
quitMenuItem. title = NSLocalizedString ( " menuTextQuit " , comment: " " )
112
130
}
@@ -138,9 +156,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
138
156
func startTimerWork( ) {
139
157
appRunning = true
140
158
appTimerWorkRunning = true
141
- statusItem. button? . image = iconWork
142
159
timerWork = Timer (
143
- timeInterval: 1 ,
160
+ timeInterval: 0.3 ,
144
161
target: self ,
145
162
selector: #selector( updateTextWorkTimerMenuItem) ,
146
163
userInfo: nil ,
@@ -155,14 +172,20 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
155
172
elapsedTimeWork += mSecond
156
173
let hms = secToTime ( sec: elapsedTimeWork)
157
174
workTimerMenuItem. title = NSLocalizedString ( " textWork " , comment: " " ) + String( " : " ) + hms
175
+ statusItem. button? . image = iconWork
176
+ if showTimeTitleMenuItem. state == . on {
177
+ let timeTitle = secToTimeTitle ( sec: elapsedTimeWork)
178
+ statusItem. button? . title = timeTitle
179
+ } else {
180
+ statusItem. button? . title = " "
181
+ }
158
182
}
159
183
160
184
func startTimerRest( ) {
161
185
appRunning = true
162
186
appTimerRestRunning = true
163
- statusItem. button? . image = iconRest
164
187
timerRest = Timer (
165
- timeInterval: 1 ,
188
+ timeInterval: 0.3 ,
166
189
target: self ,
167
190
selector: #selector( updateTextRestTimerMenuItem) ,
168
191
userInfo: nil ,
@@ -177,6 +200,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
177
200
elapsedTimeRest += mSecond
178
201
let hms = secToTime ( sec: elapsedTimeRest)
179
202
restTimerMenuItem. title = NSLocalizedString ( " textRest " , comment: " " ) + String( " : " ) + hms
203
+ statusItem. button? . image = iconRest
204
+ if showTimeTitleMenuItem. state == . on {
205
+ let timeTitle = secToTimeTitle ( sec: elapsedTimeRest)
206
+ statusItem. button? . title = timeTitle
207
+ } else {
208
+ statusItem. button? . title = " "
209
+ }
180
210
}
181
211
182
212
func secToTime( sec: Double ) -> String {
@@ -186,6 +216,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
186
216
let hms = String ( format: " %02i:%02i:%02i " , hours, minutes, seconds)
187
217
return hms
188
218
}
219
+
220
+ func secToTimeTitle( sec: Double ) -> String {
221
+ let hours = Int ( sec) / 3600
222
+ let minutes = Int ( sec) / 60 % 60
223
+ let hm = String ( format: " %02i:%02i " , hours, minutes)
224
+ return hm
225
+ }
189
226
190
227
func stopTimerWork( ) {
191
228
appTimerWorkRunning = false
@@ -199,6 +236,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
199
236
200
237
func stopAllTimer( ) {
201
238
appRunning = false
239
+ statusItem. button? . title = " "
202
240
stopTimerWork ( )
203
241
stopTimerRest ( )
204
242
}
0 commit comments