diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-09-26 19:56:07 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-09-26 19:56:07 +0300 |
commit | fa9565edd129e41bc45e5e7012a15de1456448eb (patch) | |
tree | c651c4f4ffb7492bd21feee824cf827cbd7044ba | |
parent | 6f58ba8e39b54dfb0214f97caac2fa1ea9ba43ce (diff) |
ui coding
-rw-r--r-- | options.cpp | 142 |
1 files changed, 113 insertions, 29 deletions
diff --git a/options.cpp b/options.cpp index db8c05b..2c8f774 100644 --- a/options.cpp +++ b/options.cpp @@ -53,7 +53,7 @@ int ReplacerOptInit(WPARAM wParam,LPARAM lParam) } HWND hwnd_list_p = NULL; -int item_num = 0; +int item_num_1 = 0, item_num_2 = 0; bool bTargetWord = false; bool bEdit = false; @@ -132,24 +132,24 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, { bEdit = false; ShowWordEditDialog(); - if(hwnd_list_p == hwndList1) +/* if(hwnd_list_p == hwndList1) { } else if(hwnd_list_p == hwndList2) { - } + } */ } break; case IDC_CHANGE: { bEdit = true; ShowWordEditDialog(); - if(hwnd_list_p == hwndList1) +/* if(hwnd_list_p == hwndList1) { } else if(hwnd_list_p == hwndList2) { - } + } */ } break; case IDC_DELETE: @@ -171,13 +171,13 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, mir_free(buf); i--; mir_snprintf(setting, 31, "szSourceWord%d", i); - if(!item_num && !i) + if(!item_num_1 && !i) { DBDeleteContactSetting(NULL, szReplacerModuleName, setting); - ListView_SetItemText(hwnd_list_p, item_num, 0, _T("<Click here for add word>")); + ListView_SetItemText(hwnd_list_p, item_num_1, 0, _T("<Click here for add word>")); ListView_SetColumnWidth(hwndList1, 0, LVSCW_AUTOSIZE); } - else if(i == item_num) + else if(i == item_num_1) { DBDeleteContactSetting(NULL, szReplacerModuleName, setting); ListView_DeleteItem(hwnd_list_p, i); @@ -186,9 +186,9 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, { buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T("")); DBDeleteContactSetting(NULL, szReplacerModuleName, setting); - mir_snprintf(setting, 31, "szSourceWord%d", item_num); + mir_snprintf(setting, 31, "szSourceWord%d", item_num_1); DBWriteContactSettingTString(NULL, szReplacerModuleName, setting, buf); - ListView_SetItemText(hwnd_list_p, item_num, 0, buf); + ListView_SetItemText(hwnd_list_p, item_num_1, 0, buf); ListView_SetColumnWidth(hwndList1, 0, LVSCW_AUTOSIZE); ListView_DeleteItem(hwnd_list_p, i); mir_free(buf); @@ -196,6 +196,18 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, } else if(hwnd_list_p == hwndList2) { + char setting[32]; + setting[0] = '\0'; + mir_snprintf(setting, 31, "szTargetWords%d", item_num_1); + TCHAR *buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T("")); + wstring data = buf; + mir_free(buf); + TCHAR tmp[128]; + ListView_GetItemText(hwnd_list_p, item_num_2, 0,tmp, 127); + wstring::size_type p1 = data.find(tmp); + data.erase(p1, (wstring::size_type)_tcslen(tmp)+1); + DBWriteContactSettingTString(NULL, szReplacerModuleName, setting, data.c_str()); + ListView_DeleteItem(hwnd_list_p, item_num_2); } } break; @@ -216,23 +228,24 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, 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; int iRow = 0; if(hdr->hdr.hwndFrom == hwndList1) { + item_num_1 = hdr->iItem; ListView_DeleteAllItems(hwndList2); char *setting = new char [32]; TCHAR *buf = NULL; - mir_snprintf(setting, 31, "szTargetWords%d", hdr->iItem); + mir_snprintf(setting, 31, "szTargetWords%d", item_num_1); buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T("")); wstring str = buf; mir_free(buf); wstring::size_type p1 = 0, p2 = 0, end = 0; - p1 = str.find(_T("\n")); //nice delimiter + p1 = str.find(_T("†")); //nice delimiter + int i = 0; for(;;) { - if(p1 = wstring::npos) + if(p1 == wstring::npos) { if(end == 0) { @@ -246,23 +259,49 @@ static BOOL CALLBACK DlgProcReplacerOpts(HWND hwndDlg, UINT msg, WPARAM wParam, } break; } - p2 = str.find(_T("\n"), p1); - if(p2 < end || p2 == p1) - break; - end = p2; - item.mask = LVIF_TEXT; - item.iSubItem = 0; - item.pszText = (TCHAR*)str.substr(p1, p2-p1).c_str(); - iRow = ListView_InsertItem(hwndList2, &item); - ListView_SetItemText(hwndList2, iRow, 0, (TCHAR*)str.substr(p1, p2-p1).c_str()); - ZeroMemory(&item,sizeof(item)); - ListView_SetColumnWidth(hwndList2, 0, LVSCW_AUTOSIZE); + if(!i) + { + item.mask = LVIF_TEXT; + item.iSubItem = 0; + item.iItem = i; + TCHAR *tmp = mir_wstrdup(str.substr(0, p1).c_str()); + item.pszText = tmp; + iRow = ListView_InsertItem(hwndList2, &item); + ListView_SetItemText(hwndList2, iRow, 0, tmp); + mir_free(tmp); + p2 = end = p1; + } + else + { + p2 = str.find(_T("†"), p1+1); + if(p2 < end || p2 == p1) + break; + else if(p2 == wstring::npos) + break; + p1++; + end = p2; + item.mask = LVIF_TEXT; + item.iSubItem = 0; + item.iItem = i; + TCHAR *tmp = mir_wstrdup(str.substr(p1, p2-p1).c_str()); + item.pszText = tmp; + iRow = ListView_InsertItem(hwndList2, &item); + ListView_SetItemText(hwndList2, iRow, 0, tmp); + ZeroMemory(&item,sizeof(item)); + ListView_SetColumnWidth(hwndList2, 0, LVSCW_AUTOSIZE); + mir_free(tmp); + } p1 = p2; + i++; } mir_free(buf); } if(hdr->hdr.hwndFrom == hwndList2) { + EnableWindow(GetDlgItem(hwndDlg, IDC_ADD), 1); + EnableWindow(GetDlgItem(hwndDlg, IDC_CHANGE), 1); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE), 1); + item_num_2 = hdr->iItem; } } } @@ -293,7 +332,7 @@ static BOOL CALLBACK DlgProcWordEditDialog(HWND hwndDlg, UINT msg, WPARAM wParam { SetWindowText(hwndDlg, bTargetWord?_T("Edit target word or phrase"):_T("Edit source word or phrase")); TCHAR word[512]; - ListView_GetItemText(hwnd_list_p, item_num, 0, word, 511); + ListView_GetItemText(hwnd_list_p, bTargetWord?item_num_2:item_num_1, 0, word, 511); SetWindowText(GetDlgItem(hwndDlg, IDC_EDIT_WORD), word); } else @@ -318,9 +357,9 @@ static BOOL CALLBACK DlgProcWordEditDialog(HWND hwndDlg, UINT msg, WPARAM wParam else { char setting[32]; - mir_snprintf(setting, 31, "szSourceWord%d", item_num); + mir_snprintf(setting, 31, "szSourceWord%d", item_num_1); DBWriteContactSettingTString(NULL, szReplacerModuleName, setting, str); - ListView_SetItemText(hwnd_list_p, item_num, 0, str); + ListView_SetItemText(hwnd_list_p, item_num_1, 0, str); ListView_SetColumnWidth(hwnd_list_p, 0, LVSCW_AUTOSIZE); } } @@ -330,7 +369,52 @@ static BOOL CALLBACK DlgProcWordEditDialog(HWND hwndDlg, UINT msg, WPARAM wParam TCHAR *buf; GetDlgItemText(hwndDlg, IDC_EDIT_WORD, str, 511); if(bTargetWord) - ; + { + char setting[32]; + setting[0] = '\0'; + mir_snprintf(setting, 31, "szTargetWords%d", item_num_1); + buf = UniGetContactSettingUtf(NULL, szReplacerModuleName, setting, _T("")); + wstring data = buf; + mir_free(buf); + wstring::size_type p1 = 0, p2 = 0, end = 0; + p1 = data.find(_T("†")); //nice delimiter + int i = 0; + for(;;) + { + if(p1 == wstring::npos) + break; + if(!i) + p2 = end = p1; + else + { + p2 = data.find(_T("†"), p1+1); + if(p2 < end || p2 == p1) + break; + else if(p2 == wstring::npos) + break; + p1++; + end = p2; + } + p1 = p2; + i++; + } + mir_free(buf); + data.append(str).append(_T("†")); + DBWriteContactSettingTString(NULL, szReplacerModuleName, setting, data.c_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); + } + } else { char setting[32]; |