diff options
Diffstat (limited to 'plugins/IEView/src/Options.cpp')
-rw-r--r-- | plugins/IEView/src/Options.cpp | 672 |
1 files changed, 262 insertions, 410 deletions
diff --git a/plugins/IEView/src/Options.cpp b/plugins/IEView/src/Options.cpp index b74d604dfe..c07c1a41f9 100644 --- a/plugins/IEView/src/Options.cpp +++ b/plugins/IEView/src/Options.cpp @@ -30,6 +30,8 @@ static ProtocolSettings *historyCurrentProtoItem = nullptr; static HIMAGELIST hProtocolImageList = nullptr;
static HIMAGELIST hImageList = nullptr;
+static OBJLIST<ProtocolSettings> arProtos(1), arTemp(1);
+
static LPARAM GetItemParam(HWND hwndTreeView, HTREEITEM hItem)
{
TVITEM tvi = { 0 };
@@ -42,14 +44,13 @@ static LPARAM GetItemParam(HWND hwndTreeView, HTREEITEM hItem) static void SaveSRMMProtoSettings(HWND hwndDlg, ProtocolSettings *proto)
{
if (proto != nullptr) {
- char path[MAX_PATH];
int i = Options::MODE_COMPATIBLE;
if (IsDlgButtonChecked(hwndDlg, IDC_MODE_TEMPLATE))
i = Options::MODE_TEMPLATE;
else if (IsDlgButtonChecked(hwndDlg, IDC_MODE_CSS))
i = Options::MODE_CSS;
- proto->setSRMMModeTemp(i);
+ proto->setSRMMMode(i);
i = IsDlgButtonChecked(hwndDlg, IDC_BACKGROUND_IMAGE) ? Options::LOG_IMAGE_ENABLED : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE) ? Options::LOG_IMAGE_SCROLL : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_SHOW_NICKNAMES) ? Options::LOG_SHOW_NICKNAMES : 0;
@@ -59,27 +60,28 @@ static void SaveSRMMProtoSettings(HWND hwndDlg, ProtocolSettings *proto) i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_LONG_DATE) ? Options::LOG_LONG_DATE : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_RELATIVE_DATE) ? Options::LOG_RELATIVE_DATE : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_GROUP_MESSAGES) ? Options::LOG_GROUP_MESSAGES : 0;
- proto->setSRMMFlagsTemp(i);
+ proto->setSRMMFlags(i);
+
+ char path[MAX_PATH];
GetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, path, _countof(path));
- proto->setSRMMBackgroundFilenameTemp(path);
+ proto->setSRMMBackgroundFilename(path);
GetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, path, _countof(path));
- proto->setSRMMCssFilenameTemp(path);
+ proto->setSRMMCssFilename(path);
GetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, path, _countof(path));
- proto->setSRMMTemplateFilenameTemp(path);
+ proto->setSRMMTemplateFilename(path);
}
}
static void SaveChatProtoSettings(HWND hwndDlg, ProtocolSettings *proto)
{
if (proto != nullptr) {
- char path[MAX_PATH];
int i = Options::MODE_COMPATIBLE;
if (IsDlgButtonChecked(hwndDlg, IDC_MODE_TEMPLATE))
i = Options::MODE_TEMPLATE;
else if (IsDlgButtonChecked(hwndDlg, IDC_MODE_CSS))
i = Options::MODE_CSS;
- proto->setChatModeTemp(i);
+ proto->setChatMode(i);
i = IsDlgButtonChecked(hwndDlg, IDC_BACKGROUND_IMAGE) ? Options::LOG_IMAGE_ENABLED : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE) ? Options::LOG_IMAGE_SCROLL : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_SHOW_NICKNAMES) ? Options::LOG_SHOW_NICKNAMES : 0;
@@ -89,27 +91,28 @@ static void SaveChatProtoSettings(HWND hwndDlg, ProtocolSettings *proto) i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_LONG_DATE) ? Options::LOG_LONG_DATE : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_RELATIVE_DATE) ? Options::LOG_RELATIVE_DATE : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_GROUP_MESSAGES) ? Options::LOG_GROUP_MESSAGES : 0;
- proto->setChatFlagsTemp(i);
+ proto->setChatFlags(i);
+
+ char path[MAX_PATH];
GetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, path, _countof(path));
- proto->setChatBackgroundFilenameTemp(path);
+ proto->setChatBackgroundFilename(path);
GetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, path, _countof(path));
- proto->setChatCssFilenameTemp(path);
+ proto->setChatCssFilename(path);
GetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, path, _countof(path));
- proto->setChatTemplateFilenameTemp(path);
+ proto->setChatTemplateFilename(path);
}
}
static void SaveHistoryProtoSettings(HWND hwndDlg, ProtocolSettings *proto)
{
if (proto != nullptr) {
- char path[MAX_PATH];
int i = Options::MODE_COMPATIBLE;
if (IsDlgButtonChecked(hwndDlg, IDC_MODE_TEMPLATE))
i = Options::MODE_TEMPLATE;
else if (IsDlgButtonChecked(hwndDlg, IDC_MODE_CSS))
i = Options::MODE_CSS;
- proto->setHistoryModeTemp(i);
+ proto->setHistoryMode(i);
i = IsDlgButtonChecked(hwndDlg, IDC_BACKGROUND_IMAGE) ? Options::LOG_IMAGE_ENABLED : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE) ? Options::LOG_IMAGE_SCROLL : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_SHOW_NICKNAMES) ? Options::LOG_SHOW_NICKNAMES : 0;
@@ -119,13 +122,15 @@ static void SaveHistoryProtoSettings(HWND hwndDlg, ProtocolSettings *proto) i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_LONG_DATE) ? Options::LOG_LONG_DATE : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_RELATIVE_DATE) ? Options::LOG_RELATIVE_DATE : 0;
i |= IsDlgButtonChecked(hwndDlg, IDC_LOG_GROUP_MESSAGES) ? Options::LOG_GROUP_MESSAGES : 0;
- proto->setHistoryFlagsTemp(i);
+ proto->setHistoryFlags(i);
+
+ char path[MAX_PATH];
GetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, path, _countof(path));
- proto->setHistoryBackgroundFilenameTemp(path);
+ proto->setHistoryBackgroundFilename(path);
GetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, path, _countof(path));
- proto->setHistoryCssFilenameTemp(path);
+ proto->setHistoryCssFilename(path);
GetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, path, _countof(path));
- proto->setHistoryTemplateFilenameTemp(path);
+ proto->setHistoryTemplateFilename(path);
}
}
@@ -185,38 +190,25 @@ static void UpdateSRMMProtoInfo(HWND hwndDlg, ProtocolSettings *proto) {
if (proto != nullptr) {
HWND hProtoList = GetDlgItem(hwndDlg, IDC_PROTOLIST);
- TreeView_SetCheckState(hProtoList, TreeView_GetSelection(hProtoList), proto->isSRMMEnableTemp());
- CheckDlgButton(hwndDlg, IDC_MODE_TEMPLATE, proto->getSRMMModeTemp() == Options::MODE_TEMPLATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MODE_CSS, proto->getSRMMModeTemp() == Options::MODE_CSS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MODE_COMPATIBLE, proto->getSRMMModeTemp() == Options::MODE_COMPATIBLE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_BACKGROUND_IMAGE, proto->getSRMMFlagsTemp() & Options::LOG_IMAGE_ENABLED ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE, proto->getSRMMFlagsTemp() & Options::LOG_IMAGE_SCROLL ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_NICKNAMES, proto->getSRMMFlagsTemp() & Options::LOG_SHOW_NICKNAMES ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_TIME, proto->getSRMMFlagsTemp() & Options::LOG_SHOW_TIME ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_DATE, proto->getSRMMFlagsTemp() & Options::LOG_SHOW_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_SECONDS, proto->getSRMMFlagsTemp() & Options::LOG_SHOW_SECONDS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_LONG_DATE, proto->getSRMMFlagsTemp() & Options::LOG_LONG_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_RELATIVE_DATE, proto->getSRMMFlagsTemp() & Options::LOG_RELATIVE_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_GROUP_MESSAGES, proto->getSRMMFlagsTemp() & Options::LOG_GROUP_MESSAGES ? BST_CHECKED : BST_UNCHECKED);
- if (proto->getSRMMBackgroundFilenameTemp() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, proto->getSRMMBackgroundFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, "");
- }
- if (proto->getSRMMCssFilename() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, proto->getSRMMCssFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, "");
- }
- if (proto->getSRMMTemplateFilenameTemp() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, proto->getSRMMTemplateFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, "");
- }
- UpdateTemplateIcons(hwndDlg, proto->getSRMMTemplateFilenameTemp());
+ TreeView_SetCheckState(hProtoList, TreeView_GetSelection(hProtoList), proto->isSRMMEnable());
+ CheckDlgButton(hwndDlg, IDC_MODE_TEMPLATE, proto->getSRMMMode() == Options::MODE_TEMPLATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_MODE_CSS, proto->getSRMMMode() == Options::MODE_CSS ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_MODE_COMPATIBLE, proto->getSRMMMode() == Options::MODE_COMPATIBLE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_BACKGROUND_IMAGE, proto->getSRMMFlags() & Options::LOG_IMAGE_ENABLED ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE, proto->getSRMMFlags() & Options::LOG_IMAGE_SCROLL ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_NICKNAMES, proto->getSRMMFlags() & Options::LOG_SHOW_NICKNAMES ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_TIME, proto->getSRMMFlags() & Options::LOG_SHOW_TIME ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_DATE, proto->getSRMMFlags() & Options::LOG_SHOW_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_SECONDS, proto->getSRMMFlags() & Options::LOG_SHOW_SECONDS ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_LONG_DATE, proto->getSRMMFlags() & Options::LOG_LONG_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_RELATIVE_DATE, proto->getSRMMFlags() & Options::LOG_RELATIVE_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_GROUP_MESSAGES, proto->getSRMMFlags() & Options::LOG_GROUP_MESSAGES ? BST_CHECKED : BST_UNCHECKED);
+
+ SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, proto->getSRMMBackgroundFilename());
+ SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, proto->getSRMMCssFilename());
+ SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, proto->getSRMMTemplateFilename());
+
+ UpdateTemplateIcons(hwndDlg, proto->getSRMMTemplateFilename());
srmmCurrentProtoItem = proto;
UpdateControlsState(hwndDlg);
}
@@ -226,38 +218,25 @@ static void UpdateChatProtoInfo(HWND hwndDlg, ProtocolSettings *proto) {
if (proto != nullptr) {
HWND hProtoList = GetDlgItem(hwndDlg, IDC_PROTOLIST);
- TreeView_SetCheckState(hProtoList, TreeView_GetSelection(hProtoList), proto->isChatEnableTemp());
- CheckDlgButton(hwndDlg, IDC_MODE_TEMPLATE, proto->getChatModeTemp() == Options::MODE_TEMPLATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MODE_CSS, proto->getChatModeTemp() == Options::MODE_CSS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MODE_COMPATIBLE, proto->getChatModeTemp() == Options::MODE_COMPATIBLE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_BACKGROUND_IMAGE, proto->getChatFlagsTemp() & Options::LOG_IMAGE_ENABLED ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE, proto->getChatFlagsTemp() & Options::LOG_IMAGE_SCROLL ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_NICKNAMES, proto->getChatFlagsTemp() & Options::LOG_SHOW_NICKNAMES ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_TIME, proto->getChatFlagsTemp() & Options::LOG_SHOW_TIME ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_DATE, proto->getChatFlagsTemp() & Options::LOG_SHOW_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_SECONDS, proto->getChatFlagsTemp() & Options::LOG_SHOW_SECONDS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_LONG_DATE, proto->getChatFlagsTemp() & Options::LOG_LONG_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_RELATIVE_DATE, proto->getChatFlagsTemp() & Options::LOG_RELATIVE_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_GROUP_MESSAGES, proto->getChatFlagsTemp() & Options::LOG_GROUP_MESSAGES ? BST_CHECKED : BST_UNCHECKED);
- if (proto->getChatBackgroundFilenameTemp() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, proto->getChatBackgroundFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, "");
- }
- if (proto->getChatCssFilename() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, proto->getChatCssFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, "");
- }
- if (proto->getChatTemplateFilenameTemp() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, proto->getChatTemplateFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, "");
- }
- UpdateTemplateIcons(hwndDlg, proto->getChatTemplateFilenameTemp());
+ TreeView_SetCheckState(hProtoList, TreeView_GetSelection(hProtoList), proto->isChatEnable());
+ CheckDlgButton(hwndDlg, IDC_MODE_TEMPLATE, proto->getChatMode() == Options::MODE_TEMPLATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_MODE_CSS, proto->getChatMode() == Options::MODE_CSS ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_MODE_COMPATIBLE, proto->getChatMode() == Options::MODE_COMPATIBLE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_BACKGROUND_IMAGE, proto->getChatFlags() & Options::LOG_IMAGE_ENABLED ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE, proto->getChatFlags() & Options::LOG_IMAGE_SCROLL ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_NICKNAMES, proto->getChatFlags() & Options::LOG_SHOW_NICKNAMES ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_TIME, proto->getChatFlags() & Options::LOG_SHOW_TIME ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_DATE, proto->getChatFlags() & Options::LOG_SHOW_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_SECONDS, proto->getChatFlags() & Options::LOG_SHOW_SECONDS ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_LONG_DATE, proto->getChatFlags() & Options::LOG_LONG_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_RELATIVE_DATE, proto->getChatFlags() & Options::LOG_RELATIVE_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_GROUP_MESSAGES, proto->getChatFlags() & Options::LOG_GROUP_MESSAGES ? BST_CHECKED : BST_UNCHECKED);
+
+ SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, proto->getChatBackgroundFilename());
+ SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, proto->getChatCssFilename());
+ SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, proto->getChatTemplateFilename());
+
+ UpdateTemplateIcons(hwndDlg, proto->getChatTemplateFilename());
chatCurrentProtoItem = proto;
UpdateControlsState(hwndDlg);
}
@@ -267,38 +246,25 @@ static void UpdateHistoryProtoInfo(HWND hwndDlg, ProtocolSettings *proto) {
if (proto != nullptr) {
HWND hProtoList = GetDlgItem(hwndDlg, IDC_PROTOLIST);
- TreeView_SetCheckState(hProtoList, TreeView_GetSelection(hProtoList), proto->isHistoryEnableTemp());
- CheckDlgButton(hwndDlg, IDC_MODE_TEMPLATE, proto->getHistoryModeTemp() == Options::MODE_TEMPLATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MODE_CSS, proto->getHistoryModeTemp() == Options::MODE_CSS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MODE_COMPATIBLE, proto->getHistoryModeTemp() == Options::MODE_COMPATIBLE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_BACKGROUND_IMAGE, proto->getHistoryFlagsTemp() & Options::LOG_IMAGE_ENABLED ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE, proto->getHistoryFlagsTemp() & Options::LOG_IMAGE_SCROLL ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_NICKNAMES, proto->getHistoryFlagsTemp() & Options::LOG_SHOW_NICKNAMES ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_TIME, proto->getHistoryFlagsTemp() & Options::LOG_SHOW_TIME ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_DATE, proto->getHistoryFlagsTemp() & Options::LOG_SHOW_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_SHOW_SECONDS, proto->getHistoryFlagsTemp() & Options::LOG_SHOW_SECONDS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_LONG_DATE, proto->getHistoryFlagsTemp() & Options::LOG_LONG_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_RELATIVE_DATE, proto->getHistoryFlagsTemp() & Options::LOG_RELATIVE_DATE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LOG_GROUP_MESSAGES, proto->getHistoryFlagsTemp() & Options::LOG_GROUP_MESSAGES ? BST_CHECKED : BST_UNCHECKED);
- if (proto->getHistoryBackgroundFilenameTemp() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, proto->getHistoryBackgroundFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, "");
- }
- if (proto->getHistoryCssFilename() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, proto->getHistoryCssFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, "");
- }
- if (proto->getHistoryTemplateFilenameTemp() != nullptr) {
- SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, proto->getHistoryTemplateFilenameTemp());
- }
- else {
- SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, "");
- }
- UpdateTemplateIcons(hwndDlg, proto->getHistoryTemplateFilenameTemp());
+ TreeView_SetCheckState(hProtoList, TreeView_GetSelection(hProtoList), proto->isHistoryEnable());
+ CheckDlgButton(hwndDlg, IDC_MODE_TEMPLATE, proto->getHistoryMode() == Options::MODE_TEMPLATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_MODE_CSS, proto->getHistoryMode() == Options::MODE_CSS ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_MODE_COMPATIBLE, proto->getHistoryMode() == Options::MODE_COMPATIBLE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_BACKGROUND_IMAGE, proto->getHistoryFlags() & Options::LOG_IMAGE_ENABLED ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_SCROLL_BACKGROUND_IMAGE, proto->getHistoryFlags() & Options::LOG_IMAGE_SCROLL ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_NICKNAMES, proto->getHistoryFlags() & Options::LOG_SHOW_NICKNAMES ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_TIME, proto->getHistoryFlags() & Options::LOG_SHOW_TIME ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_DATE, proto->getHistoryFlags() & Options::LOG_SHOW_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_SHOW_SECONDS, proto->getHistoryFlags() & Options::LOG_SHOW_SECONDS ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_LONG_DATE, proto->getHistoryFlags() & Options::LOG_LONG_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_RELATIVE_DATE, proto->getHistoryFlags() & Options::LOG_RELATIVE_DATE ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_LOG_GROUP_MESSAGES, proto->getHistoryFlags() & Options::LOG_GROUP_MESSAGES ? BST_CHECKED : BST_UNCHECKED);
+
+ SetDlgItemTextA(hwndDlg, IDC_BACKGROUND_IMAGE_FILENAME, proto->getHistoryBackgroundFilename());
+ SetDlgItemTextA(hwndDlg, IDC_EXTERNALCSS_FILENAME, proto->getHistoryCssFilename());
+ SetDlgItemTextA(hwndDlg, IDC_TEMPLATES_FILENAME, proto->getHistoryTemplateFilename());
+
+ UpdateTemplateIcons(hwndDlg, proto->getHistoryTemplateFilename());
historyCurrentProtoItem = proto;
UpdateControlsState(hwndDlg);
}
@@ -306,23 +272,22 @@ static void UpdateHistoryProtoInfo(HWND hwndDlg, ProtocolSettings *proto) static void RefreshProtoIcons()
{
- if (hProtocolImageList != nullptr)
- ImageList_RemoveAll(hProtocolImageList);
- else
- hProtocolImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK | ILC_COLOR32, 0, 0);
+ hProtocolImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK | ILC_COLOR32, 0, 0);
- ProtocolSettings *proto = Options::getProtocolSettings();
- for (int i = 0; proto != nullptr; proto = proto->getNext(), i++) {
+ for (auto &it : arProtos) {
HICON hIcon = nullptr;
- if (i > 0) {
- hIcon = (HICON)CallProtoService(proto->getProtocolName(), PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0);
+
+ if (it->getProtocolName() != nullptr) {
+ hIcon = (HICON)CallProtoService(it->getProtocolName(), PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0);
if (hIcon == nullptr)
- hIcon = (HICON)CallProtoService(proto->getProtocolName(), PS_LOADICON, PLI_PROTOCOL, 0);
+ hIcon = (HICON)CallProtoService(it->getProtocolName(), PS_LOADICON, PLI_PROTOCOL, 0);
+ }
+ if (hIcon != nullptr) {
ImageList_AddIcon(hProtocolImageList, hIcon);
DestroyIcon(hIcon);
}
- if (hIcon == nullptr) {
+ else {
hIcon = (HICON)Skin_LoadIcon(SKINICON_OTHER_MIRANDA);
ImageList_AddIcon(hProtocolImageList, hIcon);
IcoLib_ReleaseIcon(hIcon);
@@ -332,11 +297,7 @@ static void RefreshProtoIcons() static void RefreshIcons()
{
- if (hImageList != nullptr)
- ImageList_RemoveAll(hImageList);
- else
- hImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK | ILC_COLOR32, 0, 0);
-
+ hImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK | ILC_COLOR32, 0, 0);
ImageList_AddIcon(hImageList, IcoLib_GetIconByHandle(iconList[3].hIcolib));
ImageList_AddIcon(hImageList, IcoLib_GetIconByHandle(iconList[2].hIcolib));
ImageList_AddIcon(hImageList, IcoLib_GetIconByHandle(iconList[1].hIcolib));
@@ -349,36 +310,35 @@ static void RefreshProtoList(HWND hwndDlg, int mode, bool protoTemplates) HWND hProtoList = GetDlgItem(hwndDlg, IDC_PROTOLIST);
TreeView_DeleteAllItems(hProtoList);
TreeView_SetImageList(hProtoList, hProtocolImageList, TVSIL_NORMAL);
- ProtocolSettings *proto = Options::getProtocolSettings();
- for (int i = 0; proto != nullptr; proto = proto->getNext(), i++) {
+
+ for (auto &it : arTemp) {
char protoName[128];
TVINSERTSTRUCT tvi = {};
tvi.hParent = TVI_ROOT;
tvi.hInsertAfter = TVI_LAST;
tvi.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_STATE | TVIF_SELECTEDIMAGE;
tvi.item.stateMask = TVIS_SELECTED | TVIS_STATEIMAGEMASK;
- if (i == 0)
+ if (it->getProtocolName() == nullptr)
strncpy_s(protoName, Translate("Default"), _TRUNCATE);
else
- CallProtoService(proto->getProtocolName(), PS_GETNAME, sizeof(protoName), (LPARAM)protoName);
+ CallProtoService(it->getProtocolName(), PS_GETNAME, sizeof(protoName), (LPARAM)protoName);
tvi.item.pszText = mir_a2u(protoName);
- tvi.item.lParam = (LPARAM)proto;
- tvi.item.iImage = i;
- tvi.item.iSelectedImage = i;
+ tvi.item.lParam = (LPARAM)it;
+ tvi.item.iImage = tvi.item.iSelectedImage = arTemp.indexOf(&it);
switch (mode) {
case 0:
- tvi.item.state = INDEXTOSTATEIMAGEMASK(proto->isSRMMEnableTemp() ? 2 : 1);
+ tvi.item.state = INDEXTOSTATEIMAGEMASK(it->isSRMMEnable() ? 2 : 1);
break;
case 1:
- tvi.item.state = INDEXTOSTATEIMAGEMASK(proto->isChatEnableTemp() ? 2 : 1);
+ tvi.item.state = INDEXTOSTATEIMAGEMASK(it->isChatEnable() ? 2 : 1);
break;
case 2:
- tvi.item.state = INDEXTOSTATEIMAGEMASK(proto->isHistoryEnableTemp() ? 2 : 1);
+ tvi.item.state = INDEXTOSTATEIMAGEMASK(it->isHistoryEnable() ? 2 : 1);
break;
}
- if (i == 0)
+ if (it->getProtocolName() == nullptr)
hItem = TreeView_InsertItem(hProtoList, &tvi);
else
TreeView_InsertItem(hProtoList, &tvi);
@@ -386,7 +346,7 @@ static void RefreshProtoList(HWND hwndDlg, int mode, bool protoTemplates) if (!protoTemplates)
break;
}
- // UpdateSRMMProtoInfo(hwndDlg, Options::getProtocolSettings());
+
TreeView_SelectItem(hProtoList, hItem);
}
@@ -416,7 +376,9 @@ static int changed = 0; static void MarkInitialized(int i)
{
if (initialized == 0) {
- Options::resetProtocolSettings();
+ for (auto &it : arProtos)
+ arTemp.insert(new ProtocolSettings(*it));
+
RefreshProtoIcons();
RefreshIcons();
}
@@ -433,6 +395,17 @@ static void ApplyChanges(int i) }
}
+static void CleanDialog(int i)
+{
+ initialized &= ~i;
+ if (initialized == 0) {
+ arTemp.destroy();
+
+ ImageList_Destroy(hImageList); hImageList = nullptr;
+ ImageList_Destroy(hProtocolImageList); hProtocolImageList = nullptr;
+ }
+}
+
static void MarkChanges(int i, HWND hWnd)
{
SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
@@ -445,22 +418,22 @@ static INT_PTR CALLBACK IEViewGeneralOptDlgProc(HWND hwndDlg, UINT msg, WPARAM w case WM_INITDIALOG:
MarkInitialized(1);
TranslateDialogDefault(hwndDlg);
- if (Options::getGeneralFlags() & Options::GENERAL_ENABLE_BBCODES) {
+ if (Options::generalFlags & Options::GENERAL_ENABLE_BBCODES)
CheckDlgButton(hwndDlg, IDC_ENABLE_BBCODES, BST_CHECKED);
- }
- if (Options::getGeneralFlags() & Options::GENERAL_ENABLE_FLASH) {
+
+ if (Options::generalFlags & Options::GENERAL_ENABLE_FLASH)
CheckDlgButton(hwndDlg, IDC_ENABLE_FLASH, BST_CHECKED);
- }
- if (Options::getGeneralFlags() & Options::GENERAL_SMILEYINNAMES) {
+
+ if (Options::generalFlags & Options::GENERAL_SMILEYINNAMES)
CheckDlgButton(hwndDlg, IDC_SMILEYS_IN_NAMES, BST_CHECKED);
- }
- if (Options::getGeneralFlags() & Options::GENERAL_NO_BORDER) {
+
+ if (Options::generalFlags & Options::GENERAL_NO_BORDER)
CheckDlgButton(hwndDlg, IDC_NO_BORDER, BST_CHECKED);
- }
- if (Options::getGeneralFlags() & Options::GENERAL_ENABLE_EMBED) {
+
+ if (Options::generalFlags & Options::GENERAL_ENABLE_EMBED)
CheckDlgButton(hwndDlg, IDC_ENABLE_EMBED, BST_CHECKED);
- }
- EnableWindow(GetDlgItem(hwndDlg, IDC_SMILEYS_IN_NAMES), Options::isSmileyAdd());
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_SMILEYS_IN_NAMES), Options::bHasSmileyAdd);
EnableWindow(GetDlgItem(hwndDlg, IDC_EMBED_SIZE), IsDlgButtonChecked(hwndDlg, IDC_ENABLE_EMBED));
{
wchar_t* size[] = { L"320 x 205", L"480 x 385", L"560 x 349", L"640 x 390" };
@@ -468,10 +441,14 @@ static INT_PTR CALLBACK IEViewGeneralOptDlgProc(HWND hwndDlg, UINT msg, WPARAM w int item = SendDlgItemMessage(hwndDlg, IDC_EMBED_SIZE, CB_ADDSTRING, 0, (LPARAM)TranslateW(it));
SendDlgItemMessage(hwndDlg, IDC_EMBED_SIZE, CB_SETITEMDATA, item, 0);
}
- SendDlgItemMessage(hwndDlg, IDC_EMBED_SIZE, CB_SETCURSEL, Options::getEmbedsize(), 0);
+ SendDlgItemMessage(hwndDlg, IDC_EMBED_SIZE, CB_SETCURSEL, Options::getEmbedSize(), 0);
}
return TRUE;
+ case WM_DESTROY:
+ CleanDialog(1);
+ break;
+
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_ENABLE_BBCODES:
@@ -491,25 +468,27 @@ static INT_PTR CALLBACK IEViewGeneralOptDlgProc(HWND hwndDlg, UINT msg, WPARAM w case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code) {
case PSN_APPLY:
- int i = 0;
- if (IsDlgButtonChecked(hwndDlg, IDC_ENABLE_BBCODES)) {
+ DWORD i = 0;
+ if (IsDlgButtonChecked(hwndDlg, IDC_ENABLE_BBCODES))
i |= Options::GENERAL_ENABLE_BBCODES;
- }
- if (IsDlgButtonChecked(hwndDlg, IDC_ENABLE_FLASH)) {
+
+ if (IsDlgButtonChecked(hwndDlg, IDC_ENABLE_FLASH))
i |= Options::GENERAL_ENABLE_FLASH;
- }
- if (IsDlgButtonChecked(hwndDlg, IDC_SMILEYS_IN_NAMES)) {
+
+ if (IsDlgButtonChecked(hwndDlg, IDC_SMILEYS_IN_NAMES))
i |= Options::GENERAL_SMILEYINNAMES;
- }
- if (IsDlgButtonChecked(hwndDlg, IDC_NO_BORDER)) {
+
+ if (IsDlgButtonChecked(hwndDlg, IDC_NO_BORDER))
i |= Options::GENERAL_NO_BORDER;
- }
- if (IsDlgButtonChecked(hwndDlg, IDC_ENABLE_EMBED)) {
+
+ if (IsDlgButtonChecked(hwndDlg, IDC_ENABLE_EMBED))
i |= Options::GENERAL_ENABLE_EMBED;
- }
- Options::setGeneralFlags(i);
+
+ Options::generalFlags = i;
+ db_set_dw(NULL, ieviewModuleName, DBS_BASICFLAGS, i);
+
ApplyChanges(1);
- Options::setEmbedsize(SendDlgItemMessage(hwndDlg, IDC_EMBED_SIZE, CB_GETCURSEL, 0, 0));
+ Options::setEmbedSize(SendDlgItemMessage(hwndDlg, IDC_EMBED_SIZE, CB_GETCURSEL, 0, 0));
return TRUE;
}
break;
@@ -530,6 +509,10 @@ static INT_PTR CALLBACK IEViewSRMMOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wPar RefreshProtoList(hwndDlg, 0, true);
return TRUE;
+ case WM_DESTROY:
+ CleanDialog(2);
+ break;
+
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_BACKGROUND_IMAGE_FILENAME:
@@ -601,8 +584,8 @@ static INT_PTR CALLBACK IEViewSRMMOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wPar {
ProtocolSettings *proto = (ProtocolSettings *)GetItemParam((HWND)wParam, (HTREEITEM)lParam);
if (proto != nullptr)
- if (strcmpi(proto->getProtocolName(), "_default_"))
- proto->setSRMMEnableTemp(0 != TreeView_GetCheckState((HWND)wParam, (HTREEITEM)lParam));
+ if (proto->getProtocolName() != nullptr)
+ proto->setSRMMEnable(0 != TreeView_GetCheckState((HWND)wParam, (HTREEITEM)lParam));
if ((HTREEITEM)lParam != TreeView_GetSelection((HWND)wParam))
TreeView_SelectItem((HWND)wParam, (HTREEITEM)lParam);
@@ -667,6 +650,10 @@ static INT_PTR CALLBACK IEViewHistoryOptDlgProc(HWND hwndDlg, UINT msg, WPARAM w RefreshProtoList(hwndDlg, 2, true);
return TRUE;
+ case WM_DESTROY:
+ CleanDialog(4);
+ break;
+
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_BACKGROUND_IMAGE_FILENAME:
@@ -735,8 +722,8 @@ static INT_PTR CALLBACK IEViewHistoryOptDlgProc(HWND hwndDlg, UINT msg, WPARAM w {
ProtocolSettings *proto = (ProtocolSettings *)GetItemParam((HWND)wParam, (HTREEITEM)lParam);
if (proto != nullptr)
- if (strcmpi(proto->getProtocolName(), "_default_"))
- proto->setHistoryEnableTemp(0 != TreeView_GetCheckState((HWND)wParam, (HTREEITEM)lParam));
+ if (proto->getProtocolName() != nullptr)
+ proto->setHistoryEnable(0 != TreeView_GetCheckState((HWND)wParam, (HTREEITEM)lParam));
if ((HTREEITEM)lParam != TreeView_GetSelection((HWND)wParam))
TreeView_SelectItem((HWND)wParam, (HTREEITEM)lParam);
@@ -800,6 +787,10 @@ static INT_PTR CALLBACK IEViewGroupChatsOptDlgProc(HWND hwndDlg, UINT msg, WPARA RefreshProtoList(hwndDlg, 1, true);
return TRUE;
+ case WM_DESTROY:
+ CleanDialog(8);
+ break;
+
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_BACKGROUND_IMAGE_FILENAME:
@@ -868,8 +859,8 @@ static INT_PTR CALLBACK IEViewGroupChatsOptDlgProc(HWND hwndDlg, UINT msg, WPARA {
ProtocolSettings *proto = (ProtocolSettings *)GetItemParam((HWND)wParam, (HTREEITEM)lParam);
if (proto != nullptr)
- if (strcmpi(proto->getProtocolName(), "_default_"))
- proto->setChatEnableTemp(0 != TreeView_GetCheckState((HWND)wParam, (HTREEITEM)lParam));
+ if (proto->getProtocolName() != nullptr)
+ proto->setChatEnable(0 != TreeView_GetCheckState((HWND)wParam, (HTREEITEM)lParam));
if ((HTREEITEM)lParam != TreeView_GetSelection((HWND)wParam)) {
TreeView_SelectItem((HWND)wParam, (HTREEITEM)lParam);
@@ -962,140 +953,40 @@ int IEViewOptInit(WPARAM wParam, LPARAM) /////////////////////////////////////////////////////////////////////////////////////////
bool Options::isInited = false;
-bool Options::bSmileyAdd = false;
-int Options::avatarServiceFlags = 0;
+bool Options::bHasAvs = false;
+bool Options::bHasSmileyAdd = false;
int Options::generalFlags;
-ProtocolSettings* Options::protocolList = nullptr;
-
ProtocolSettings::ProtocolSettings(const char *protocolName)
{
this->protocolName = mir_strdup(protocolName);
- next = nullptr;
- srmmEnable = false;
- srmmMode = Options::MODE_COMPATIBLE;
- srmmFlags = 0;
- srmmBackgroundFilename = mir_strdup("");
- srmmCssFilename = mir_strdup("");
- srmmTemplateFilename = mir_strdup("");
- srmmBackgroundFilenameTemp = mir_strdup("");
- srmmCssFilenameTemp = mir_strdup("");
- srmmTemplateFilenameTemp = mir_strdup("");
-
- chatEnable = false;
+ srmmMode = Options::MODE_COMPATIBLE;
chatMode = Options::MODE_COMPATIBLE;
- chatFlags = 0;
- chatBackgroundFilename = mir_strdup("");
- chatCssFilename = mir_strdup("");
- chatTemplateFilename = mir_strdup("");
-
- chatBackgroundFilenameTemp = mir_strdup("");
- chatCssFilenameTemp = mir_strdup("");
- chatTemplateFilenameTemp = mir_strdup("");
-
- historyEnable = false;
historyMode = Options::MODE_COMPATIBLE;
- historyFlags = 0;
- historyBackgroundFilename = mir_strdup("");
- historyCssFilename = mir_strdup("");
- historyTemplateFilename = mir_strdup("");
-
- historyBackgroundFilenameTemp = mir_strdup("");
- historyCssFilenameTemp = mir_strdup("");
- historyTemplateFilenameTemp = mir_strdup("");
-
}
ProtocolSettings::~ProtocolSettings()
{
- mir_free(protocolName);
- mir_free(srmmBackgroundFilename);
- mir_free(srmmBackgroundFilenameTemp);
- mir_free(srmmCssFilename);
- mir_free(srmmCssFilenameTemp);
- mir_free(srmmTemplateFilename);
- mir_free(srmmTemplateFilenameTemp);
- mir_free(chatBackgroundFilename);
- mir_free(chatBackgroundFilenameTemp);
- mir_free(chatCssFilename);
- mir_free(chatCssFilenameTemp);
- mir_free(chatTemplateFilename);
- mir_free(chatTemplateFilenameTemp);
-
- mir_free(historyBackgroundFilename);
- mir_free(historyBackgroundFilenameTemp);
- mir_free(historyCssFilename);
- mir_free(historyCssFilenameTemp);
- mir_free(historyTemplateFilename);
- mir_free(historyTemplateFilenameTemp);
-}
-
-void ProtocolSettings::copyToTemp()
-{
- setSRMMModeTemp(getSRMMMode());
- setSRMMFlagsTemp(getSRMMFlags());
- setSRMMBackgroundFilenameTemp(getSRMMBackgroundFilename());
- setSRMMCssFilenameTemp(getSRMMCssFilename());
- setSRMMTemplateFilenameTemp(getSRMMTemplateFilename());
- setSRMMEnableTemp(isSRMMEnable());
-
- setChatModeTemp(getChatMode());
- setChatFlagsTemp(getChatFlags());
- setChatBackgroundFilenameTemp(getChatBackgroundFilename());
- setChatCssFilenameTemp(getChatCssFilename());
- setChatTemplateFilenameTemp(getChatTemplateFilename());
- setChatEnableTemp(isChatEnable());
-
- setHistoryModeTemp(getHistoryMode());
- setHistoryFlagsTemp(getHistoryFlags());
- setHistoryBackgroundFilenameTemp(getHistoryBackgroundFilename());
- setHistoryCssFilenameTemp(getHistoryCssFilename());
- setHistoryTemplateFilenameTemp(getHistoryTemplateFilename());
- setHistoryEnableTemp(isHistoryEnable());
-}
-
-void ProtocolSettings::copyFromTemp()
-{
- setSRMMMode(getSRMMModeTemp());
- setSRMMFlags(getSRMMFlagsTemp());
- setSRMMBackgroundFilename(getSRMMBackgroundFilenameTemp());
- setSRMMCssFilename(getSRMMCssFilenameTemp());
- setSRMMTemplateFilename(getSRMMTemplateFilenameTemp());
- setSRMMEnable(isSRMMEnableTemp());
-
- setChatMode(getChatModeTemp());
- setChatFlags(getChatFlagsTemp());
- setChatBackgroundFilename(getChatBackgroundFilenameTemp());
- setChatCssFilename(getChatCssFilenameTemp());
- setChatTemplateFilename(getChatTemplateFilenameTemp());
- setChatEnable(isChatEnableTemp());
-
- setHistoryMode(getHistoryModeTemp());
- setHistoryFlags(getHistoryFlagsTemp());
- setHistoryBackgroundFilename(getHistoryBackgroundFilenameTemp());
- setHistoryCssFilename(getHistoryCssFilenameTemp());
- setHistoryTemplateFilename(getHistoryTemplateFilenameTemp());
- setHistoryEnable(isHistoryEnableTemp());
}
/////////////////////////////////////////////////////////////////////////////////////////
void ProtocolSettings::setSRMMTemplateFilename(const char *filename)
{
- replaceStr(srmmTemplateFilename, filename);
+ srmmTemplateFilename = filename;
TemplateMap::loadTemplates(getSRMMTemplateFilename(), getSRMMTemplateFilename(), false);
}
void ProtocolSettings::setChatTemplateFilename(const char *filename)
{
- replaceStr(chatTemplateFilename, filename);
+ chatTemplateFilename = filename;
TemplateMap::loadTemplates(getChatTemplateFilename(), getChatTemplateFilename(), false);
}
void ProtocolSettings::setHistoryTemplateFilename(const char *filename)
{
- replaceStr(historyTemplateFilename, filename);
+ historyTemplateFilename = filename;
TemplateMap::loadTemplates(getHistoryTemplateFilename(), getHistoryTemplateFilename(), false);
}
@@ -1112,14 +1003,14 @@ void Options::init() /* TODO: move to buildProtocolList method */
int protoCount;
PROTOACCOUNT **pProtos;
- ProtocolSettings *lastProto = nullptr;
Proto_EnumAccounts(&protoCount, &pProtos);
+
for (int i = 0; i < protoCount + 1; i++) {
ProtocolSettings *proto;
char tmpPath[MAX_PATH];
char dbsName[256];
if (i == 0) {
- proto = new ProtocolSettings("_default_");
+ proto = new ProtocolSettings(nullptr);
proto->setSRMMEnable(true);
}
else if (mir_strcmp(pProtos[i - 1]->szModuleName, META_PROTO)) {
@@ -1131,13 +1022,17 @@ void Options::init() else continue;
/* SRMM settings */
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_ENABLE);
+ const char *szProto = proto->getProtocolName();
+ if (szProto == nullptr)
+ szProto = "_default_";
+
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_ENABLE);
proto->setSRMMEnable(i == 0 ? true : 0 != db_get_b(NULL, ieviewModuleName, dbsName, FALSE));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_MODE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_MODE);
proto->setSRMMMode(db_get_b(NULL, ieviewModuleName, dbsName, FALSE));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_FLAGS);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_FLAGS);
proto->setSRMMFlags(db_get_dw(NULL, ieviewModuleName, dbsName, 16128));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_BACKGROUND);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_BACKGROUND);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
if (strncmp(tmpPath, "http://", 7))
@@ -1146,7 +1041,7 @@ void Options::init() proto->setSRMMBackgroundFilename(tmpPath);
db_free(&dbv);
}
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_CSS);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_CSS);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
if (strncmp(tmpPath, "http://", 7))
@@ -1155,7 +1050,7 @@ void Options::init() proto->setSRMMCssFilename(tmpPath);
db_free(&dbv);
}
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_TEMPLATE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_TEMPLATE);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
PathToAbsolute(dbv.pszVal, tmpPath);
@@ -1164,13 +1059,13 @@ void Options::init() }
/* Group chat settings */
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_ENABLE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_ENABLE);
proto->setChatEnable(i == 0 ? true : 0 != db_get_b(NULL, ieviewModuleName, dbsName, FALSE));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_MODE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_MODE);
proto->setChatMode(db_get_b(NULL, ieviewModuleName, dbsName, FALSE));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_FLAGS);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_FLAGS);
proto->setChatFlags(db_get_dw(NULL, ieviewModuleName, dbsName, 16128));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_BACKGROUND);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_BACKGROUND);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
if (strncmp(tmpPath, "http://", 7))
@@ -1179,7 +1074,7 @@ void Options::init() proto->setChatBackgroundFilename(tmpPath);
db_free(&dbv);
}
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_CSS);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_CSS);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
if (strncmp(tmpPath, "http://", 7))
@@ -1188,7 +1083,7 @@ void Options::init() proto->setChatCssFilename(tmpPath);
db_free(&dbv);
}
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_TEMPLATE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_TEMPLATE);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
PathToAbsolute(dbv.pszVal, tmpPath);
@@ -1197,13 +1092,13 @@ void Options::init() }
/* History settings */
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_ENABLE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_ENABLE);
proto->setHistoryEnable(i == 0 ? true : 0 != db_get_b(NULL, ieviewModuleName, dbsName, FALSE));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_MODE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_MODE);
proto->setHistoryMode(db_get_b(NULL, ieviewModuleName, dbsName, FALSE));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_FLAGS);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_FLAGS);
proto->setHistoryFlags(db_get_dw(NULL, ieviewModuleName, dbsName, 16128));
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_BACKGROUND);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_BACKGROUND);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
if (strncmp(tmpPath, "http://", 7))
@@ -1212,7 +1107,7 @@ void Options::init() proto->setHistoryBackgroundFilename(tmpPath);
db_free(&dbv);
}
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_CSS);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_CSS);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
if (strncmp(tmpPath, "http://", 7))
@@ -1221,176 +1116,133 @@ void Options::init() proto->setHistoryCssFilename(tmpPath);
db_free(&dbv);
}
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_TEMPLATE);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_TEMPLATE);
if (!db_get_s(NULL, ieviewModuleName, dbsName, &dbv)) {
strncpy_s(tmpPath, dbv.pszVal, _TRUNCATE);
PathToAbsolute(dbv.pszVal, tmpPath);
proto->setHistoryTemplateFilename(tmpPath);
db_free(&dbv);
}
- proto->copyToTemp();
- if (lastProto != nullptr) {
- lastProto->setNext(proto);
- }
- else {
- protocolList = proto;
- }
- lastProto = proto;
+
+ arProtos.insert(proto);
}
- bSmileyAdd = 0 != ServiceExists(MS_SMILEYADD_BATCHPARSE);
- avatarServiceFlags = 0;
- if (ServiceExists(MS_AV_GETAVATARBITMAP))
- avatarServiceFlags = AVATARSERVICE_PRESENT;
+ bHasAvs = ServiceExists(MS_AV_GETAVATARBITMAP) != 0;
+ bHasSmileyAdd = ServiceExists(MS_SMILEYADD_BATCHPARSE) != 0;
}
void Options::uninit()
{
- ProtocolSettings *p, *p1;
- for (p = protocolList; p != nullptr; p = p1) {
- p1 = p->getNext();
- delete p;
- }
- TemplateMap::dropTemplates();
- if (hImageList != nullptr)
- ImageList_Destroy(hImageList);
- if (hProtocolImageList != nullptr)
- ImageList_Destroy(hProtocolImageList);
-}
-
-void Options::setGeneralFlags(int flags)
-{
- generalFlags = flags;
- db_set_dw(NULL, ieviewModuleName, DBS_BASICFLAGS, (DWORD)flags);
-}
+ arProtos.destroy();
-int Options::getGeneralFlags()
-{
- return generalFlags;
+ TemplateMap::dropTemplates();
}
-void Options::setEmbedsize(int size)
+void Options::setEmbedSize(int size)
{
db_set_dw(NULL, ieviewModuleName, "Embedsize", (DWORD)size);
}
-int Options::getEmbedsize()
+int Options::getEmbedSize()
{
return db_get_dw(NULL, ieviewModuleName, "Embedsize", 0);
}
-bool Options::isSmileyAdd()
-{
- return bSmileyAdd;
-}
-
-int Options::getAvatarServiceFlags()
+ProtocolSettings* Options::getDefaultSettings()
{
- return avatarServiceFlags;
-}
-
-ProtocolSettings* Options::getProtocolSettings()
-{
- return protocolList;
+ return &arProtos[0];
}
ProtocolSettings* Options::getProtocolSettings(const char *protocolName)
{
- for (ProtocolSettings *proto = protocolList; proto != nullptr; proto = proto->getNext())
- if (!strcmpi(proto->getProtocolName(), protocolName))
- return proto;
+ for (auto &it : arProtos)
+ if (!mir_strcmpi(it->getProtocolName(), protocolName))
+ return it;
return nullptr;
}
-void Options::resetProtocolSettings()
-{
- for (ProtocolSettings *proto = Options::getProtocolSettings(); proto != nullptr; proto = proto->getNext())
- proto->copyToTemp();
-}
-
void Options::saveProtocolSettings()
{
- ProtocolSettings *proto = Options::getProtocolSettings();
- for (int i = 0; proto != nullptr; proto = proto->getNext(), i++) {
- char dbsName[256];
- char tmpPath[MAX_PATH];
- proto->copyFromTemp();
+ for (auto &it : arTemp) {
+ const char *szProto = it->getProtocolName();
+ if (szProto == nullptr)
+ szProto = "_default_";
+
/* SRMM settings */
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_ENABLE);
- db_set_b(NULL, ieviewModuleName, dbsName, proto->isSRMMEnable());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_MODE);
- db_set_b(NULL, ieviewModuleName, dbsName, proto->getSRMMMode());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_FLAGS);
- db_set_dw(NULL, ieviewModuleName, dbsName, proto->getSRMMFlags());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_BACKGROUND);
- strncpy_s(tmpPath, proto->getSRMMBackgroundFilename(), _TRUNCATE);
- PathToRelative(proto->getSRMMBackgroundFilename(), tmpPath);
+ char dbsName[256], tmpPath[MAX_PATH];
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_ENABLE);
+ db_set_b(NULL, ieviewModuleName, dbsName, it->isSRMMEnable());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_MODE);
+ db_set_b(NULL, ieviewModuleName, dbsName, it->getSRMMMode());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_FLAGS);
+ db_set_dw(NULL, ieviewModuleName, dbsName, it->getSRMMFlags());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_BACKGROUND);
+ strncpy_s(tmpPath, it->getSRMMBackgroundFilename(), _TRUNCATE);
+ PathToRelative(it->getSRMMBackgroundFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_CSS);
- strncpy_s(tmpPath, proto->getSRMMCssFilename(), _TRUNCATE);
- PathToRelative(proto->getSRMMCssFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_CSS);
+ strncpy_s(tmpPath, it->getSRMMCssFilename(), _TRUNCATE);
+ PathToRelative(it->getSRMMCssFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_SRMM_TEMPLATE);
- strncpy_s(tmpPath, proto->getSRMMTemplateFilename(), _TRUNCATE);
- PathToRelative(proto->getSRMMTemplateFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_SRMM_TEMPLATE);
+ strncpy_s(tmpPath, it->getSRMMTemplateFilename(), _TRUNCATE);
+ PathToRelative(it->getSRMMTemplateFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
/* Group Chat settings */
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_ENABLE);
- db_set_b(NULL, ieviewModuleName, dbsName, proto->isChatEnable());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_MODE);
- db_set_b(NULL, ieviewModuleName, dbsName, proto->getChatMode());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_FLAGS);
- db_set_dw(NULL, ieviewModuleName, dbsName, proto->getChatFlags());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_BACKGROUND);
- strncpy_s(tmpPath, proto->getChatBackgroundFilename(), _TRUNCATE);
- PathToRelative(proto->getChatBackgroundFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_ENABLE);
+ db_set_b(NULL, ieviewModuleName, dbsName, it->isChatEnable());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_MODE);
+ db_set_b(NULL, ieviewModuleName, dbsName, it->getChatMode());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_FLAGS);
+ db_set_dw(NULL, ieviewModuleName, dbsName, it->getChatFlags());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_BACKGROUND);
+ strncpy_s(tmpPath, it->getChatBackgroundFilename(), _TRUNCATE);
+ PathToRelative(it->getChatBackgroundFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_CSS);
- strncpy_s(tmpPath, proto->getChatCssFilename(), _TRUNCATE);
- PathToRelative(proto->getChatCssFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_CSS);
+ strncpy_s(tmpPath, it->getChatCssFilename(), _TRUNCATE);
+ PathToRelative(it->getChatCssFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_CHAT_TEMPLATE);
- strncpy_s(tmpPath, proto->getChatTemplateFilename(), _TRUNCATE);
- PathToRelative(proto->getChatTemplateFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_CHAT_TEMPLATE);
+ strncpy_s(tmpPath, it->getChatTemplateFilename(), _TRUNCATE);
+ PathToRelative(it->getChatTemplateFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
/* History settings */
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_ENABLE);
- db_set_b(NULL, ieviewModuleName, dbsName, proto->isHistoryEnable());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_MODE);
- db_set_b(NULL, ieviewModuleName, dbsName, proto->getHistoryMode());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_FLAGS);
- db_set_dw(NULL, ieviewModuleName, dbsName, proto->getHistoryFlags());
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_BACKGROUND);
- strncpy_s(tmpPath, proto->getHistoryBackgroundFilename(), _TRUNCATE);
- PathToRelative(proto->getHistoryBackgroundFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_ENABLE);
+ db_set_b(NULL, ieviewModuleName, dbsName, it->isHistoryEnable());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_MODE);
+ db_set_b(NULL, ieviewModuleName, dbsName, it->getHistoryMode());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_FLAGS);
+ db_set_dw(NULL, ieviewModuleName, dbsName, it->getHistoryFlags());
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_BACKGROUND);
+ strncpy_s(tmpPath, it->getHistoryBackgroundFilename(), _TRUNCATE);
+ PathToRelative(it->getHistoryBackgroundFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_CSS);
- strncpy_s(tmpPath, proto->getHistoryCssFilename(), _TRUNCATE);
- PathToRelative(proto->getHistoryCssFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_CSS);
+ strncpy_s(tmpPath, it->getHistoryCssFilename(), _TRUNCATE);
+ PathToRelative(it->getHistoryCssFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
- mir_snprintf(dbsName, "%s.%s", proto->getProtocolName(), DBS_HISTORY_TEMPLATE);
- strncpy_s(tmpPath, proto->getHistoryTemplateFilename(), _TRUNCATE);
- PathToRelative(proto->getHistoryTemplateFilename(), tmpPath);
+ mir_snprintf(dbsName, "%s.%s", szProto, DBS_HISTORY_TEMPLATE);
+ strncpy_s(tmpPath, it->getHistoryTemplateFilename(), _TRUNCATE);
+ PathToRelative(it->getHistoryTemplateFilename(), tmpPath);
db_set_s(NULL, ieviewModuleName, dbsName, tmpPath);
}
+
+ reload();
}
-void Options::Reload()
+void Options::reload()
{
- ProtocolSettings *p, *p1;
- for (p = Options::protocolList; p != nullptr; p = p1) {
- p1 = p->getNext();
- delete p;
- }
+ arProtos.destroy();
isInited = false;
init();
}
|