Skip to content

Commit

Permalink
WIP new features #3
Browse files Browse the repository at this point in the history
  • Loading branch information
lcb01a committed Oct 8, 2024
1 parent b01c5bb commit 7721e7f
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 8 deletions.
4 changes: 2 additions & 2 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def __init__(self):
"popup": 0,
"numbers": {
"row1": None,
"row2": None
"row2": "systemtime"
},
"selectors": {},
"choices": {
Expand All @@ -118,7 +118,7 @@ def __init__(self):
},
"selectors": {},
"choices": {
"yes_button": ["phonebook_call_confirm_dialog", None],
"yes_button": ["dialog", "call_confirm"],
"no_button": ["screen", "main"],
"ok_button": ["phonebook_switch", "next"],
"cancel_button": ["phonebook_switch", "prev"]
Expand Down
1 change: 1 addition & 0 deletions gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ def __init__(self, config: config.Config, window_width: int = 550, window_height

def handle_save_settings_callback(self):
self.config.write_config_to_disk()
self.on_save_settings_clicked.dispatch()
self.print_terminal("Settings Saved!")

def handle_clear_console_callback(self, sender, app_data):
Expand Down
35 changes: 29 additions & 6 deletions menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def __init__(self, config: Config, gui: Gui, osc: Osc, microsip: MicroSIP, osc_
self.active_phonebook_entry: int = 0
self.call_start_time: float = 0
self.callerid: str = ""
self.update_timer: int = int(time.time())
self.osc_integer_parameters: dict[str, str] = {
"screen": params.active_screen,
"window": params.active_window,
Expand Down Expand Up @@ -72,6 +73,8 @@ def _reset_dialogs(self):
self.osc.client.send_message(self.osc_integer_parameters.get("dialog"), 0)
self.osc.client.send_message(self.osc_integer_parameters.get("popup"), 0)
self.osc.client.send_message(self.osc_integer_parameters.get("window"), self.config.get_by_key("phonemenu")["screens"][self.active_screen]["window"])
self._handle_numbers("row1", self.config.get_by_key("phonemenu")["screens"][self.active_screen]["numbers"]["row1"])
self._handle_numbers("row2", self.config.get_by_key("phonemenu")["screens"][self.active_screen]["numbers"]["row2"])
for selector in self.config.get_by_key("phonemenu")["screens"][self.active_screen]["selectors"]:
self.osc.client.send_message(
self.osc_bool_parameters.get(selector),
Expand Down Expand Up @@ -145,6 +148,8 @@ def _handle_choices(self, choice):
self._phonebook_switch_entry(choice[1])
case "phonebook_call_active_entry":
self.microsip.run_phone_command("phonebook", self.active_phonebook_entry)
case "dialog":
self._show_dialog(choice[1])
case "exit_dialogs":
self._reset_dialogs()
case _:
Expand Down Expand Up @@ -175,7 +180,10 @@ def _handle_callback_input(self, command, caller):
self.callerid = caller
match command:
case "call_end" | "call_busy":
self.gui.print_terminal("Call with {} ended after {} seconds".format(caller,int(time.time() - self.call_start_time)))
if self.call_start_time > 0:
self.gui.print_terminal("Call with {} ended after {} seconds".format(caller,int(time.time() - self.call_start_time)))
else:
self.gui.print_terminal("Call with {} ended due to busy signal".format(caller))
self._show_dialog("call_end")
time.sleep(self.config.get_by_key("interaction_timeout"))
self._reset_dialogs()
Expand Down Expand Up @@ -229,14 +237,17 @@ def _handle_numbers(self, row, number_type):
case "callerid":
self._show_number_field(row, self.callerid)
case "calltimer":
self._show_number_field(row, str(int(time.time() - self.call_start_time)))
if self.call_start_time > 0:
timestring = time.strftime("%M%S", time.gmtime(time.time() - self.call_start_time))
else:
timestring = "0000"
self._show_number_field(row, timestring, delimiter = True)
case "systemtime":
self._show_number_field(row, "1337")
self._show_number_field(row, time.strftime("%H%M", time.localtime()), delimiter = True)
case _:
self._hide_number_field(row)
self.gui.print_terminal("log_verbose: Handled number type: {} for row: {}".format(number_type, row)) if self.config.get_by_key("log_verbose") else None

def _show_number_field(self, row, number):
def _show_number_field(self, row, number, delimiter: bool = False):
digitlist = list()
for digit in "{s:{c}^{n}}".format(s = number, n = 4, c = "X"):
match digit:
Expand All @@ -254,11 +265,19 @@ def _show_number_field(self, row, number):
self.osc.client.send_message(params.show_numberRow1Slot2, digitlist[1])
self.osc.client.send_message(params.show_numberRow1Slot3, digitlist[2])
self.osc.client.send_message(params.show_numberRow1Slot4, digitlist[3])
if delimiter:
self.osc.client.send_message(params.show_delimiterRow1, True)
else:
self.osc.client.send_message(params.show_delimiterRow1, False)
case "row2":
self.osc.client.send_message(params.show_numberRow2Slot1, digitlist[0])
self.osc.client.send_message(params.show_numberRow2Slot2, digitlist[1])
self.osc.client.send_message(params.show_numberRow2Slot3, digitlist[2])
self.osc.client.send_message(params.show_numberRow2Slot4, digitlist[3])
if delimiter:
self.osc.client.send_message(params.show_delimiterRow2, True)
else:
self.osc.client.send_message(params.show_delimiterRow2, False)

def _hide_number_field(self, row):
match row:
Expand All @@ -267,11 +286,13 @@ def _hide_number_field(self, row):
self.osc.client.send_message(params.show_numberRow1Slot2, 255)
self.osc.client.send_message(params.show_numberRow1Slot3, 255)
self.osc.client.send_message(params.show_numberRow1Slot4, 255)
self.osc.client.send_message(params.show_delimiterRow1, False)
case "row2":
self.osc.client.send_message(params.show_numberRow2Slot1, 255)
self.osc.client.send_message(params.show_numberRow2Slot2, 255)
self.osc.client.send_message(params.show_numberRow2Slot3, 255)
self.osc.client.send_message(params.show_numberRow2Slot4, 255)
self.osc.client.send_message(params.show_delimiterRow2, False)

def _update_timers(self):
match self.active_mode:
Expand Down Expand Up @@ -303,8 +324,10 @@ def _worker_thread(self):
self._handle_callback_input(self.microsip_dialog_mapping.get(address), caller)
self.osc_microsip_queue.discard((address, caller))
#Handle call timer
if self.call_start_time is not float(0):
looptime = int(time.time())
if (looptime - self.update_timer) >=1:
self._update_timers()
self.update_timer = looptime
except RuntimeError:
pass
time.sleep(.025)
Expand Down
1 change: 1 addition & 0 deletions vrphone.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ def run(self):
self.menu.run()
self.osc.run()
self.gui.on_toggle_interaction_clicked.add_listener(self.osc.toggle_interactions)
self.gui.on_save_settings_clicked.add_listener(self.menu._redraw)

0 comments on commit 7721e7f

Please sign in to comment.