From 397e25f2b71347c7c83495fe5b25496ff3b02b75 Mon Sep 17 00:00:00 2001 From: Philip Schell Date: Sat, 19 Oct 2013 13:05:02 +0000 Subject: WinterSpeak: ticket:269 WinterSpeak now rewritten git-svn-id: http://svn.miranda-ng.org/main/trunk@6532 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/WinterSpeak/src/AnnounceDialog.cpp | 149 +++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 plugins/WinterSpeak/src/AnnounceDialog.cpp (limited to 'plugins/WinterSpeak/src/AnnounceDialog.cpp') diff --git a/plugins/WinterSpeak/src/AnnounceDialog.cpp b/plugins/WinterSpeak/src/AnnounceDialog.cpp new file mode 100644 index 0000000000..11b917b287 --- /dev/null +++ b/plugins/WinterSpeak/src/AnnounceDialog.cpp @@ -0,0 +1,149 @@ +#include "Common.h" +#include "AnnounceDialog.h" + + +AnnounceDialog *AnnounceDialog::m_instance = 0; + +//------------------------------------------------------------------------------ +// public: +//------------------------------------------------------------------------------ +AnnounceDialog::AnnounceDialog(AnnounceDatabase &db) : m_db(db) +{ + m_instance = this; +} + +//------------------------------------------------------------------------------ +AnnounceDialog::~AnnounceDialog() +{ + m_instance = 0; +} + +//------------------------------------------------------------------------------ +// private: +//------------------------------------------------------------------------------ +INT_PTR CALLBACK AnnounceDialog::process(HWND window, UINT message, WPARAM wparam, LPARAM lparam) +{ + if (!m_instance) + { + return 1; + } + + switch (message) + { + case WM_INITDIALOG: + m_instance->load(window); + break; + + case WM_COMMAND: + m_instance->command(window, wparam); + break; + + case WM_NOTIFY: + if (PSN_APPLY == LPNMHDR(lparam)->code) + { + m_instance->save(window); + } + break; + } + + return 0; +} + +//------------------------------------------------------------------------------ +void AnnounceDialog::command(HWND window, int control) +{ + switch (LOWORD(control)) + { + case IDC_STATUS_OFFLINE: + case IDC_STATUS_ONLINE: + case IDC_STATUS_AWAY: + case IDC_STATUS_DND: + case IDC_STATUS_NA: + case IDC_STATUS_OCCUPIED: + case IDC_STATUS_FREEFORCHAT: + case IDC_STATUS_INVISIBLE: + case IDC_SPEAK_STATUS_MSG: + case IDC_SUPPRESS_CONNECT: + case IDC_EVENT_MESSAGE: + case IDC_EVENT_URL: + case IDC_EVENT_FILE: + case IDC_EVENT_AUTHREQUEST: + case IDC_EVENT_ADDED: + case IDC_READ_MSG_LENGTH: + case IDC_DIALOG_OPEN: + case IDC_DIALOG_FOCUSED: + + changed(window); + break; + + case IDC_MAX_MSG: + if (EN_CHANGE == HIWORD(control)) + { + changed(window); + } + break; + } +} + +//------------------------------------------------------------------------------ +void +AnnounceDialog::load(HWND window) +{ + TranslateDialogDefault(window); + + // initialise the checkboxes + CheckDlgButton(window, IDC_STATUS_OFFLINE, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_Offline)); + CheckDlgButton(window, IDC_STATUS_ONLINE, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_Online)); + CheckDlgButton(window, IDC_STATUS_AWAY, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_Away)); + CheckDlgButton(window, IDC_STATUS_DND, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_Dnd)); + CheckDlgButton(window, IDC_STATUS_NA, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_Na)); + CheckDlgButton(window, IDC_STATUS_OCCUPIED, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_Occupied)); + CheckDlgButton(window, IDC_STATUS_FREEFORCHAT, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_FreeForChat)); + CheckDlgButton(window, IDC_STATUS_INVISIBLE, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_Invisible)); + CheckDlgButton(window, IDC_SPEAK_STATUS_MSG, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_SpeakStatusMsg)); + CheckDlgButton(window, IDC_SUPPRESS_CONNECT, m_db.getStatusFlag(AnnounceDatabase::StatusFlag_SuppressConnect)); + + CheckDlgButton(window, IDC_EVENT_MESSAGE, m_db.getEventFlag(AnnounceDatabase::EventFlag_Message)); + CheckDlgButton(window, IDC_EVENT_URL, m_db.getEventFlag(AnnounceDatabase::EventFlag_Url)); + CheckDlgButton(window, IDC_EVENT_FILE, m_db.getEventFlag(AnnounceDatabase::EventFlag_File)); + CheckDlgButton(window, IDC_EVENT_AUTHREQUEST, m_db.getEventFlag(AnnounceDatabase::EventFlag_AuthRequest)); + CheckDlgButton(window, IDC_EVENT_ADDED, m_db.getEventFlag(AnnounceDatabase::EventFlag_Added)); + CheckDlgButton(window, IDC_READ_MSG_LENGTH, m_db.getEventFlag(AnnounceDatabase::EventFlag_ReadMsgLength)); + CheckDlgButton(window, IDC_DIALOG_OPEN, m_db.getEventFlag(AnnounceDatabase::EventFlag_DialogOpen)); + CheckDlgButton(window, IDC_DIALOG_FOCUSED, m_db.getEventFlag(AnnounceDatabase::EventFlag_DialogFocused)); + + // initialise the welcome message box + SetDlgItemInt(window, IDC_MAX_MSG, m_db.getMaxMsgSize(), 0); +} + +//------------------------------------------------------------------------------ +void +AnnounceDialog::save(HWND window) +{ + // store the checkboxes + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_Offline, (IsDlgButtonChecked(window, IDC_STATUS_OFFLINE) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_Online, (IsDlgButtonChecked(window, IDC_STATUS_ONLINE) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_Away, (IsDlgButtonChecked(window, IDC_STATUS_AWAY) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_Dnd, (IsDlgButtonChecked(window, IDC_STATUS_DND) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_Na, (IsDlgButtonChecked(window, IDC_STATUS_NA) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_Occupied, (IsDlgButtonChecked(window, IDC_STATUS_OCCUPIED) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_FreeForChat, (IsDlgButtonChecked(window, IDC_STATUS_FREEFORCHAT) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_Invisible, (IsDlgButtonChecked(window, IDC_STATUS_INVISIBLE) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_SpeakStatusMsg, (IsDlgButtonChecked(window, IDC_SPEAK_STATUS_MSG) != 0)); + m_db.setStatusFlag(AnnounceDatabase::StatusFlag_SuppressConnect, (IsDlgButtonChecked(window, IDC_SUPPRESS_CONNECT) != 0)); + + m_db.setEventFlag(AnnounceDatabase::EventFlag_Message, (IsDlgButtonChecked(window, IDC_EVENT_MESSAGE) != 0)); + m_db.setEventFlag(AnnounceDatabase::EventFlag_Url, (IsDlgButtonChecked(window, IDC_EVENT_URL) != 0)); + m_db.setEventFlag(AnnounceDatabase::EventFlag_File, (IsDlgButtonChecked(window, IDC_EVENT_FILE) != 0)); + m_db.setEventFlag(AnnounceDatabase::EventFlag_AuthRequest, (IsDlgButtonChecked(window, IDC_EVENT_AUTHREQUEST) != 0)); + m_db.setEventFlag(AnnounceDatabase::EventFlag_Added, (IsDlgButtonChecked(window, IDC_EVENT_ADDED) != 0)); + m_db.setEventFlag(AnnounceDatabase::EventFlag_ReadMsgLength, (IsDlgButtonChecked(window, IDC_READ_MSG_LENGTH) != 0)); + m_db.setEventFlag(AnnounceDatabase::EventFlag_DialogOpen, (IsDlgButtonChecked(window, IDC_DIALOG_OPEN) != 0)); + m_db.setEventFlag(AnnounceDatabase::EventFlag_DialogFocused, (IsDlgButtonChecked(window, IDC_DIALOG_FOCUSED) != 0)); + + m_db.setMaxMsgSize(GetDlgItemInt(window, IDC_MAX_MSG, NULL, 0)); + + m_instance->m_db.save(); +} + +//============================================================================== \ No newline at end of file -- cgit v1.2.3