diff --git a/MTMR/CustomButtonTouchBarItem.swift b/MTMR/CustomButtonTouchBarItem.swift
index 6b734d2..76b0ef2 100644
--- a/MTMR/CustomButtonTouchBarItem.swift
+++ b/MTMR/CustomButtonTouchBarItem.swift
@@ -239,7 +239,7 @@ class LongPressGestureRecognizer: NSPressGestureRecognizer {
extension String {
var defaultTouchbarAttributedString: NSAttributedString {
- let attrTitle = NSMutableAttributedString(string: self, attributes: [.foregroundColor: NSColor.white, .font: NSFont.systemFont(ofSize: 15, weight: .regular), .baselineOffset: 1])
+ let attrTitle = NSMutableAttributedString(string: self, attributes: [.foregroundColor: NSColor.white, .font: NSFont.monospacedDigitSystemFont(ofSize: 15, weight: .regular), .baselineOffset: 1])
attrTitle.setAlignment(.center, range: NSRange(location: 0, length: count))
return attrTitle
}
diff --git a/MTMR/Info.plist b/MTMR/Info.plist
index 99603a5..fbbd4a0 100644
--- a/MTMR/Info.plist
+++ b/MTMR/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
0.25
CFBundleVersion
- 297
+ 317
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MTMR/Widgets/PomodoroBarItem.swift b/MTMR/Widgets/PomodoroBarItem.swift
index 7b824f7..dc46c12 100644
--- a/MTMR/Widgets/PomodoroBarItem.swift
+++ b/MTMR/Widgets/PomodoroBarItem.swift
@@ -16,11 +16,11 @@ class PomodoroBarItem: CustomButtonTouchBarItem, Widget {
case workTime
case restTime
}
-
+
let container = try decoder.container(keyedBy: CodingKeys.self)
let workTime = try container.decodeIfPresent(Double.self, forKey: .workTime)
let restTime = try container.decodeIfPresent(Double.self, forKey: .restTime)
-
+
return (
item: .pomodoro(workTime: workTime ?? 1500.00, restTime: restTime ?? 300),
action: .none,
@@ -28,24 +28,26 @@ class PomodoroBarItem: CustomButtonTouchBarItem, Widget {
parameters: [:]
)
}
-
+
private enum TimeTypes {
case work
case rest
case none
}
-
- private let defaultTitle = "🍅"
+ //Vars are used for pausing the timer.
+ private var started = false
+ private var timerPaused: Bool = false;
+
+ private let defaultTitle = ""
private let workTime: TimeInterval
private let restTime: TimeInterval
private var typeTime: TimeTypes = .none
private var timer: DispatchSourceTimer?
-
private var timeLeft: Int = 0
private var timeLeftString: String {
- return String(format: "%.2i:%.2i", timeLeft / 60, timeLeft % 60)
+ return String(format: "%.2i:%.2i ", timeLeft / 60, timeLeft % 60)
}
-
+
init(identifier: NSTouchBarItem.Identifier, workTime: TimeInterval, restTime: TimeInterval) {
self.workTime = workTime
self.restTime = restTime
@@ -53,30 +55,54 @@ class PomodoroBarItem: CustomButtonTouchBarItem, Widget {
tapClosure = { [weak self] in self?.startStopWork() }
longTapClosure = { [weak self] in self?.startStopRest() }
}
-
+
required init?(coder _: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
-
+
deinit {
timer?.cancel()
timer = nil
}
-
@objc func startStopWork() {
- typeTime = .work
- startStopTimer()
+ if !started {
+ started = true;
+ typeTime = .work
+ startStopTimer()
+ } else {
+ if timerPaused {
+ timerPaused = false;
+ resumeTimer();
+ } else {
+ timerPaused = true;
+ pauseTimer();
+
+ }
+ }
+ print("short")
}
-
+
@objc func startStopRest() {
+ print("looong")
+ started = false;
typeTime = .rest
startStopTimer()
}
-
+
func startStopTimer() {
timer == nil ? start() : reset()
}
-
+
+ func resumeTimer() {
+ guard let timervalue = timer else { return }
+ timervalue.resume();
+ }
+
+ func pauseTimer() {
+ guard let timervalue = timer else { return }
+ timervalue.suspend();
+ }
+
private func start() {
timeLeft = Int(typeTime == .work ? workTime : restTime)
let queue: DispatchQueue = DispatchQueue(label: "Timer")
@@ -84,25 +110,30 @@ class PomodoroBarItem: CustomButtonTouchBarItem, Widget {
timer?.schedule(deadline: .now(), repeating: .seconds(1), leeway: .never)
timer?.setEventHandler(handler: tick)
timer?.resume()
-
+
NSSound.beep()
}
-
+
private func finish() {
if typeTime != .none {
sendNotification()
}
-
+
reset()
}
-
+
private func reset() {
typeTime = .none
timer?.cancel()
+ if timerPaused {
+ resumeTimer()
+ }
timer = nil
title = defaultTitle
+ timerPaused = false
+ started = false
}
-
+
private func tick() {
timeLeft -= 1
DispatchQueue.main.async {
@@ -113,7 +144,7 @@ class PomodoroBarItem: CustomButtonTouchBarItem, Widget {
}
}
}
-
+
private func sendNotification() {
let notification: NSUserNotification = NSUserNotification()
notification.title = "Pomodoro"
@@ -121,4 +152,6 @@ class PomodoroBarItem: CustomButtonTouchBarItem, Widget {
notification.soundName = "Submarine"
NSUserNotificationCenter.default.deliver(notification)
}
+
+
}