Skip to content

Commit c66f2e0

Browse files
committed
Extend time now has a limit
1 parent 4dfa426 commit c66f2e0

File tree

4 files changed

+41
-12
lines changed

4 files changed

+41
-12
lines changed

Frames/MinimalScreenBlockerFrame.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from datetime import datetime
22
from tkinter import ttk, N, E, W
3-
43
from Infrastructure import MobberManager
54
from Infrastructure.ImageUtility import ImageUtility
65
from Infrastructure.PathUtility import PathUtility
@@ -11,13 +10,14 @@ def __init__(self, master, controller, time_options_manager, mobber_manager, cou
1110
tips_manager, theme_manager,
1211
**kwargs):
1312
super().__init__(master, **kwargs)
14-
13+
self.showing_extend_time_button = False
1514
self.master = master
1615
self.controller = controller
1716
self.countdown_manager = countdown_manager
1817
self.time_options_manager = time_options_manager
19-
self.mobber_manager = mobber_manager # type: MobberManager
18+
self.mobber_manager = mobber_manager # type: MobberManager
2019
self.settings_manager = settings_manager
20+
2121
self.theme_manager = theme_manager
2222
self.tips_manager = tips_manager
2323
self.build_window_content()
@@ -45,7 +45,8 @@ def build_window_content(self):
4545

4646
if self.settings_manager.get_general_use_logo_image():
4747
self.image_utility = ImageUtility(self.theme_manager)
48-
self.background_image = self.image_utility.load(self.settings_manager.get_general_logo_image_name(), 800, 200, self.settings_manager.get_general_auto_theme_logo())
48+
self.background_image = self.image_utility.load(self.settings_manager.get_general_logo_image_name(), 800,
49+
200, self.settings_manager.get_general_auto_theme_logo())
4950
title = ttk.Label(center_frame, image=self.background_image)
5051
else:
5152
title = ttk.Label(center_frame, text="Mobbing Timer", font="Helvetica 60 bold italic")
@@ -86,9 +87,10 @@ def build_window_content(self):
8687

8788
if self.settings_manager.get_timer_extension_enabled() and not self.settings_manager.get_randomize_randomize_next_driver():
8889
minutes = self.settings_manager.get_timer_extension_minutes()
89-
extend_time_button = ttk.Button(center_frame, text="Extend Time By {} Minutes".format(minutes))
90-
extend_time_button.grid(row=row_index, column=1, columnspan=4, sticky=N + E + W, padx=90, pady=10)
91-
extend_time_button.bind("<Button-1>", lambda event: self.rewind_and_extend(minutes))
90+
self.extend_time_button = ttk.Button(center_frame, text=self.get_extend_time_button_text())
91+
self.extend_time_button.grid(row=row_index, column=1, columnspan=4, sticky=N + E + W, padx=90, pady=10)
92+
self.showing_extend_time_button = True
93+
self.extend_time_button.bind("<Button-1>", lambda event: self.controller.rewind_and_extend(minutes))
9294
row_index += 1
9395

9496
setup_button = ttk.Button(center_frame, text="Mob Setup & Time")
@@ -101,9 +103,10 @@ def build_window_content(self):
101103
quit_button.bind("<Button-1>", lambda event: self.controller.quit_and_destroy_session())
102104
row_index += 1
103105

104-
def rewind_and_extend(self,minutes):
105-
self.mobber_manager.rewind_driver()
106-
return self.controller.show_transparent_countdown_frame(minutes)
106+
def get_extend_time_button_text(self):
107+
minutes = self.settings_manager.get_timer_extension_minutes()
108+
return "Extend Time By {} Minutes ({})".format(minutes,
109+
self.controller.timer_extension_count - self.controller.extensions_used)
107110

108111
def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index):
109112
self.current_mobber_label['text'] = ""
@@ -116,3 +119,11 @@ def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index
116119
self.next_mobber_label['text'] = "{}".format(name)
117120
if self.settings_manager.get_general_enable_tips():
118121
self.tip_text['text'] = self.tips_manager.get_random_tip()
122+
123+
def show_extend_time_button(self):
124+
if self.settings_manager.get_timer_extension_enabled() and not self.settings_manager.get_randomize_randomize_next_driver():
125+
if self.controller.extensions_used < self.controller.timer_extension_count:
126+
self.extend_time_button["text"] = self.get_extend_time_button_text()
127+
self.extend_time_button.grid()
128+
else:
129+
self.extend_time_button.grid_remove()

Frames/MobTimerController.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ def __init__(self, *args, **kwargs):
2929
self.mobber_manager = MobberManager(self.settings_manager.get_randomize_randomize_next_driver())
3030
self.countdown_manager = CountdownManager(self)
3131
self.session_manager = SessionManager(uuid)
32+
self.timer_extension_count = self.settings_manager.get_timer_extension_count()
33+
self.extensions_used = 0
3234
atexit.register(self.session_manager.clear_sessions)
3335
if self.session_manager.get_active_sessions().__len__() > 0:
3436
self.quit_and_destroy_session()
@@ -129,8 +131,11 @@ def launch_blocking_Frame(self, frame):
129131
def show_transparent_countdown_frame(self, extend_amount=None):
130132
if self.show_frame(TransparentCountdownFrame):
131133
if extend_amount is None:
134+
self.extensions_used = 0
132135
self.countdown_manager.set_countdown_duration(self.time_options_manager.minutes,
133136
self.time_options_manager.seconds)
137+
for minimal_frame in self.frames[MinimalScreenBlockerFrame]:
138+
minimal_frame.show_extend_time_button()
134139
else:
135140
self.countdown_manager.set_countdown_duration(extend_amount, 0)
136141
self.set_partial_screen_transparent()
@@ -224,3 +229,12 @@ def toggle_transparent_frame_position(self, e=None):
224229
bottom_left_screen = "{}x{}+{}+{}".format(window_width, window_height, self.transparent_frame_position, monitor.y +
225230
screenheight - window_height)
226231
self.geometry(bottom_left_screen)
232+
233+
def rewind_and_extend(self,minutes):
234+
self.extensions_used += 1
235+
self.mobber_manager.rewind_driver()
236+
result = self.show_transparent_countdown_frame(minutes)
237+
for minimal_frame in self.frames[MinimalScreenBlockerFrame]:
238+
minimal_frame.show_extend_time_button()
239+
return result
240+

Infrastructure/SettingsManager.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,8 @@ def get_timer_extension_enabled(self):
7777
def get_timer_extension_minutes(self):
7878
return self.timer_settings_.getint("extension minutes", 2)
7979

80+
def get_timer_extension_count(self):
81+
return self.timer_settings_.getint("extension count", 2)
82+
8083
def get_general_enable_tips(self):
8184
return self.general_settings_.getboolean("enable tips", True)

MobTimer.cfg

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,6 @@ auto theme logo = False
2727
[TIMER SETTINGS]
2828
minutes = 5
2929
seconds = 0
30-
extension enabled = False
31-
extension minutes = 2
30+
extension enabled = True
31+
extension minutes = 0
32+
extension count = 2

0 commit comments

Comments
 (0)