From 89c5b2369413025e1fe7dfe5c5d0bf3bedd8558d Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Mon, 23 Jul 2012 13:52:57 +0000 Subject: git-svn-id: http://svn.miranda-ng.org/main/trunk@1123 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Tlen/tlen_czaty/ManagerWindow.cpp | 1067 --------------------------- 1 file changed, 1067 deletions(-) delete mode 100644 protocols/Tlen/tlen_czaty/ManagerWindow.cpp (limited to 'protocols/Tlen/tlen_czaty/ManagerWindow.cpp') diff --git a/protocols/Tlen/tlen_czaty/ManagerWindow.cpp b/protocols/Tlen/tlen_czaty/ManagerWindow.cpp deleted file mode 100644 index a01caebc15..0000000000 --- a/protocols/Tlen/tlen_czaty/ManagerWindow.cpp +++ /dev/null @@ -1,1067 +0,0 @@ -/* - -MUCC Group Chat GUI Plugin for Miranda IM -Copyright (C) 2004 Piotr Piastucki - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ -#include "ManagerWindow.h" -#include "Utils.h" -#include "HelperDialog.h" - -static INT_PTR CALLBACK ManagerDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -static INT_PTR CALLBACK ChatRoomsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -static INT_PTR CALLBACK MyRoomsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - -ManagerWindow * ManagerWindow::list = NULL; -bool ManagerWindow::released = false; -CRITICAL_SECTION ManagerWindow::mutex; - -void ManagerWindow::init() { - released = false; - InitializeCriticalSection(&mutex); -} - -void ManagerWindow::release() { - released = true; - for (ManagerWindow *ptr2, *ptr = list; ptr!=NULL; ptr=ptr2) { - ptr2 = ptr->getNext(); - delete ptr; -// SendMessage(ptr->getHWND(), WM_CLOSE, 0, 0); - } - DeleteCriticalSection(&mutex); -} - -ManagerWindow::ManagerWindow(const char *module) -{ - next = prev = NULL; - groups = NULL; - rooms = NULL; - myRooms = NULL; - currentGroup = NULL; - isStarted = 0; - currentTab = 0; - currentRoomsPage = 0; - lastRoomsPage = 0; - userNickList = userRoomList = 0; - this->module = NULL; - this->moduleName = NULL; - Utils::copyString(&this->module, module); - hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); - EnterCriticalSection(&mutex); - setNext(list); - if (next!=NULL) { - next->setPrev(this); - } - list = this; - LeaveCriticalSection(&mutex); -} - -ManagerWindow::~ManagerWindow() -{ - if (!released) { - EnterCriticalSection(&mutex); - if (getPrev()!=NULL) { - getPrev()->setNext(next); - } else { - list = getNext(); - } - if (getNext()!=NULL) { - getNext()->setPrev(prev); - } - LeaveCriticalSection(&mutex); - } - if (hWnd!=NULL) { - EndDialog(hWnd, 0); - } - if (hEvent!=NULL) { - CloseHandle(hEvent); - } - while (groups!=NULL) { - ChatGroup *group = groups; - groups = groups->getListNext(); - delete group; - } - while (rooms!=NULL) { - ChatRoom *room = rooms; - rooms = rooms->getNext(); - delete room; - } - while (myRooms!=NULL) { - ChatRoom *room = myRooms; - myRooms = myRooms->getNext(); - delete room; - } - if (module!=NULL) { - delete module; - } - if (moduleName!=NULL) { - delete moduleName; - } -} -void ManagerWindow::setPrev(ManagerWindow *prev) -{ - this->prev = prev; -} -ManagerWindow * ManagerWindow::getPrev() -{ - return prev; -} -void ManagerWindow::setNext(ManagerWindow *next) -{ - this->next = next; -} -ManagerWindow * ManagerWindow::getNext() -{ - return next; -} -void ManagerWindow::setHWND(HWND h) -{ - hWnd=h; -} -HWND ManagerWindow::getHWND() -{ - return hWnd; -} -void ManagerWindow::setChatRoomsTabHWND(HWND h) -{ - hChatRoomsTabWnd=h; -} -HWND ManagerWindow::getChatRoomsTabHWND() -{ - return hChatRoomsTabWnd; -} -void ManagerWindow::setMyRoomsTabHWND(HWND h) -{ - hMyRoomsTabWnd=h; -} -HWND ManagerWindow::getMyRoomsTabHWND() -{ - return hMyRoomsTabWnd; -} -void ManagerWindow::setMyNicksTabHWND(HWND h) -{ - hMyNicksTabWnd=h; -} -HWND ManagerWindow::getMyNicksTabHWND() -{ - return hMyNicksTabWnd; -} -const char *ManagerWindow::getModule() -{ - return module; -} -const char *ManagerWindow::getModuleName() -{ - return moduleName; -} -void ManagerWindow::setModuleName(const char *moduleName) -{ - Utils::copyString(&this->moduleName, moduleName); -} -ChatGroup *ManagerWindow::getCurrentGroup() -{ - return currentGroup; -} -void ManagerWindow::setCurrentGroup(ChatGroup *group) -{ - currentGroup = group; -} -HANDLE ManagerWindow::getEvent() -{ - return hEvent; -} -int ManagerWindow::getCurrentTab() -{ - return currentTab; -} -void ManagerWindow::setCurrentRoomsPage(int currentRoomsPage) -{ - this->currentRoomsPage = currentRoomsPage; -} -int ManagerWindow::getCurrentRoomsPage() -{ - return currentRoomsPage; -} -void ManagerWindow::setCurrentTab(int currentTab) -{ - this->currentTab = currentTab; -} -void ManagerWindow::setLastRoomsPage(int lastRoomsPage) -{ - this->lastRoomsPage = lastRoomsPage; -} -int ManagerWindow::isLastRoomsPage() -{ - return lastRoomsPage; -} -int ManagerWindow::isUserNickListReceived() -{ - return userNickList; -} -int ManagerWindow::isUserRoomListReceived() -{ - return userRoomList; -} -static void __cdecl StartThread(void *vManager) -{ - OleInitialize(NULL); - DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_CHATMANAGER), NULL, ManagerDlgProc, (LPARAM) vManager); - OleUninitialize(); -} -int ManagerWindow::start() -{ - if (isStarted) { - ShowWindow(hWnd, SW_SHOW); - return 0; - } - isStarted = 1; - Utils::forkThread((void (__cdecl *)(void *))StartThread, 0, (void *) this); - WaitForSingleObject(hEvent, INFINITE); - return 0; -} -void ManagerWindow::queryResultGroups(MUCCQUERYRESULT *queryResult) -{ - TVINSERTSTRUCT tvis; - ChatGroup * par = NULL; - ChatGroup * group; - if (queryResult->pszParent != NULL) { - par = findGroup(queryResult->pszParent); - if (par!=NULL) { - if (par->getChild()!=NULL) return; - } - } - for (int i=0; iiItemsNum; i++) { - group = new ChatGroup(); - group->setId(queryResult->pItems[i].pszID); - group->setName(queryResult->pItems[i].pszName); - if (par!=NULL) { - par->addChild(group); - //group->setParent(par); - tvis.hParent = par->getTreeItem(); - } else { - tvis.hParent = NULL; - } - tvis.hInsertAfter = TVI_SORT; - tvis.item.mask = TVIF_TEXT | TVIF_CHILDREN | TVIF_PARAM; - LPTSTR lps1 = Utils::mucc_mir_a2t(queryResult->pItems[i].pszName); - tvis.item.pszText = lps1; - tvis.item.cChildren = queryResult->pItems[i].iCount; - tvis.item.lParam = (LPARAM) group; - group->setTreeItem(TreeView_InsertItem(GetDlgItem(hWnd, IDC_GROUP), &tvis)); - group->setListNext(groups); - groups = group; - if (par != NULL) { - TreeView_Expand(GetDlgItem(hWnd, IDC_GROUP), par->getTreeItem(), TVE_EXPAND); - } - Utils::mucc_mir_free(lps1); - } -} - -void ManagerWindow::queryResultRooms(MUCCQUERYRESULT *queryResult) -{ - ChatRoom *room; - while (rooms!=NULL) { - room = rooms; - rooms = rooms->getNext(); - delete room; - } - TCHAR str[100]; - if (getCurrentGroup()==NULL || strcmp(getCurrentGroup()->getId(), queryResult->pszParent) || queryResult->iPage!=getCurrentRoomsPage()) return; - setLastRoomsPage(queryResult->iLastPage); - if (queryResult->iLastPage) { - EnableWindow(GetDlgItem(getChatRoomsTabHWND(), IDC_NEXT), FALSE); - } else { - EnableWindow(GetDlgItem(getChatRoomsTabHWND(), IDC_NEXT), TRUE); - } - if (queryResult->iPage>0) { - EnableWindow(GetDlgItem(getChatRoomsTabHWND(), IDC_PREV), TRUE); - } else { - EnableWindow(GetDlgItem(getChatRoomsTabHWND(), IDC_PREV), FALSE); - } - for (int i=0; iiItemsNum; i++) { - LVITEM lvItem; - room = new ChatRoom(); - room->setId(queryResult->pItems[i].pszID); - room->setName(queryResult->pItems[i].pszName); - room->setFlags(queryResult->pItems[i].dwFlags); - room->setNext(rooms); - rooms=room; - lvItem.mask = LVIF_TEXT | LVIF_PARAM; - lvItem.iSubItem = 0; - lvItem.iItem = ListView_GetItemCount(GetDlgItem(getChatRoomsTabHWND(), IDC_ROOM)); - LPTSTR lps1 = Utils::mucc_mir_a2t(queryResult->pItems[i].pszName); - lvItem.pszText = lps1; - lvItem.lParam = (LPARAM) room; - ListView_InsertItem(GetDlgItem(getChatRoomsTabHWND(), IDC_ROOM), &lvItem); - lvItem.iSubItem = 1; - ListView_InsertItem(GetDlgItem(getChatRoomsTabHWND(), IDC_ROOM), &lvItem); - _stprintf(str, _TEXT("%d"), queryResult->pItems[i].iCount); - ListView_SetItemText(GetDlgItem(getChatRoomsTabHWND(), IDC_ROOM), lvItem.iItem, 1, str); - Utils::mucc_mir_free(lps1); - } -} - -void ManagerWindow::queryResultUserRooms(MUCCQUERYRESULT *queryResult) -{ - ChatRoom *room; - ListView_DeleteAllItems(GetDlgItem(getMyRoomsTabHWND(), IDC_LIST)); - while (myRooms!=NULL) { - room = myRooms; - myRooms = myRooms->getNext(); - delete room; - } - for (int i=0; iiItemsNum; i++) { - LVITEM lvItem; - room = new ChatRoom(); - room->setId(queryResult->pItems[i].pszID); - room->setName(queryResult->pItems[i].pszName); - room->setNext(myRooms); - myRooms=room; - lvItem.mask = LVIF_TEXT | LVIF_PARAM; - lvItem.iSubItem = 0; - lvItem.iItem = ListView_GetItemCount(GetDlgItem(getMyRoomsTabHWND(), IDC_LIST)); - LPTSTR lps1 = Utils::mucc_mir_a2t(queryResult->pItems[i].pszName); - lvItem.pszText = lps1; - lvItem.lParam = (LPARAM) room; - ListView_InsertItem(GetDlgItem(getMyRoomsTabHWND(), IDC_LIST), &lvItem); - Utils::mucc_mir_free(lps1); - } - userRoomList = 1; -} - -void ManagerWindow::queryResultUserNick(MUCCQUERYRESULT *queryResult) -{ - ListView_DeleteAllItems(GetDlgItem(getMyNicksTabHWND(), IDC_LIST)); - for (int i=0; iiItemsNum; i++) { - LVITEM lvItem; - lvItem.mask = LVIF_TEXT; - lvItem.iSubItem = 0; - lvItem.iItem = ListView_GetItemCount(GetDlgItem(getMyNicksTabHWND(), IDC_LIST)); - LPTSTR lps1 = Utils::mucc_mir_a2t(queryResult->pItems[i].pszName); - lvItem.pszText = lps1; - ListView_InsertItem(GetDlgItem(getMyNicksTabHWND(), IDC_LIST), &lvItem); - Utils::mucc_mir_free(lps1); - } - userNickList = 1; -} - -ChatGroup *ManagerWindow::findGroup(const char *id) -{ - ChatGroup *group; - for (group = groups;group!=NULL;group=group->getListNext()) { - if (!strcmp(group->getId(), id)) break; - } - return group; -} - - -static INT_PTR CALLBACK ChatRoomsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND lv; - LVCOLUMN lvCol; - ManagerWindow *manager; - manager = (ManagerWindow *) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - switch (msg) { - case WM_INITDIALOG: - manager = (ManagerWindow *)lParam; - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) manager); - TranslateDialogDefault(hwndDlg); - manager->setChatRoomsTabHWND(hwndDlg); - SendDlgItemMessage(hwndDlg, IDC_PREV, BUTTONSETASFLATBTN, 0, 0); - SendDlgItemMessage(hwndDlg, IDC_NEXT, BUTTONSETASFLATBTN, 0, 0); - SendDlgItemMessage(hwndDlg, IDC_SEARCH, BUTTONSETASFLATBTN, 0, 0); - SendDlgItemMessage(hwndDlg, IDC_PREV, BM_SETIMAGE, IMAGE_ICON, (LPARAM) muccIcon[MUCC_IDI_PREV]); - SendDlgItemMessage(hwndDlg, IDC_NEXT, BM_SETIMAGE, IMAGE_ICON, (LPARAM) muccIcon[MUCC_IDI_NEXT]); - SendDlgItemMessage(hwndDlg, IDC_SEARCH, BM_SETIMAGE, IMAGE_ICON, (LPARAM) muccIcon[MUCC_IDI_SEARCH]); - - lv = GetDlgItem(hwndDlg, IDC_ROOM); - ListView_SetExtendedListViewStyle(lv, LVS_EX_FULLROWSELECT); - lvCol.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; - lvCol.pszText = TranslateT("Name"); - lvCol.cx = 270; - lvCol.iSubItem = 0; - ListView_InsertColumn(lv, 0, &lvCol); - lvCol.pszText = TranslateT("Persons"); - lvCol.cx = 50; - lvCol.iSubItem = 1; - ListView_InsertColumn(lv, 1, &lvCol); - lvCol.pszText = _TEXT("");//Translate(""); - lvCol.cx = 46; - lvCol.iSubItem = 2; - ListView_InsertColumn(lv, 2, &lvCol); - return TRUE; - case WM_NOTIFY: - switch (wParam) { - case IDC_ROOM: - switch (((LPNMHDR)lParam)->code) { - case LVN_COLUMNCLICK: - { - LPNMLISTVIEW pnmlv = (LPNMLISTVIEW) lParam; - if (pnmlv->iSubItem>=0 && pnmlv->iSubItem<=1) { - // if (pnmlv->iSubItem == sortColumn) - // sortAscending = !sortAscending; - // else { - // sortAscending = TRUE; - // sortColumn = pnmlv->iSubItem; - // } - // ListView_SortItems(GetDlgItem(hwndDlg, IDC_ROOM), GroupchatCompare, sortColumn); - } - } - break; - case NM_DBLCLK: - { - LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) lParam; - LVITEM item; - item.iItem = lpnmitem->iItem; - item.iSubItem = 0; - item.mask = LVIF_PARAM; - if (ListView_GetItem(GetDlgItem(hwndDlg, IDC_ROOM), &item)) { - MUCCEVENT event; - ChatRoom *room = (ChatRoom *)item.lParam; - Utils::log("entering room %s ", room->getId()); - event.cbSize = sizeof(MUCCEVENT); - event.iType = MUCC_EVENT_JOIN; - event.pszModule = manager->getModule(); - event.pszID = room->getId(); - event.pszName = room->getName(); - event.dwFlags = room->getFlags(); - event.pszNick = NULL; - HelperDialog::joinDlg(&event); - } - } - break; - } - break; - } - break; - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDC_NEXT: - if (!manager->isLastRoomsPage()) { - EnableWindow(GetDlgItem(hwndDlg, IDC_PREV), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_NEXT), FALSE); - manager->setCurrentRoomsPage(manager->getCurrentRoomsPage()+1); - SendMessage(GetParent(hwndDlg), WM_MUCC_REFRESH_ROOMS, 0, 0); - } - break; - case IDC_PREV: - if (manager->getCurrentRoomsPage()>0) { - EnableWindow(GetDlgItem(hwndDlg, IDC_PREV), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_NEXT), FALSE); - manager->setCurrentRoomsPage(manager->getCurrentRoomsPage()-1); - } - SendMessage(GetParent(hwndDlg), WM_MUCC_REFRESH_ROOMS, 0, 0); - break; - case IDC_SEARCH: - { - MUCCEVENT event; - event.cbSize = sizeof(MUCCEVENT); - event.iType = MUCC_EVENT_JOIN; - event.dwFlags = MUCC_EF_ROOM_NAME; - event.pszModule = manager->getModule(); - event.pszID = NULL; - event.pszName = NULL; - event.pszNick = NULL; - HelperDialog::joinDlg(&event); - break; - } - } - break; - case WM_MEASUREITEM: - if (wParam == IDC_ROOM) { - MEASUREITEMSTRUCT *lpMis = (MEASUREITEMSTRUCT *) lParam; - lpMis->itemHeight = GetSystemMetrics(SM_CYSMICON); - return TRUE; - } - break; - case WM_DRAWITEM: - if (wParam == IDC_ROOM) { - RECT rc; - int w, x, col; - DRAWITEMSTRUCT *lpDis = (DRAWITEMSTRUCT *) lParam; - ChatRoom *room = NULL; -// if (ListView_GetItem(GetDlgItem(hwndDlg, IDC_ROOM), &item)) { - room = (ChatRoom *)lpDis->itemData;// (ChatRoom *)item.lParam; -// } - TCHAR text[256]; - switch (lpDis->itemAction) { - default: - case ODA_SELECT: - case ODA_DRAWENTIRE: - if (lpDis->itemState & ODS_SELECTED) { - HBRUSH hBrush = CreateSolidBrush(RGB(0xC2, 0xC8, 0xDA));//0xDAC8C2); - FillRect(lpDis->hDC, &(lpDis->rcItem), hBrush);//(HBRUSH) (COLOR_HIGHLIGHT+1)); - DeleteObject(hBrush); - SetTextColor(lpDis->hDC, 0); - SetBkMode(lpDis->hDC, TRANSPARENT); - } - else { -// HBRUSH hBrush = CreateSolidBrush(RGB(0xC2, 0xC8, 0xDA));//0xDAC8C2); - FillRect(lpDis->hDC, &(lpDis->rcItem), (HBRUSH) (COLOR_WINDOW+1)); -// DeleteObject(hBrush); - SetTextColor(lpDis->hDC, RGB(0, 0, 0));//GetSysColor(COLOR_WINDOWTEXT)); -// SetBkColor(lpDis->hDC, GetSysColor(COLOR_WINDOW+1)); - SetBkMode(lpDis->hDC, TRANSPARENT); - } - x = lpDis->rcItem.left; - for (col=0;col<3;col++) { - ListView_GetItemText(GetDlgItem(hwndDlg, IDC_ROOM), lpDis->itemID, col, text, sizeof(text)/sizeof(TCHAR)); - w = ListView_GetColumnWidth(GetDlgItem(hwndDlg, IDC_ROOM), col); - rc.left = x; - rc.top = lpDis->rcItem.top; - rc.bottom = lpDis->rcItem.bottom; - rc.right = x+w; - if (col==0) { - rc.left+=2; - rc.right-=2; - DrawText(lpDis->hDC, text, (int)_tcslen(text), &rc, DT_LEFT|DT_NOPREFIX|DT_SINGLELINE|DT_VCENTER); - } - else if (col<2) { - DrawText(lpDis->hDC, text, (int)_tcslen(text), &rc, DT_CENTER|DT_NOPREFIX|DT_SINGLELINE|DT_VCENTER); - } else { - if (room->getFlags()&MUCC_EF_ROOM_MODERATED) { - DrawIconEx(lpDis->hDC, x, rc.top, muccIcon[MUCC_IDI_R_MODERATED], GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0, NULL, DI_NORMAL); - } - if (room->getFlags()&MUCC_EF_ROOM_MEMBERS_ONLY) { - DrawIconEx(lpDis->hDC, x+12+0*GetSystemMetrics(SM_CXSMICON), rc.top, muccIcon[MUCC_IDI_R_MEMBERS], GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0, NULL, DI_NORMAL); - } - if (!(room->getFlags()&MUCC_EF_ROOM_NICKNAMES)) { - DrawIconEx(lpDis->hDC, x+24+0*GetSystemMetrics(SM_CXSMICON), rc.top, muccIcon[MUCC_IDI_R_ANONYMOUS], GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0, NULL, DI_NORMAL); - } - } - x += w; - } - break; - } - } - break; - } - return FALSE; -} - -static INT_PTR CALLBACK MyRoomsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - RECT rc; - HWND lv; - LVCOLUMN lvCol; - ManagerWindow *manager; - manager = (ManagerWindow *) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - switch (msg) { - case WM_INITDIALOG: - manager = (ManagerWindow *)lParam; - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) manager); - TranslateDialogDefault(hwndDlg); - manager->setMyRoomsTabHWND(hwndDlg); - lv = GetDlgItem(hwndDlg, IDC_LIST); - ListView_SetExtendedListViewStyle(lv, LVS_EX_FULLROWSELECT); - GetClientRect(lv, &rc); - lvCol.mask = LVCF_WIDTH; - lvCol.cx = rc.right - rc.left; - ListView_InsertColumn(lv, 0, &lvCol); - return TRUE; - case WM_NOTIFY: - switch (wParam) { - case IDC_LIST: - switch (((LPNMHDR)lParam)->code) { - case NM_DBLCLK: - { - LVITEM item; - item.iItem = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LIST)); - if (item.iItem >= 0) { - item.iSubItem = 0; - item.mask = LVIF_PARAM; - if (ListView_GetItem(GetDlgItem(hwndDlg, IDC_LIST), &item)) { - ChatRoom *room = (ChatRoom *)item.lParam; - Utils::log("entering room %s (%s)", room->getId(), room->getId()); - MUCCEVENT muce; - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_JOIN; - muce.pszModule = manager->getModule(); - muce.pszID = room->getId(); - muce.pszName = room->getName(); - muce.dwFlags = MUCC_EF_ROOM_NICKNAMES; - muce.pszNick = NULL; - HelperDialog::joinDlg(&muce); - } - } - } - break; - } - break; - } - break; - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDC_REFRESH: - SendMessage(GetParent(hwndDlg), WM_MUCC_REFRESH_USER_ROOMS, 0, 0); - break; - case IDC_REGISTER: - { - MUCCEVENT muce; - if (manager->getCurrentGroup()!=NULL) { - TCHAR name[256]; - GetDlgItemText(hwndDlg, IDC_NAME, name, 255); - if (_tcslen(name)!=0) { - int flags = 0; - if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_PUBLIC)) { - flags |= MUCC_EF_ROOM_PUBLIC; - } - if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_PERMANENT)) { - flags |= MUCC_EF_ROOM_PERMANENT; - } - if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_MEMBERS)) { - flags |= MUCC_EF_ROOM_MEMBERS_ONLY; - } - if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_NICKNAMES)) { - flags |= MUCC_EF_ROOM_NICKNAMES; - } - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_REGISTER_ROOM; - muce.pszModule = manager->getModule(); - muce.pszID = manager->getCurrentGroup()->getId(); - char* lps1 = Utils::mucc_mir_t2a(name); - muce.pszName = lps1; - muce.pszNick = NULL; - muce.dwFlags = flags; - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - Utils::mucc_mir_free(lps1); - } - } else { - muce.pszText = "Please select a group first."; - HelperDialog::errorDlg(&muce); - } - } - break; - } - break; - case WM_MEASUREITEM: - if (wParam == IDC_LIST) { - MEASUREITEMSTRUCT *lpMis = (MEASUREITEMSTRUCT *) lParam; - lpMis->itemHeight = 16;//GetSystemMetrics(SM_CYSMICON); - return TRUE; - } - break; - case WM_DRAWITEM: - if (wParam == IDC_LIST) { - TCHAR text[256]; - DRAWITEMSTRUCT *lpDis = (DRAWITEMSTRUCT *) lParam; - switch (lpDis->itemAction) { - default: - case ODA_SELECT: - case ODA_DRAWENTIRE: - if (lpDis->itemState & ODS_SELECTED) { - HBRUSH hBrush = CreateSolidBrush(RGB(0xC2, 0xC8, 0xDA));//0xDAC8C2); - FillRect(lpDis->hDC, &(lpDis->rcItem), hBrush);//(HBRUSH) (COLOR_HIGHLIGHT+1)); - DeleteObject(hBrush); - SetTextColor(lpDis->hDC, 0); - SetBkMode(lpDis->hDC, TRANSPARENT); - } - else { - FillRect(lpDis->hDC, &(lpDis->rcItem), (HBRUSH) (COLOR_WINDOW+1)); - SetTextColor(lpDis->hDC, RGB(0, 0, 0));//GetSysColor(COLOR_WINDOWTEXT)); - SetBkMode(lpDis->hDC, TRANSPARENT); - } - ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LIST), lpDis->itemID, 0, text, sizeof(text)/sizeof(TCHAR)); - DrawText(lpDis->hDC, text, (int)_tcslen(text), &(lpDis->rcItem), DT_LEFT|DT_NOPREFIX|DT_SINGLELINE|DT_VCENTER); - break; - } - } - break; - - } - return FALSE; -} - -static INT_PTR CALLBACK MyNicksDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - RECT rc; - HWND lv; - LVCOLUMN lvCol; - ManagerWindow *manager; - manager = (ManagerWindow *) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - switch (msg) { - case WM_INITDIALOG: - manager = (ManagerWindow *)lParam; - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) manager); - TranslateDialogDefault(hwndDlg); - manager->setMyNicksTabHWND(hwndDlg); - lv = GetDlgItem(hwndDlg, IDC_LIST); - ListView_SetExtendedListViewStyle(lv, LVS_EX_FULLROWSELECT); - GetClientRect(lv, &rc); - lvCol.mask = LVCF_WIDTH; - lvCol.cx = rc.right - rc.left; - ListView_InsertColumn(lv, 0, &lvCol); - return TRUE; - case WM_NOTIFY: - switch (wParam) { - case IDC_LIST: - break; - - } - break; - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDC_REFRESH: - SendMessage(GetParent(hwndDlg), WM_MUCC_REFRESH_USER_NICKS, 0, 0); - break; - case IDC_REGISTER: - { - char nick[256]; - GetDlgItemTextA(hwndDlg, IDC_NICK, nick, 255); - if (strlen(nick)!=0) { - MUCCEVENT muce; - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_REGISTER_NICK; - muce.pszModule = manager->getModule(); - muce.pszNick = nick; - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - } - } - break; - case IDC_REMOVE: - { - LVITEM item; - item.iItem = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LIST)); - if (item.iItem >= 0) { - TCHAR text[256]; - item.iSubItem = 0; - item.mask = LVIF_TEXT; - item.pszText = text; - item.cchTextMax = sizeof(text); - if (ListView_GetItem(GetDlgItem(hwndDlg, IDC_LIST), &item)) { - MUCCEVENT muce; - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_REMOVE_NICK; - muce.pszModule = manager->getModule(); - char* lps2 = Utils::mucc_mir_t2a(text); - muce.pszNick = lps2; - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - Utils::mucc_mir_free(lps2); - } - } - } - } - break; - case WM_MEASUREITEM: - if (wParam == IDC_LIST) { - MEASUREITEMSTRUCT *lpMis = (MEASUREITEMSTRUCT *) lParam; - lpMis->itemHeight = 16;//GetSystemMetrics(SM_CYSMICON); - return TRUE; - } - break; - case WM_DRAWITEM: - if (wParam == IDC_LIST) { - TCHAR text[256]; - DRAWITEMSTRUCT *lpDis = (DRAWITEMSTRUCT *) lParam; - switch (lpDis->itemAction) { - default: - case ODA_SELECT: - case ODA_DRAWENTIRE: - if (lpDis->itemState & ODS_SELECTED) { - HBRUSH hBrush = CreateSolidBrush(RGB(0xC2, 0xC8, 0xDA));//0xDAC8C2); - FillRect(lpDis->hDC, &(lpDis->rcItem), hBrush);//(HBRUSH) (COLOR_HIGHLIGHT+1)); - DeleteObject(hBrush); - SetTextColor(lpDis->hDC, 0); - SetBkMode(lpDis->hDC, TRANSPARENT); - } - else { - FillRect(lpDis->hDC, &(lpDis->rcItem), (HBRUSH) (COLOR_WINDOW+1)); - SetTextColor(lpDis->hDC, RGB(0, 0, 0));//GetSysColor(COLOR_WINDOWTEXT)); - SetBkMode(lpDis->hDC, TRANSPARENT); - } - ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LIST), lpDis->itemID, 0, text, sizeof(text)/sizeof(TCHAR)); - DrawText(lpDis->hDC, text, (int)_tcslen(text), &(lpDis->rcItem), DT_LEFT|DT_NOPREFIX|DT_SINGLELINE|DT_VCENTER); - break; - } - } - break; - } - return FALSE; -} - -static INT_PTR CALLBACK ManagerDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND hwnd, tc; - TCITEM tci; - char text[128]; -// HIMAGELIST hImageList; - ManagerWindow *manager; - MUCCEVENT muce; - int dlgWidth, dlgHeight, tabPos; - RECT rc2; - - manager = (ManagerWindow *) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - if (manager==NULL && msg!=WM_INITDIALOG) return FALSE; - switch (msg) { - case WM_INITDIALOG: - // lParam is the initial conference server (if any) - manager = (ManagerWindow *)lParam; - manager->setHWND(hwndDlg); - sprintf(text, "%s Chats", manager->getModuleName()); - SetWindowTextA(hwndDlg, text); - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) manager); - SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM) muccIcon[MUCC_IDI_CHAT]); - - TranslateDialogDefault(hwndDlg); -// sortColumn = -1; - manager->setCurrentTab(0); - tc = GetDlgItem(hwndDlg, IDC_TABS); - tci.mask = TCIF_TEXT; - // Public rooms tab - tci.pszText = TranslateT("Chat rooms"); - TabCtrl_InsertItem(tc, 0, &tci); - // Create room tab - tci.pszText = TranslateT("My rooms"); - TabCtrl_InsertItem(tc, 1, &tci); - tci.pszText = TranslateT("My nicknames"); - TabCtrl_InsertItem(tc, 2, &tci); - hwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_TAB_CHATROOMS), hwndDlg, ChatRoomsDlgProc, (LPARAM) manager); - SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); - ShowWindow(hwnd, SW_SHOW); - hwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_TAB_MYROOMS), hwndDlg, MyRoomsDlgProc, (LPARAM) manager); - SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); - hwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_TAB_MYNICKNAMES), hwndDlg, MyNicksDlgProc, (LPARAM) manager); - SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); - EnableWindow(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_PREV), FALSE); - EnableWindow(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_NEXT), FALSE); - - GetWindowRect(manager->getMyRoomsTabHWND(), &rc2); - rc2.right-=rc2.left; - rc2.bottom-=rc2.top; - SetWindowPos(hwndDlg, NULL, 0, 0, rc2.right+300, 118+rc2.bottom, SWP_NOMOVE | SWP_NOZORDER); - TreeView_SetItemHeight(GetDlgItem(hwndDlg, IDC_GROUP), 16); -// hImageList=ImageList_Create(100, 100, ILC_COLOR32, 0, 10); -// ListView_SetImageList(GetDlgItem(hwndDlg, IDC_ROOM), hImageList, LVSIL_SMALL); - SetEvent(manager->getEvent()); - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_QUERY_GROUPS; - muce.pszModule = manager->getModule(); - muce.pszID = NULL; - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - return TRUE; - case WM_SIZING: - RECT *rc, rc2; - rc = (RECT *)lParam; - GetWindowRect(manager->getMyRoomsTabHWND(), &rc2); - rc2.right-=rc2.left; - rc2.bottom-=rc2.top; - if (rc->right-rc->left<(rc2.right+80)) { - if (wParam == WMSZ_RIGHT || wParam == WMSZ_BOTTOMRIGHT || wParam == WMSZ_TOPRIGHT) { - rc->right=rc->left+rc2.right+80; - } else { - rc->left=rc->right-rc2.right-80; - } - } - if (rc->bottom-rc->top<118+rc2.bottom || rc->bottom-rc->top>118+rc2.bottom) { - if (wParam == WMSZ_BOTTOM || wParam == WMSZ_BOTTOMLEFT || wParam == WMSZ_BOTTOMRIGHT) { - rc->bottom=rc->top+118+rc2.bottom; - } else { - rc->top=rc->bottom-118-rc2.bottom; - } - } - return TRUE; - case WM_SIZE: - if (wParam==SIZE_RESTORED || wParam==SIZE_MAXIMIZED) { - HDWP hdwp; - dlgWidth = LOWORD(lParam); - dlgHeight = HIWORD(lParam); - GetWindowRect(manager->getMyRoomsTabHWND(), &rc2); - rc2.right-=rc2.left; - rc2.bottom-=rc2.top; - tabPos = dlgWidth - rc2.right - 15; - hdwp = BeginDeferWindowPos(6); - hdwp = DeferWindowPos(hdwp, GetDlgItem(hwndDlg, IDC_TABS), 0, tabPos, 10, 0, 0, SWP_NOZORDER | SWP_NOSIZE); - hdwp = DeferWindowPos(hdwp, manager->getChatRoomsTabHWND(), 0, tabPos+3, 45, 371, 292, SWP_NOZORDER | SWP_NOSIZE); - hdwp = DeferWindowPos(hdwp, manager->getMyRoomsTabHWND() , 0, tabPos+3, 45, 371, 292, SWP_NOZORDER | SWP_NOSIZE); - hdwp = DeferWindowPos(hdwp, manager->getMyNicksTabHWND() , 0, tabPos+3, 45, 371, 292, SWP_NOZORDER | SWP_NOSIZE); - hdwp = DeferWindowPos(hdwp, GetDlgItem(hwndDlg, IDC_GROUP), 0, 0, 0, tabPos-16, dlgHeight-40, SWP_NOZORDER | SWP_NOMOVE); - hdwp = DeferWindowPos(hdwp, GetDlgItem(hwndDlg, IDCLOSE), 0, dlgWidth-88, dlgHeight-34, 0, 0 , SWP_NOZORDER | SWP_NOSIZE); - EndDeferWindowPos(hdwp); - } - break; - case WM_NOTIFY: - switch (wParam) { - case IDC_GROUP: - switch (((LPNMHDR)lParam)->code) { - case TVN_ITEMEXPANDING: - { - LPNMTREEVIEW pnmtv = (LPNMTREEVIEW) lParam; - if (pnmtv->action==TVE_EXPAND) { - TVITEM item = (TVITEM) pnmtv->itemNew; - ChatGroup *group = (ChatGroup *) item.lParam;// manager->findGroup(item.hItem); - if (group!=NULL) { - if (group->getChild()==NULL) { - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_QUERY_GROUPS; - muce.pszModule = manager->getModule(); - muce.pszID = group->getId(); - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - } - } - } - } - break; - case TVN_SELCHANGED: - { - LPNMTREEVIEW pnmtv = (LPNMTREEVIEW) lParam; - TVITEM item = (TVITEM) pnmtv->itemNew; - ChatGroup *group = (ChatGroup *) item.lParam;// manager->findGroup(item.hItem); - if (group!=NULL) { - EnableWindow(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_PREV), FALSE); - EnableWindow(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_NEXT), FALSE); - ListView_DeleteAllItems(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_ROOM)); - manager->setCurrentGroup(group); - manager->setCurrentRoomsPage(0); - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_QUERY_ROOMS; - muce.pszModule = manager->getModule(); - muce.pszID = (char *)group->getId(); - muce.dwData = 0; - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - } - } - break; - case NM_CUSTOMDRAW: - { - if (((LPNMHDR)lParam)->idFrom == IDC_GROUP) { - LPNMTVCUSTOMDRAW pCustomDraw = (LPNMTVCUSTOMDRAW)lParam; - switch (pCustomDraw->nmcd.dwDrawStage) { - case CDDS_PREPAINT: - SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,CDRF_NOTIFYITEMDRAW); - return TRUE; - case CDDS_ITEMPREPAINT: - { - if (pCustomDraw->nmcd.uItemState & CDIS_FOCUS) { // selected (CDIS_FOCUS | CDIS_SELECTED - pCustomDraw->clrText = 0; - pCustomDraw->clrTextBk = 0xDAC8C2; - } - else { - pCustomDraw->clrText = 0; - } - // HBRUSH hBr; - // hBr = CreateSolidBrush(pCustomDraw->clrTextBk);//g_LogOptions.crUserListBGColor ) ; - // FillRect(pCustomDraw->nmcd.hdc, &rc, hBr); - // DeleteObject(hBr); - SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT, CDRF_NEWFONT); - return TRUE; - } - } - } - } - break; - } - break; - case IDC_TABS: - switch (((LPNMHDR) lParam)->code) { - case TCN_SELCHANGE: - switch (manager->getCurrentTab()) { - case 0: - ShowWindow(manager->getChatRoomsTabHWND(), SW_HIDE); - break; - case 1: - ShowWindow(manager->getMyRoomsTabHWND(), SW_HIDE); - break; - case 2: - ShowWindow(manager->getMyNicksTabHWND(), SW_HIDE); - break; - } - manager->setCurrentTab(TabCtrl_GetCurSel(GetDlgItem(hwndDlg, IDC_TABS))); - switch (manager->getCurrentTab()) { - case 0: - ShowWindow(manager->getChatRoomsTabHWND(), SW_SHOW); - break; - case 1: - ShowWindow(manager->getMyRoomsTabHWND(), SW_SHOW); - if (!manager->isUserRoomListReceived()) { - SendMessage(hwndDlg, WM_MUCC_REFRESH_USER_ROOMS, 0, 0); - } - break; - case 2: - ShowWindow(manager->getMyNicksTabHWND(), SW_SHOW); - if (!manager->isUserNickListReceived()) { - SendMessage(hwndDlg, WM_MUCC_REFRESH_USER_NICKS, 0, 0); - } - break; - } - break; - } - break; - } - break; - case WM_MUCC_REFRESH_USER_ROOMS: - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_QUERY_USER_ROOMS; - muce.pszModule = manager->getModule(); - muce.pszID = NULL; - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - break; - case WM_MUCC_REFRESH_USER_NICKS: - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_QUERY_USER_NICKS; - muce.pszModule = manager->getModule(); - muce.pszID = NULL; - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - break; - case WM_MUCC_REFRESH_ROOMS: - { - ChatGroup *group = manager->getCurrentGroup(); - if (manager->getCurrentGroup()!=NULL) { - EnableWindow(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_PREV), FALSE); - EnableWindow(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_NEXT), FALSE); - ListView_DeleteAllItems(GetDlgItem(manager->getChatRoomsTabHWND(), IDC_ROOM)); - /* - * TODO: delete rooms here !!! - */ - muce.cbSize = sizeof(MUCCEVENT); - muce.iType = MUCC_EVENT_QUERY_ROOMS; - muce.pszModule = manager->getModule(); - muce.pszID = (char *)group->getId(); - muce.dwData = manager->getCurrentRoomsPage(); - NotifyEventHooks(hHookEvent, 0,(WPARAM)&muce); - } - } - break; - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDCLOSE: - ShowWindow(hwndDlg, SW_HIDE); - break; - } - break; - case WM_CLOSE: - ShowWindow(hwndDlg, SW_HIDE); - break; - - } - return FALSE; -} - -ManagerWindow* ManagerWindow::getWindow(const char *module) { - ManagerWindow *ptr; - EnterCriticalSection(&mutex); - for (ptr=list;ptr!=NULL;ptr=ptr->getNext()) { - if (strcmp(ptr->getModule(), module)==0) { - break; - } - } - LeaveCriticalSection(&mutex); - if (ptr==NULL) { - ptr = new ManagerWindow(module); - } - return ptr; -} - -- cgit v1.2.3