summaryrefslogtreecommitdiff
path: root/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'options.cpp')
-rw-r--r--options.cpp134
1 files changed, 125 insertions, 9 deletions
diff --git a/options.cpp b/options.cpp
index f6c1d4b..db8c05b 100644
--- a/options.cpp
+++ b/options.cpp
@@ -85,21 +85,40 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam,
TCHAR *buf = NULL;
mir_snprintf(setting, 31, "szSourceWord%d", i);
buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
- while(_tcslen(buf) > 0)
+ if(!_tcslen(buf))
{
item.mask = LVIF_TEXT;
item.iSubItem = 0;
- item.pszText = buf;
- iRow = ListView_InsertItem(hwndList1, &item);
- ListView_SetItemText(hwndList1, iRow, 0, buf);
- mir_free(buf);
+ item.iItem = i;
+ item.pszText = _T("<Click here for add word>");
+ ListView_InsertItem(hwndList1, &item);
+ ListView_SetItemText(hwndList1, iRow, 0, _T("<Click here for add word>"));
ZeroMemory(&item,sizeof(item));
ListView_SetColumnWidth(hwndList1, 0, LVSCW_AUTOSIZE);
- i++;
- mir_snprintf(setting, 31, "szSourceWord%d", i);
- buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
+ mir_free(buf);
+ }
+ else
+ {
+ while(_tcslen(buf) > 0)
+ {
+ item.mask = LVIF_TEXT;
+ item.iSubItem = 0;
+ item.pszText = buf;
+ item.iItem = i;
+ iRow = ListView_InsertItem(hwndList1, &item);
+ ListView_SetItemText(hwndList1, iRow, 0, buf);
+ mir_free(buf);
+ ZeroMemory(&item,sizeof(item));
+ ListView_SetColumnWidth(hwndList1, 0, LVSCW_AUTOSIZE);
+ i++;
+ mir_snprintf(setting, 31, "szSourceWord%d", i);
+ buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
+ }
+ mir_free(buf);
}
- mir_free(buf);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_ADD), 0);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHANGE), 0);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE), 0);
delete [] setting;
return TRUE;
}
@@ -137,6 +156,43 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam,
{
if(hwnd_list_p == hwndList1)
{
+ TCHAR *buf;
+ char setting[32];
+ int i = 0;
+ mir_snprintf(setting, 31, "szSourceWord%d", i);
+ buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
+ while(_tcslen(buf) > 0)
+ {
+ mir_free(buf);
+ i++;
+ mir_snprintf(setting, 31, "szSourceWord%d", i);
+ buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
+ }
+ mir_free(buf);
+ i--;
+ mir_snprintf(setting, 31, "szSourceWord%d", i);
+ if(!item_num && !i)
+ {
+ DBDeleteContactSetting(NULL, szReplacerModuleName, setting);
+ ListView_SetItemText(hwnd_list_p, item_num, 0, _T("<Click here for add word>"));
+ ListView_SetColumnWidth(hwndList1, 0, LVSCW_AUTOSIZE);
+ }
+ else if(i == item_num)
+ {
+ DBDeleteContactSetting(NULL, szReplacerModuleName, setting);
+ ListView_DeleteItem(hwnd_list_p, i);
+ }
+ else
+ {
+ buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
+ DBDeleteContactSetting(NULL, szReplacerModuleName, setting);
+ mir_snprintf(setting, 31, "szSourceWord%d", item_num);
+ DBWriteContactSettingTString(NULL, szReplacerModuleName, setting, buf);
+ ListView_SetItemText(hwnd_list_p, item_num, 0, buf);
+ ListView_SetColumnWidth(hwndList1, 0, LVSCW_AUTOSIZE);
+ ListView_DeleteItem(hwnd_list_p, i);
+ mir_free(buf);
+ }
}
else if(hwnd_list_p == hwndList2)
{
@@ -156,6 +212,9 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam,
{
if(hdr->hdr.code == NM_CLICK)
{
+ EnableWindow(GetDlgItem(hwndDlg, IDC_ADD), 1);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHANGE), 1);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE), 1);
hwnd_list_p = hdr->hdr.hwndFrom;
item_num = hdr->iItem;
bTargetWord = (hwnd_list_p==hwndList2)?true:false;
@@ -249,6 +308,63 @@ static BOOL CALLBACK DlgProcWordEditDialog(HWND hwndDlg, UINT msg, WPARAM wParam
switch (LOWORD(wParam))
{
case IDC_OK:
+ {
+ if(bEdit)
+ {
+ TCHAR str[512];
+ GetDlgItemText(hwndDlg, IDC_EDIT_WORD, str, 511);
+ if(bTargetWord)
+ ;
+ else
+ {
+ char setting[32];
+ mir_snprintf(setting, 31, "szSourceWord%d", item_num);
+ DBWriteContactSettingTString(NULL, szReplacerModuleName, setting, str);
+ ListView_SetItemText(hwnd_list_p, item_num, 0, str);
+ ListView_SetColumnWidth(hwnd_list_p, 0, LVSCW_AUTOSIZE);
+ }
+ }
+ else
+ {
+ TCHAR str[512];
+ TCHAR *buf;
+ GetDlgItemText(hwndDlg, IDC_EDIT_WORD, str, 511);
+ if(bTargetWord)
+ ;
+ else
+ {
+ char setting[32];
+ setting[0] = '\0';
+ int i = 0;
+ mir_snprintf(setting, 31, "szSourceWord%d", i);
+ buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
+ while(_tcslen(buf) > 0)
+ {
+ mir_free(buf);
+ i++;
+ mir_snprintf(setting, 31, "szSourceWord%d", i);
+ buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T(""));
+ }
+ mir_free(buf);
+ DBWriteContactSettingTString(NULL, szReplacerModuleName, setting, str);
+ if(!i)
+ {
+ ListView_SetItemText(hwnd_list_p, i, 0, str);
+ }
+ else
+ {
+ LVITEM item = {0};
+ item.mask = LVIF_TEXT;
+ item.iSubItem = 0;
+ item.iItem = i;
+ item.pszText = str;
+ ListView_InsertItem(hwnd_list_p, &item);
+ }
+ ListView_SetColumnWidth(hwnd_list_p, 0, LVSCW_AUTOSIZE);
+ }
+ mir_free(str);
+ }
+ }
DestroyWindow(hwndDlg);
break;
case IDC_CANCEL: