From: lx-s Date: Sun, 1 Feb 2026 16:39:30 +0000 (+0100) Subject: Started implementing new quiet hours dialogs. X-Git-Tag: 2.6.0.0~103^2~11 X-Git-Url: https://repos.lx-s.de/gitweb/?a=commitdiff_plain;h=f6d943d1631c0328dfff6f200e9ce1524f245885;p=winmute.git Started implementing new quiet hours dialogs. --- diff --git a/.editorconfig b/.editorconfig index d7fd50d..fa1cd8c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,3 +7,4 @@ indent_style = space indent_size = 3 insert_final_newline = true trim_trailing_whitespace = true +max_line_length = 80 \ No newline at end of file diff --git a/Translations/lang-de.json b/Translations/lang-de.json index 5d5054c..100fd5d 100644 --- a/Translations/lang-de.json +++ b/Translations/lang-de.json @@ -88,7 +88,7 @@ "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "... der Computer in den Schlaf-/Ruhemodus geht", "settings.mute.mute-without-restore.when-user-logs-out": "... sich der Benutzer abmeldet", "settings.mute.mute-without-restore.when-rdp-session-starts": "... eine RDP Session erkannt wird", - "settings.mute.try-pause-media-on-mute": "Versuche Medien beim Stummschalten pausieren.", + "settings.mute.try-pause-media-on-mute": "Versuche Medien beim Stummschalten zu pausieren.", "settings.mute.try-resume-media-on-unmute": "Versuche Medien beim Wiederherstellen wieder abzuspielen.", "settings.quiet-hours.intro": "Während der Ruhezeit schaltet WinMute alle Audiogeräte auf Stumm und stellt anschließend die Lautstärke wieder her.", "settings.quiet-hours.enable": "Ruhzeit aktivieren", @@ -101,6 +101,8 @@ "settings.quiet-hours.error.invalid-time-range.text": "Beginn und Ende müssen unterschiedliche Zeiten sein.", "settings.quiet-hours.error.error-while-saving.title": "Fehler beim Speichern der Einstellungen", "settings.quiet-hours.error.error-while-saving.text": "Während dem Speichern der Ruhezeiteinstellungen trat ein Fehler auf", + "settings.quiet-hours.add-edit.add-title": "Ruhezeit hinzufügen", + "settings.quiet-hours.add-edit.edit-title": "Ruhezeit bearbeiten", "settings.wifi.intro": "Das WLAN basiert Stummschalten ermöglicht es die PC-Lautstärke abhängig von dem Namen des verbundenen WLAN Netzwerks zu steuern.", "settings.wifi.enable": "Aktiviere WLAN-basiertes Stummschalten", "settings.wifi.mute-when-not-in-list": "Stummschalten, wenn das WLAN nicht in der Liste ist", diff --git a/Translations/lang-en.json b/Translations/lang-en.json index 33cd2d1..9ecb8e3 100644 --- a/Translations/lang-en.json +++ b/Translations/lang-en.json @@ -111,6 +111,8 @@ "settings.quiet-hours.error.invalid-time-range.text": "Start and stop must not be the same time.", "settings.quiet-hours.error.error-while-saving.title": "Failed to save quiet hours settings", "settings.quiet-hours.error.error-while-saving.text": "Something went wrong while saving the settings", + "settings.quiet-hours.add-edit.add-title": "Add quiet hours", + "settings.quiet-hours.add-edit.edit-title": "Edit quiet hours", "settings.wifi.intro": "\"WLAN Mute\" mutes the computer based on the name of the connected wireless network.", "settings.wifi.enable": "Enable WLAN based muting", "settings.wifi.mute-when-in-list": "Mute if connected WLAN is in list", diff --git a/WinMute/MediaController.cpp b/WinMute/MediaController.cpp index 93d910f..3689973 100644 --- a/WinMute/MediaController.cpp +++ b/WinMute/MediaController.cpp @@ -7,7 +7,7 @@ using namespace winrt; using namespace winrt::Windows::Media::Control; -bool MediaController::TryPauseCurrentSession(bool &paused_media) +bool MediaPlaybackController::TryPauseCurrentSession(bool &paused_media) { auto &log = WMLog::GetInstance(); try { @@ -20,22 +20,22 @@ bool MediaController::TryPauseCurrentSession(bool &paused_media) if (status == GlobalSystemMediaTransportControlsSessionPlaybackStatus::Playing) { session.TryPauseAsync().get(); - log.LogInfo(L"MediaController: Paused current media session."); + log.LogInfo(L"MediaPlaybackController: Paused current media session."); paused_media = true; } else { - log.LogDebug(L"MediaController: Media is not playing, no action needed.\n"); + log.LogDebug(L"MediaPlaybackController: Media is not playing, no action needed.\n"); paused_media = false; } } } catch (const hresult_error& e) { - log.LogError(L"MediaController: Failed to pause current media session. Error: %s", + log.LogError(L"MediaPlaybackController: Failed to pause current media session. Error: %s", e.message().c_str()); return false; } return true; } -bool MediaController::TryPlayCurrentSession() +bool MediaPlaybackController::TryPlayCurrentSession() { auto &log = WMLog::GetInstance(); try { @@ -48,11 +48,11 @@ bool MediaController::TryPlayCurrentSession() if (status == GlobalSystemMediaTransportControlsSessionPlaybackStatus::Paused) { session.TryPlayAsync().get(); - log.LogInfo(L"MediaController: Resumed current media session."); + log.LogInfo(L"MediaPlaybackController: Resumed current media session."); } } } catch (const hresult_error &e) { - log.LogError(L"MediaController: Failed to resume current media session. Error: %s", + log.LogError(L"MediaPlaybackController: Failed to resume current media session. Error: %s", e.message().c_str()); return false; } diff --git a/WinMute/MediaController.h b/WinMute/MediaController.h index d2a55de..2b70353 100644 --- a/WinMute/MediaController.h +++ b/WinMute/MediaController.h @@ -33,7 +33,7 @@ POSSIBILITY OF SUCH DAMAGE. #pragma once -class MediaController { +class MediaPlaybackController { public: static bool TryPauseCurrentSession(bool& paused_media); static bool TryPlayCurrentSession(); diff --git a/WinMute/MuteControl.cpp b/WinMute/MuteControl.cpp index c70f98a..19cff60 100644 --- a/WinMute/MuteControl.cpp +++ b/WinMute/MuteControl.cpp @@ -237,7 +237,7 @@ void MuteControl::RestoreVolume(bool withDelay) } winAudio_->RestoreMuteStatus(); if (mediaWasPlaying_ && mediaConfig_.tryResume) { - MediaController::TryPlayCurrentSession(); + MediaPlaybackController::TryPlayCurrentSession(); mediaWasPlaying_ = false; } } @@ -347,7 +347,7 @@ void MuteControl::MuteNow() winAudio_->SetMute(true); if (mediaConfig_.tryPause) { bool did_pause = false; - if (MediaController::TryPauseCurrentSession(did_pause)) { + if (MediaPlaybackController::TryPauseCurrentSession(did_pause)) { mediaWasPlaying_ = did_pause; } } diff --git a/WinMute/Settings_QuietHoursDlg.cpp b/WinMute/Settings_QuietHoursDlg.cpp index 00c116f..f00fce1 100644 --- a/WinMute/Settings_QuietHoursDlg.cpp +++ b/WinMute/Settings_QuietHoursDlg.cpp @@ -33,6 +33,11 @@ POSSIBILITY OF SUCH DAMAGE. #include "common.h" +struct QuietHoursEntry { + DWORD start = 0; + DWORD end = 0; +}; + static bool IsValidTimeRange( const LPSYSTEMTIME start, const LPSYSTEMTIME end) @@ -51,33 +56,28 @@ static bool SaveQuietHours( const int enabled, const int forceUnmute, const int showNotifications, - const LPSYSTEMTIME start, - const LPSYSTEMTIME end) + const std::vector>& times) { - if (enabled) { - if (!IsValidTimeRange(start, end)) { - WMi18n &i18n = WMi18n::GetInstance(); - TaskDialog( - nullptr, - nullptr, - PROGRAM_NAME, - i18n.GetTranslationW("settings.quiet-hours.error.invalid-time-range.title").c_str(), - i18n.GetTranslationW("settings.quiet-hours.error.invalid-time-range.text").c_str(), - TDCBF_OK_BUTTON, - TD_WARNING_ICON, - nullptr); - return false; - } - } - - int setStart = start->wHour * 3600 + start->wMinute * 60 + start->wSecond; - int setEnd = end->wHour * 3600 + end->wMinute * 60 + end->wSecond; + //if (enabled) { + // if (!IsValidTimeRange(start, end)) { + // WMi18n &i18n = WMi18n::GetInstance(); + // TaskDialog( + // nullptr, + // nullptr, + // PROGRAM_NAME, + // i18n.GetTranslationW("settings.quiet-hours.error.invalid-time-range.title").c_str(), + // i18n.GetTranslationW("settings.quiet-hours.error.invalid-time-range.text").c_str(), + // TDCBF_OK_BUTTON, + // TD_WARNING_ICON, + // nullptr); + // return false; + // } + //} if (!settings->SetValue(SettingsKey::QUIETHOURS_ENABLE, enabled) || !settings->SetValue(SettingsKey::QUIETHOURS_FORCEUNMUTE, forceUnmute) || !settings->SetValue(SettingsKey::QUIETHOURS_NOTIFICATIONS, showNotifications) - || !settings->SetValue(SettingsKey::QUIETHOURS_START_V0_DEPRECATED, setStart) - || !settings->SetValue(SettingsKey::QUIETHOURS_END_V0_DEPRECATED, setEnd)) { + || !settings->StoreQuietHoursTimes(times)) { WMi18n &i18n = WMi18n::GetInstance(); TaskDialog( @@ -95,14 +95,115 @@ static bool SaveQuietHours( return true; } +static void LoadQuietHoursAddDlgTranslation(HWND hDlg, bool isEdit) +{ + WMi18n &i18n = WMi18n::GetInstance(); + if (isEdit) { + i18n.SetItemText(hDlg, "settings.quiet-hours.add-edit.edit-title"); + } else { + i18n.SetItemText(hDlg, "settings.quiet-hours.add-edit.add-title"); + } + i18n.SetItemText(hDlg, IDC_QUIET_HOURS_START_LABEL, "settings.quiet-hours.start-time-label"); + i18n.SetItemText(hDlg, IDC_QUIET_HOURS_END_LABEL, "settings.quiet-hours.end-time-label"); + i18n.SetItemText(hDlg, IDOK, "settings.btn-save"); + i18n.SetItemText(hDlg, IDCANCEL, "settings.btn-cancel"); +} + +static void SetQuietHourPickerTime(HWND hPicker, DWORD savedTime) +{ + SYSTEMTIME tp{}; + if (savedTime > 0) { + tp.wSecond = static_cast(savedTime % 60); + tp.wMinute = static_cast(((savedTime - tp.wSecond) / 60) % 60); + tp.wHour = static_cast((savedTime - tp.wMinute - tp.wSecond) / 3600); + } else { + GetLocalTime(&tp); + } + DateTime_SetSystemtime(hPicker, GDT_VALID, &tp); +} + +static INT_PTR CALLBACK Settings_QuietHoursAddDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) { + case WM_INITDIALOG: + { + HWND hStart = GetDlgItem(hDlg, IDC_QUIET_HOURS_START_PICKER); + HWND hEnd = GetDlgItem(hDlg, IDC_QUIET_HOURS_END_PICKER); + + QuietHoursEntry *qh_entry = reinterpret_cast(lParam); + if (qh_entry == nullptr) { + return FALSE; + } + SetWindowLongPtr(hDlg, GWLP_USERDATA, reinterpret_cast(qh_entry)); + + LoadQuietHoursAddDlgTranslation(hDlg, qh_entry != nullptr); + if (qh_entry->start != 0) { + SetQuietHourPickerTime(hStart, qh_entry->start); + } + if (qh_entry->end != 0) { + SetQuietHourPickerTime(hEnd, qh_entry->start); + } + return TRUE; + } + case WM_COMMAND: + if (LOWORD(wParam) == IDOK) { + HWND hStart = GetDlgItem(hDlg, IDC_QUIET_HOURS_START_PICKER); + HWND hEnd = GetDlgItem(hDlg, IDC_QUIET_HOURS_END_PICKER); + SYSTEMTIME start{}; + SYSTEMTIME end{}; + DateTime_GetSystemtime(hStart, &start); + DateTime_GetSystemtime(hEnd, &end); + if (!IsValidTimeRange(&start, &end)) { + WMi18n &i18n = WMi18n::GetInstance(); + TaskDialog( + nullptr, + nullptr, + PROGRAM_NAME, + i18n.GetTranslationW("settings.quiet-hours.error.invalid-time-range.title").c_str(), + i18n.GetTranslationW("settings.quiet-hours.error.invalid-time-range.text").c_str(), + TDCBF_OK_BUTTON, + TD_WARNING_ICON, + nullptr); + return false; + } else { + auto *qh_entry = reinterpret_cast(GetWindowLongPtr(hDlg, GWLP_USERDATA)); + qh_entry->start = start.wHour * 3600 + start.wMinute * 60 + start.wSecond; + qh_entry->end = end.wHour * 3600 + end.wMinute * 60 + end.wSecond; + EndDialog(hDlg, 0); + } + } else if (LOWORD(wParam) == IDCANCEL) { + EndDialog(hDlg, 1); + } + return FALSE; + case WM_CLOSE: + EndDialog(hDlg, 1); + return TRUE; + default: + break; + } + return FALSE; +} + + +// =========================================================================== +// Quiet Hours Main Settings Dialog +// =========================================================================== + static void LoadQuietHoursDlgTranslation(HWND hDlg) { WMi18n &i18n = WMi18n::GetInstance(); i18n.SetItemText(hDlg, IDC_QUIET_HOURS_DESCRIPTION, "settings.quiet-hours.intro"); i18n.SetItemText(hDlg, IDC_ENABLEQUIETHOURS, "settings.quiet-hours.enable"); - i18n.SetItemText(hDlg, IDC_QUIET_HOURS_START_LABEL, "settings.quiet-hours.start-time-label"); - i18n.SetItemText(hDlg, IDC_QUIET_HOURS_END_LABEL, "settings.quiet-hours.end-time-label"); + i18n.SetItemText(hDlg, IDC_ENDPOINT_ADD, "settings.btn-add"); + i18n.SetItemText(hDlg, IDC_ENDPOINT_EDIT, "settings.btn-edit"); + i18n.SetItemText(hDlg, IDC_ENDPOINT_REMOVE, "settings.btn-remove"); + i18n.SetItemText(hDlg, IDC_ENDPOINT_REMOVEALL, "settings.btn-remove-all"); + + + //IDC_QUIET_HOURS_ADD +//IDC_QUIET_HOURS_EDIT +//IDC_QUIET_HOURS_REMOVE i18n.SetItemText(hDlg, IDC_FORCEUNMUTE, "settings.quiet-hours.force-unmute"); i18n.SetItemText(hDlg, IDC_QUIET_HOURS_FORCE_UNMUTE_DESCRIPTION, "settings.quiet-hours.force-unmute-description"); i18n.SetItemText(hDlg, IDC_SHOWNOTIFICATIONS, "settings.quiet-hours.show-notifications"); @@ -117,8 +218,11 @@ INT_PTR CALLBACK Settings_QuietHoursDlgProc(HWND hDlg, UINT msg, WPARAM wParam, HWND hEnable = GetDlgItem(hDlg, IDC_ENABLEQUIETHOURS); HWND hForce = GetDlgItem(hDlg, IDC_FORCEUNMUTE); HWND hNotify = GetDlgItem(hDlg, IDC_SHOWNOTIFICATIONS); - HWND hStart = GetDlgItem(hDlg, IDC_QUIETHOURS_START); - HWND hEnd = GetDlgItem(hDlg, IDC_QUIETHOURS_END); + HWND hQuietHoursTimes = GetDlgItem(hDlg, IDC_QUIET_HOURS_TIMES); + HWND hAdd = GetDlgItem(hDlg, IDC_QUIET_HOURS_ADD); + HWND hEdit = GetDlgItem(hDlg, IDC_QUIET_HOURS_EDIT); + HWND hDelete = GetDlgItem(hDlg, IDC_QUIET_HOURS_REMOVE); + HWND hDeleteAll = GetDlgItem(hDlg, IDC_QUIET_HOURS_REMOVEALL); WMSettings* settings = reinterpret_cast(lParam); assert(settings != nullptr); @@ -140,49 +244,44 @@ INT_PTR CALLBACK Settings_QuietHoursDlgProc(HWND hDlg, UINT msg, WPARAM wParam, EnableWindow(hForce, qhEnabled); EnableWindow(hNotify, qhEnabled); - EnableWindow(hStart, qhEnabled); - EnableWindow(hEnd, qhEnabled); - - int setStart = settings->QueryValue(SettingsKey::QUIETHOURS_START_V0_DEPRECATED); - int setEnd = settings->QueryValue(SettingsKey::QUIETHOURS_END_V0_DEPRECATED); - - SYSTEMTIME start; - GetLocalTime(&start); - if (setStart > 0) { - start.wSecond = static_cast(setStart % 60); - start.wMinute = static_cast(((setStart - start.wSecond) / 60) % 60); - start.wHour = static_cast((setStart - start.wMinute - start.wSecond) / 3600); - } - DateTime_SetSystemtime(hStart, GDT_VALID, &start); - - SYSTEMTIME end; - GetLocalTime(&end); - if (setEnd > 0) { - end.wSecond = static_cast(setEnd % 60); - end.wMinute = static_cast(((setEnd - end.wSecond) / 60) % 60); - end.wHour = static_cast((setEnd - end.wMinute - end.wSecond) / 3600); - } - DateTime_SetSystemtime(hEnd, GDT_VALID, &end); + EnableWindow(hQuietHoursTimes, qhEnabled); + EnableWindow(hAdd, qhEnabled); + EnableWindow(hEdit, qhEnabled); + EnableWindow(hDelete, qhEnabled); + EnableWindow(hDeleteAll, qhEnabled); return TRUE; } case WM_SAVESETTINGS: { - SYSTEMTIME start; - SYSTEMTIME end; HWND hEnable = GetDlgItem(hDlg, IDC_ENABLEQUIETHOURS); HWND hForce = GetDlgItem(hDlg, IDC_FORCEUNMUTE); HWND hNotify = GetDlgItem(hDlg, IDC_SHOWNOTIFICATIONS); - HWND hStart = GetDlgItem(hDlg, IDC_QUIETHOURS_START); - HWND hEnd = GetDlgItem(hDlg, IDC_QUIETHOURS_END); + HWND hQuietHoursTimes = GetDlgItem(hDlg, IDC_QUIET_HOURS_TIMES); WMSettings* settings = reinterpret_cast(GetWindowLongPtr(hDlg, GWLP_USERDATA)); int qhEnabled = Button_GetCheck(hEnable) == BST_CHECKED; int qhForceUnmute = Button_GetCheck(hForce) == BST_CHECKED; int qhNotifications = Button_GetCheck(hNotify) == BST_CHECKED; - DateTime_GetSystemtime(hStart, &start); - DateTime_GetSystemtime(hEnd, &end); settings->SetValue(SettingsKey::QUIETHOURS_ENABLE, qhEnabled); - if (SaveQuietHours(settings, qhEnabled, qhForceUnmute, qhNotifications, &start, &end)) { + + // Get number of items from IDC_QUIET_HOURS_TIMES + // Get each item from IDC_QUIET_HOURS_TIMES + // Read meta data of each item + const int entries = ListView_GetItemCount(hQuietHoursTimes); + std::vector> times(entries); + for (int i = 0; i < entries; ++i) { + LVITEM lvi{}; + lvi.iItem = i; + lvi.mask = LVIF_PARAM; + if (ListView_GetItem(hQuietHoursTimes, &lvi)) { + QuietHoursEntry* qh_entry = reinterpret_cast(lvi.lParam); + if (qh_entry != nullptr) { + times[i] = std::make_pair(qh_entry->start, qh_entry->end); + } + } + } + + if (SaveQuietHours(settings, qhEnabled, qhForceUnmute, qhNotifications, times)) { EndDialog(hDlg, 0); } return 0; @@ -192,14 +291,44 @@ INT_PTR CALLBACK Settings_QuietHoursDlgProc(HWND hDlg, UINT msg, WPARAM wParam, HWND hEnable = GetDlgItem(hDlg, IDC_ENABLEQUIETHOURS); HWND hForce = GetDlgItem(hDlg, IDC_FORCEUNMUTE); HWND hNotify = GetDlgItem(hDlg, IDC_SHOWNOTIFICATIONS); - HWND hStart = GetDlgItem(hDlg, IDC_QUIETHOURS_START); - HWND hEnd = GetDlgItem(hDlg, IDC_QUIETHOURS_END); + HWND hQuietHoursTimes = GetDlgItem(hDlg, IDC_QUIET_HOURS_TIMES); + HWND hAdd = GetDlgItem(hDlg, IDC_QUIET_HOURS_ADD); + HWND hEdit = GetDlgItem(hDlg, IDC_QUIET_HOURS_EDIT); + HWND hDelete = GetDlgItem(hDlg, IDC_QUIET_HOURS_REMOVE); + HWND hDeleteAll = GetDlgItem(hDlg, IDC_QUIET_HOURS_REMOVEALL); + if (LOWORD(wParam) == IDC_ENABLEQUIETHOURS) { int qhEnabled = Button_GetCheck(hEnable) == BST_CHECKED; - EnableWindow(hStart, qhEnabled); - EnableWindow(hEnd, qhEnabled); + EnableWindow(hQuietHoursTimes, qhEnabled); + EnableWindow(hAdd, qhEnabled); + EnableWindow(hEdit, qhEnabled); + EnableWindow(hDelete, qhEnabled); + EnableWindow(hDeleteAll, qhEnabled); EnableWindow(hNotify, qhEnabled); EnableWindow(hForce, qhEnabled); + + } else if (LOWORD(wParam) == IDC_QUIET_HOURS_ADD) { + QuietHoursEntry qh_entry; + if (DialogBoxParam( + nullptr, + MAKEINTRESOURCE(IDD_SETTINGS_QUIETHOURS_ADD), + hDlg, + Settings_QuietHoursAddDlgProc, + reinterpret_cast(&qh_entry)) == 0) { + // Add entry to ListView + // TODO + } + } else if (LOWORD(wParam) == IDC_QUIET_HOURS_EDIT) { + // Get selected item + // Open dialog with selected item data + // Update ListView item + // TODO + } else if (LOWORD(wParam) == IDC_QUIET_HOURS_REMOVE) { + // Get selected item + // Remove from ListView + // TODO + } else if (LOWORD(wParam) == IDC_QUIET_HOURS_REMOVEALL) { + ListView_DeleteAllItems(hQuietHoursTimes); } return 0; } diff --git a/WinMute/WMi18n.cpp b/WinMute/WMi18n.cpp index 548da11..f4aa480 100644 --- a/WinMute/WMi18n.cpp +++ b/WinMute/WMi18n.cpp @@ -221,7 +221,7 @@ const std::wstring WMi18n::GetTranslationW(const std::string& textId) const std::wstring err = std::format( L"Translation for {} not found", ConvertStringToWideString(textId)); - return text; + return err; } return text; } diff --git a/WinMute/WinMute.rc b/WinMute/WinMute.rc index 5e2105b..f15495e 100644 --- a/WinMute/WinMute.rc +++ b/WinMute/WinMute.rc @@ -95,20 +95,21 @@ BEGIN PUSHBUTTON "Show log...",IDC_OPENLOGDLG,129,118,94,16 END -IDD_SETTINGS_QUIETHOURS DIALOGEX 0, 0, 246, 198 +IDD_SETTINGS_QUIETHOURS DIALOGEX 0, 0, 246, 204 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN LTEXT "During Quiet Hours WinMute automatically mutes your PC volumes and unmutes it afterwards.",IDC_QUIET_HOURS_DESCRIPTION,7,9,232,22 CONTROL "Enable Quiet Hours",IDC_ENABLEQUIETHOURS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,31,120,15 - CONTROL "Force unmute",IDC_FORCEUNMUTE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,113,86,16 - LTEXT "If force unmute is enabled, WinMute will unmute your workstation when quiet hours end and not take into account if your workstation was already muted before quiet hours started.",IDC_QUIET_HOURS_FORCE_UNMUTE_DESCRIPTION,33,130,204,37 + CONTROL "Force unmute",IDC_FORCEUNMUTE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,123,216,16 + LTEXT "If force unmute is enabled, WinMute will unmute your workstation when quiet hours end and not take into account if your workstation was already muted before quiet hours started.",IDC_QUIET_HOURS_FORCE_UNMUTE_DESCRIPTION,33,140,204,37 CONTROL "Show quiet hours notifications",IDC_SHOWNOTIFICATIONS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,165,180,21 - CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,22,47,155,61 - PUSHBUTTON "Add",IDC_WIFI_ADD,183,46,56,16 - PUSHBUTTON "Edit",IDC_WIFI_EDIT,183,65,56,16 - PUSHBUTTON "Remove",IDC_WIFI_REMOVE,183,84,56,16 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,175,180,21 + CONTROL "",IDC_QUIET_HOURS_TIMES,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,22,47,155,72 + PUSHBUTTON "Add",IDC_QUIET_HOURS_ADD,183,46,56,16 + PUSHBUTTON "Edit",IDC_QUIET_HOURS_EDIT,183,65,56,16 + PUSHBUTTON "Remove",IDC_QUIET_HOURS_REMOVE,183,84,56,16 + PUSHBUTTON "Remove All",IDC_QUIET_HOURS_REMOVEALL,183,103,56,16 END IDD_ABOUT_LICENSE DIALOGEX 0, 0, 300, 181 @@ -259,6 +260,19 @@ BEGIN EDITTEXT IDC_LOG_CONTENT,7,7,389,238,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | NOT WS_BORDER | WS_VSCROLL | WS_HSCROLL END +IDD_SETTINGS_QUIETHOURS_ADD DIALOGEX 0, 0, 163, 71 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Edit Entry" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,54,50,50,14 + PUSHBUTTON "Cancel",IDCANCEL,106,50,50,14 + CONTROL "",IDC_QUIET_HOURS_START_PICKER,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_UPDOWN | WS_TABSTOP | 0x8,54,7,102,15 + LTEXT "Start:",IDC_QUIET_HOURS_START_LABEL,7,7,37,15,SS_CENTERIMAGE + CONTROL "",IDC_QUIET_HOURS_END_PICKER,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_UPDOWN | WS_TABSTOP | 0x8,54,27,102,15 + LTEXT "End:",IDC_QUIET_HOURS_END_LABEL,7,28,37,14,SS_CENTERIMAGE +END + ///////////////////////////////////////////////////////////////////////////// // @@ -297,7 +311,8 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 239 TOPMARGIN, 7 - BOTTOMMARGIN, 191 + BOTTOMMARGIN, 197 + HORZGUIDE, 119 END IDD_ABOUT_LICENSE, DIALOG @@ -379,6 +394,18 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 245 END + + IDD_SETTINGS_QUIETHOURS_ADD, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 156 + VERTGUIDE, 54 + TOPMARGIN, 7 + BOTTOMMARGIN, 64 + HORZGUIDE, 22 + HORZGUIDE, 27 + HORZGUIDE, 42 + END END #endif // APSTUDIO_INVOKED @@ -460,6 +487,11 @@ BEGIN 0, 0, 100, 100 END +IDD_SETTINGS_QUIETHOURS_ADD AFX_DIALOG_LAYOUT +BEGIN + 0 +END + ///////////////////////////////////////////////////////////////////////////// // diff --git a/WinMute/WinMute.vcxproj.filters b/WinMute/WinMute.vcxproj.filters index 3a77671..0fc4ce4 100644 --- a/WinMute/WinMute.vcxproj.filters +++ b/WinMute/WinMute.vcxproj.filters @@ -63,6 +63,9 @@ {825b7134-b70c-4e13-a95a-0a72645b1ec4} + + {da8d211c-0ba1-418d-9480-5cc15d8f8a5a} + @@ -117,6 +120,9 @@ Source Files\Base\Helper + + Source Files\Controllers\MediaPlayback + @@ -210,6 +216,9 @@ Source Files\UI\Dialogs + + Source Files\Controllers\MediaPlayback + diff --git a/WinMute/resource.h b/WinMute/resource.h index b3d0db4..eac69ed 100644 --- a/WinMute/resource.h +++ b/WinMute/resource.h @@ -26,6 +26,8 @@ #define IDI_APP_UPDATE 141 #define IDI_APPUPDATE 141 #define IDD_LOG 142 +#define IDD_EDIT_QUIET_HOURS_ENTRY 144 +#define IDD_SETTINGS_QUIETHOURS_ADD 144 #define IDC_LINK_HOMEPAGE 1001 #define IDC_LINK_SUPPORT 1002 #define IDC_LINK_PROJECT 1002 @@ -122,7 +124,13 @@ #define IDC_LINK_HELP_TRANSLATING 1073 #define IDC_EDIT1 1075 #define IDC_LOG_CONTENT 1075 -#define IDC_LIST1 1077 +#define IDC_QUIET_HOURS_TIMES 1077 +#define IDC_QUIET_HOURS_START_PICKER 1078 +#define IDC_QUIET_HOURS_END_PICKER 1079 +#define IDC_QUIET_HOURS_ADD 1079 +#define IDC_QUIET_HOURS_EDIT 1080 +#define IDC_QUIET_HOURS_REMOVE 1081 +#define IDC_QUIET_HOURS_REMOVEALL 1082 #define ID_TRAYMENU_INFO 40001 #define ID_TRAYMENU_ 40002 #define ID_TRAYMENU_MUTEON 40003 @@ -169,9 +177,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 144 +#define _APS_NEXT_RESOURCE_VALUE 146 #define _APS_NEXT_COMMAND_VALUE 40042 -#define _APS_NEXT_CONTROL_VALUE 1078 +#define _APS_NEXT_CONTROL_VALUE 1082 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif