summaryrefslogtreecommitdiff
path: root/plugins/IEHistory/src/dlgHandlers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/IEHistory/src/dlgHandlers.cpp')
-rw-r--r--plugins/IEHistory/src/dlgHandlers.cpp1000
1 files changed, 446 insertions, 554 deletions
diff --git a/plugins/IEHistory/src/dlgHandlers.cpp b/plugins/IEHistory/src/dlgHandlers.cpp
index abc185cac5..2f9b645692 100644
--- a/plugins/IEHistory/src/dlgHandlers.cpp
+++ b/plugins/IEHistory/src/dlgHandlers.cpp
@@ -18,9 +18,8 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#include "stdafx.h"
#include "dlgHandlers.h"
-#include "math.h"
-#include <commctrl.h>
//#define GAP_SIZE 2
#define GAP_SIZE 0
@@ -51,22 +50,22 @@ HANDLE GetNeededEvent(HANDLE hLastFirstEvent, int num, int direction);
int CalcIEViewPos(IEVIEWWINDOW *ieWnd, HWND hMainWindow)
{
RECT rect;
- GetWindowRect(GetDlgItem(hMainWindow,IDC_IEVIEW_PLACEHOLDER), &rect);
- rect.right-=rect.left; rect.bottom-=rect.top;
+ GetWindowRect(GetDlgItem(hMainWindow, IDC_IEVIEW_PLACEHOLDER), &rect);
+ rect.right -= rect.left; rect.bottom -= rect.top;
ScreenToClient(hMainWindow, (POINT*)&rect);
/// @todo : find out why -1/+1 is required... or why IEView uses a border...
- ieWnd->x = -1+rect.left + GAP_SIZE;
- ieWnd->y = -1+rect.top + GAP_SIZE;
- ieWnd->cx = 2+rect.right - (2 * GAP_SIZE);
- ieWnd->cy = 2+rect.bottom - (2 * GAP_SIZE);
+ ieWnd->x = -1 + rect.left + GAP_SIZE;
+ ieWnd->y = -1 + rect.top + GAP_SIZE;
+ ieWnd->cx = 2 + rect.right - (2 * GAP_SIZE);
+ ieWnd->cy = 2 + rect.bottom - (2 * GAP_SIZE);
return 0;
}
void LoadName(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- if(!data->contact){
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
+ if (!data->contact) {
SetWindowText(hWnd, TranslateT("System History"));
return;
}
@@ -79,140 +78,131 @@ void LoadName(HWND hWnd)
int LoadIEView(HWND hWnd)
{
- IEVIEWWINDOW ieWnd = {sizeof(ieWnd)};
+ IEVIEWWINDOW ieWnd = { sizeof(ieWnd) };
ieWnd.iType = IEW_CREATE;
ieWnd.dwMode = IEWM_HISTORY;
ieWnd.dwFlags = 0;
ieWnd.parent = hWnd;
CalcIEViewPos(&ieWnd, hWnd);
-
- CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd);
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
+
+ CallService(MS_IEVIEW_WINDOW, 0, (LPARAM)&ieWnd);
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
data->hIEView = ieWnd.hwnd;
return 0;
}
int MoveIeView(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- if (data)
- {
- IEVIEWWINDOW ieWnd = {0};
- ieWnd.cbSize = sizeof(ieWnd);
- ieWnd.parent = hWnd;
- ieWnd.hwnd = data->hIEView;
- ieWnd.iType = IEW_SETPOS;
- CalcIEViewPos(&ieWnd, hWnd);
- CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd);
- }
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
+ if (data) {
+ IEVIEWWINDOW ieWnd = { 0 };
+ ieWnd.cbSize = sizeof(ieWnd);
+ ieWnd.parent = hWnd;
+ ieWnd.hwnd = data->hIEView;
+ ieWnd.iType = IEW_SETPOS;
+ CalcIEViewPos(&ieWnd, hWnd);
+ CallService(MS_IEVIEW_WINDOW, 0, (LPARAM)&ieWnd);
+ }
return 0;
}
int DestroyIEView(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- IEVIEWWINDOW ieWnd = {0};
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
+ IEVIEWWINDOW ieWnd = { 0 };
ieWnd.cbSize = sizeof(ieWnd);
ieWnd.parent = hWnd;
ieWnd.hwnd = data->hIEView;
ieWnd.iType = IEW_DESTROY;
- CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd);
+ CallService(MS_IEVIEW_WINDOW, 0, (LPARAM)&ieWnd);
return 0;
}
void FillIEViewInfo(IEVIEWEVENTDATA *fillData, DBEVENTINFO dbInfo, PBYTE blob)
{
- switch (dbInfo.eventType)
- {
- case EVENTTYPE_MESSAGE:
- fillData->iType = IEED_EVENT_MESSAGE;
- break;
- case EVENTTYPE_STATUS:
- fillData->iType = IEED_EVENT_STATUSCHANGE;
- break;
- case EVENTTYPE_FILE:
- fillData->iType = IEED_EVENT_FILE;
- break;
- case EVENTTYPE_URL:
- fillData->iType = IEED_EVENT_URL;
- break;
- }
+ switch (dbInfo.eventType) {
+ case EVENTTYPE_MESSAGE:
+ fillData->iType = IEED_EVENT_MESSAGE;
+ break;
+ case EVENTTYPE_STATUS:
+ fillData->iType = IEED_EVENT_STATUSCHANGE;
+ break;
+ case EVENTTYPE_FILE:
+ fillData->iType = IEED_EVENT_FILE;
+ break;
+ case EVENTTYPE_URL:
+ fillData->iType = IEED_EVENT_URL;
+ break;
+ }
fillData->pszNick = "<nick here>";
fillData->bIsMe = (dbInfo.flags & DBEF_SENT);
fillData->dwFlags = (dbInfo.flags & DBEF_SENT) ? IEEDF_SENT : 0;
fillData->time = dbInfo.timestamp;
- size_t len = strlen((char *) blob) + 1;
+ size_t len = strlen((char *)blob) + 1;
PBYTE pos;
-
- fillData->pszText = (char *) blob;
-// fillData.pszText2 = (char *) blob;
- if (len < dbInfo.cbBlob)
- {
- pos = blob + len;
- fillData->pszTextW = (wchar_t *) pos;
-// fillData->pszText2W = (wchar_t *) pos;
- fillData->dwFlags |= IEEDF_UNICODE_TEXT;
- }
+
+ fillData->pszText = (char *)blob;
+ // fillData.pszText2 = (char *) blob;
+ if (len < dbInfo.cbBlob) {
+ pos = blob + len;
+ fillData->pszTextW = (wchar_t *)pos;
+ // fillData->pszText2W = (wchar_t *) pos;
+ fillData->dwFlags |= IEEDF_UNICODE_TEXT;
+ }
}
DWORD WINAPI WorkerThread(LPVOID lpvData)
{
Log("%s", "Inside worker thread ...");
- WorkerThreadData *data = (WorkerThreadData *) lpvData;
+ WorkerThreadData *data = (WorkerThreadData *)lpvData;
EnableWindow(GetDlgItem(data->hWnd, IDC_CLOSE), FALSE);
const int LOAD_COUNT = 10;
int count = 0;
int target = data->ieEvent.count;
int cLoad = LOAD_COUNT;
int i;
- IEVIEWEVENTDATA ieData[LOAD_COUNT] = {0};
- PBYTE messages[LOAD_COUNT] = {0};
+ IEVIEWEVENTDATA ieData[LOAD_COUNT] = { 0 };
+ PBYTE messages[LOAD_COUNT] = { 0 };
HANDLE dbEvent = data->ieEvent.hDbEventFirst;
- for (i = 0; i < LOAD_COUNT; i++)
- {
- ieData[i].cbSize = sizeof(IEVIEWEVENTDATA); //set the cbsize here, no need to do it every time
- ieData[i].next = &ieData[i + 1]; //it's a vector, so v[i]'s next element is v[i + 1]
- }
+ for (i = 0; i < LOAD_COUNT; i++) {
+ ieData[i].cbSize = sizeof(IEVIEWEVENTDATA); //set the cbsize here, no need to do it every time
+ ieData[i].next = &ieData[i + 1]; //it's a vector, so v[i]'s next element is v[i + 1]
+ }
ieData[LOAD_COUNT - 1].next = NULL;
IEVIEWEVENT ieEvent = data->ieEvent;
ieEvent.iType = IEE_LOG_MEM_EVENTS;
ieEvent.eventData = ieData;
- DBEVENTINFO dbInfo = {0};
+ DBEVENTINFO dbInfo = { 0 };
dbInfo.cbSize = sizeof(DBEVENTINFO);
PBYTE buffer = NULL;
int newSize, oldSize = 0;
- while (count < target)
- {
- cLoad = (count + LOAD_COUNT > target) ? target - count : LOAD_COUNT;
- ieEvent.count = -1;
-
- for (i = 0; i < cLoad; i++)
- {
- newSize = db_event_getBlobSize(dbEvent);
- if (newSize > oldSize)
- {
- buffer = (PBYTE) realloc(buffer, newSize);
- dbInfo.pBlob = buffer;
- oldSize = newSize;
- }
- messages[i] = (PBYTE) realloc(messages[i], newSize);
- dbInfo.cbBlob = newSize;
- if (!db_event_get(dbEvent,&dbInfo))
- {
- memmove(messages[i], dbInfo.pBlob, newSize);
- FillIEViewInfo(&ieData[i], dbInfo, messages[i]);
- }
- //FillIEViewEventData(&ieData[i], dbEvent);
- dbEvent = db_event_next(0,dbEvent);
- }
- ieData[cLoad - 1].next = NULL; //cLoad < LOAD_COUNT will only happen once, at the end
- CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent);
- count += cLoad;
+ while (count < target) {
+ cLoad = (count + LOAD_COUNT > target) ? target - count : LOAD_COUNT;
+ ieEvent.count = -1;
+
+ for (i = 0; i < cLoad; i++) {
+ newSize = db_event_getBlobSize(dbEvent);
+ if (newSize > oldSize) {
+ buffer = (PBYTE)realloc(buffer, newSize);
+ dbInfo.pBlob = buffer;
+ oldSize = newSize;
+ }
+ messages[i] = (PBYTE)realloc(messages[i], newSize);
+ dbInfo.cbBlob = newSize;
+ if (!db_event_get(dbEvent, &dbInfo)) {
+ memmove(messages[i], dbInfo.pBlob, newSize);
+ FillIEViewInfo(&ieData[i], dbInfo, messages[i]);
+ }
+ //FillIEViewEventData(&ieData[i], dbEvent);
+ dbEvent = db_event_next(0, dbEvent);
}
+ ieData[cLoad - 1].next = NULL; //cLoad < LOAD_COUNT will only happen once, at the end
+ CallService(MS_IEVIEW_EVENT, 0, (LPARAM)&ieEvent);
+ count += cLoad;
+ }
for (i = 0; i < LOAD_COUNT; i++)
- {
- free(messages[i]);
- }
+ free(messages[i]);
+
free(buffer);
EnableWindow(GetDlgItem(data->hWnd, IDC_CLOSE), TRUE);
free(data);
@@ -224,42 +214,41 @@ DWORD WINAPI WorkerThread(LPVOID lpvData)
int DoLoadEvents(HWND hWnd, HistoryWindowData *data, IEVIEWEVENT ieEvent)
{
ieEvent.iType = IEE_CLEAR_LOG;
- CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent);
- if (data->loadMethod == LOAD_IN_BACKGROUND)
+ CallService(MS_IEVIEW_EVENT, 0, (LPARAM)&ieEvent);
+ if (data->loadMethod == LOAD_IN_BACKGROUND) {
+ WorkerThreadData *threadData = (WorkerThreadData *)malloc(sizeof(WorkerThreadData));
+ threadData->data = data;
+ threadData->hWnd = hWnd;
+ threadData->ieEvent = ieEvent;
+ WorkerThread(threadData);
+ /*
+ DWORD threadID;
+ HANDLE thread = CreateThread(NULL, 0, WorkerThread, threadData, 0, &threadID);
+ if (!thread)
{
- WorkerThreadData *threadData = (WorkerThreadData *) malloc(sizeof(WorkerThreadData));
- threadData->data = data;
- threadData->hWnd = hWnd;
- threadData->ieEvent = ieEvent;
- WorkerThread(threadData);
- /*
- DWORD threadID;
- HANDLE thread = CreateThread(NULL, 0, WorkerThread, threadData, 0, &threadID);
- if (!thread)
- {
- MessageBox(hWnd, TranslateT("An error occured while trying to create the worker thread (%m)"), TranslateT("Error"), MB_OK | MB_ICONERROR);
- } */
- }
- else{
- ieEvent.iType = IEE_LOG_DB_EVENTS;
- CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent);
- ScrollToBottom(hWnd);
-
- TCHAR buffer[256];
- itot(data->index + 1, buffer, 10);
- SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 0 | SBT_POPOUT, (LPARAM) buffer);
- itot(data->index + ieEvent.count, buffer, 10);
- SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 1 | SBT_POPOUT, (LPARAM) buffer);
- itot(data->count, buffer, 10);
- SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 3 | SBT_POPOUT, (LPARAM) buffer);
- RefreshButtonStates(hWnd);
- }
+ MessageBox(hWnd, TranslateT("An error occured while trying to create the worker thread (%m)"), TranslateT("Error"), MB_OK | MB_ICONERROR);
+ } */
+ }
+ else {
+ ieEvent.iType = IEE_LOG_DB_EVENTS;
+ CallService(MS_IEVIEW_EVENT, 0, (LPARAM)&ieEvent);
+ ScrollToBottom(hWnd);
+
+ TCHAR buffer[256];
+ itot(data->index + 1, buffer, 10);
+ SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 0 | SBT_POPOUT, (LPARAM)buffer);
+ itot(data->index + ieEvent.count, buffer, 10);
+ SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 1 | SBT_POPOUT, (LPARAM)buffer);
+ itot(data->count, buffer, 10);
+ SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 3 | SBT_POPOUT, (LPARAM)buffer);
+ RefreshButtonStates(hWnd);
+ }
return 0;
}
int LoadEvents(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
int count = db_event_count(data->contact);
int bLastFirst = db_get_b(NULL, ModuleName, "ShowLastPageFirst", 0);
int bRTL = db_get_b(NULL, ModuleName, "EnableRTL", 0);
@@ -267,74 +256,67 @@ int LoadEvents(HWND hWnd)
data->bEnableRTL = bRTL;
data->count = count;
if (data->itemsPerPage > count)
- {
- data->itemsPerPage = count;
- }
- IEVIEWEVENT ieEvent = {sizeof(ieEvent)};
+ data->itemsPerPage = count;
+
+ IEVIEWEVENT ieEvent = { sizeof(ieEvent) };
ieEvent.hwnd = data->hIEView;
ieEvent.hContact = data->contact;
ieEvent.count = (data->itemsPerPage <= 0) ? count : data->itemsPerPage;
-
+
HANDLE hFirstEvent = db_event_first(data->contact);
int num = 0;
- if ((data->itemsPerPage > 0) && (bLastFirst))
- {
- num = data->count - data->itemsPerPage;
- hFirstEvent = GetNeededEvent(hFirstEvent, num, DIRECTION_FORWARD);
- }
+ if ((data->itemsPerPage > 0) && (bLastFirst)) {
+ num = data->count - data->itemsPerPage;
+ hFirstEvent = GetNeededEvent(hFirstEvent, num, DIRECTION_FORWARD);
+ }
data->index = num;
data->hLastFirstEvent = hFirstEvent;
ieEvent.hDbEventFirst = hFirstEvent;
if (data->bEnableRTL)
- {
- ieEvent.dwFlags |= IEEF_RTL;
- }
+ ieEvent.dwFlags |= IEEF_RTL;
+
DoLoadEvents(hWnd, data, ieEvent);
return 0;
}
int LoadPage(HWND hWnd, HANDLE hFirstEvent, long index, long shiftCount, long readCount, int direction)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
int count = shiftCount;
int newIndex = index;
- IEVIEWEVENT ieEvent = {sizeof(ieEvent)};
+ IEVIEWEVENT ieEvent = { sizeof(ieEvent) };
ieEvent.hwnd = data->hIEView;
ieEvent.hContact = data->contact;
-
- if (direction == DIRECTION_BACK)
- {
- newIndex -= shiftCount;
- if (newIndex < 0)
- {
- newIndex = 0;
- count = index;
- }
+
+ if (direction == DIRECTION_BACK) {
+ newIndex -= shiftCount;
+ if (newIndex < 0) {
+ newIndex = 0;
+ count = index;
}
- else{
- newIndex += shiftCount;
- if (newIndex + readCount > data->count)
- {
- count = data->count - newIndex;
- newIndex = data->count - readCount;
- }
+ }
+ else {
+ newIndex += shiftCount;
+ if (newIndex + readCount > data->count) {
+ count = data->count - newIndex;
+ newIndex = data->count - readCount;
}
+ }
data->index = newIndex;
HANDLE hEvent = GetNeededEvent(hFirstEvent, count, direction);
data->hLastFirstEvent = hEvent;
ieEvent.hDbEventFirst = hEvent;
ieEvent.count = readCount;
if (data->bEnableRTL)
- {
- ieEvent.dwFlags |= IEEF_RTL;
- }
+ ieEvent.dwFlags |= IEEF_RTL;
+
DoLoadEvents(hWnd, data, ieEvent);
return 0;
}
int LoadPrev(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
LoadPage(hWnd, data->hLastFirstEvent, data->index, data->itemsPerPage, data->itemsPerPage, DIRECTION_BACK);
int finish = data->index <= 0;
return finish;
@@ -342,7 +324,7 @@ int LoadPrev(HWND hWnd)
int LoadNext(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
LoadPage(hWnd, data->hLastFirstEvent, data->index, data->itemsPerPage, data->itemsPerPage, DIRECTION_FORWARD);
int finish = data->index + data->itemsPerPage >= data->count;
return finish;
@@ -350,13 +332,13 @@ int LoadNext(HWND hWnd)
int ScrollToBottom(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- IEVIEWWINDOW ieWnd = {0};
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
+ IEVIEWWINDOW ieWnd = { 0 };
ieWnd.cbSize = sizeof(ieWnd);
ieWnd.iType = IEW_SCROLLBOTTOM;
ieWnd.hwnd = data->hIEView;
ieWnd.parent = hWnd;
- CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd);
+ CallService(MS_IEVIEW_WINDOW, 0, (LPARAM)&ieWnd);
return 0;
}
@@ -368,7 +350,7 @@ void AddAnchorWindowToDeferList(HDWP &hdWnds, HWND window, RECT *rParent, WINDOW
void RefreshButtonStates(HWND hWnd)
{
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
int bPrev = data->index > 0;
int bNext = data->index + data->itemsPerPage < data->count;
EnableWindow(GetDlgItem(hWnd, IDC_PREV), bPrev);
@@ -379,415 +361,325 @@ void RefreshButtonStates(HWND hWnd)
INT_PTR CALLBACK HistoryDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
- switch (msg)
+ HistoryWindowData *data = (HistoryWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
+
+ switch (msg) {
+ case WM_INITDIALOG:
+ Log("Inside WM_INITDIALOG ...");
+ TranslateDialogDefault(hWnd);
+ SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
{
- case WM_INITDIALOG:
- {
- Log("Inside WM_INITDIALOG ...");
- TranslateDialogDefault(hWnd);
- SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM) hIcon);
- //SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
- int bRTL = db_get_b(NULL, ModuleName, "EnableRTL", 0);
- if (bRTL)
- {
- SetWindowLongPtr(hWnd, GWL_EXSTYLE, WS_EX_RTLREADING);
- }
- //InitCommonControls();
- HWND hStatusBar = CreateWindow(STATUSCLASSNAME, //class
- _T("-"), //title
- WS_CHILD | WS_VISIBLE | SBARS_TOOLTIPS | SBARS_SIZEGRIP, //style
- 0, 0, //x, y
- 0, 0, //width, height
- hWnd, //parent
- (HMENU) IDC_STATUSBAR, //menu
- hInstance, //instance
- NULL); //lpParam
- int x;
- int widths[] = {x = 50, x += 50, x += 150, -1};
- int count = sizeof(widths) / sizeof(widths[0]);
- SendMessage(hStatusBar, SB_SETPARTS, count, (LPARAM) widths);
- //SendMessage(hStatusBar, SB_SETTIPTEXT, 1, (LPARAM) TranslateT("First event shown in page"));
- //SendMessage(hStatusBar, SB_SETTIPTEXT, 2, (LPARAM) TranslateT("Last event shown in page"));
- SendMessage(hStatusBar, SB_SETTEXT, 2 | SBT_POPOUT, (LPARAM) TranslateT("Out of a total of"));
- return TRUE;
- }
- case WM_SHOWWINDOW:
- {
- Log("Inside WM_SHOWWINDOW ...");
- LoadName(hWnd);
- LoadIEView(hWnd);
- LoadEvents(hWnd);
-
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- bool bAll = (data->itemsPerPage <= 0) || (data->itemsPerPage >= data->count);
- int bLastFirst = db_get_b(NULL, ModuleName, "ShowLastPageFirst", 0);
- if (!bLastFirst)
- {
- EnableWindow(GetDlgItem(hWnd, IDC_PREV), FALSE);
- EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !bAll);
- }
- else{
- EnableWindow(GetDlgItem(hWnd, IDC_PREV), !bAll);
- EnableWindow(GetDlgItem(hWnd, IDC_NEXT), FALSE);
- }
- //ShowWindow(GetDlgItem(hWnd, IDC_PAGE_NUMBER), !bAll);
- EnableWindow(GetDlgItem(hWnd, IDC_SEARCH), !bAll);
-
- break;
- }
- case WM_DESTROY:
- {
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- DestroyIEView(hWnd);
- free(data);
- WindowList_Remove(hOpenWindowsList, hWnd);
- break;
- }
- case WM_CLOSE:
- {
- if (IsWindowEnabled(GetDlgItem(hWnd, IDC_CLOSE)))
- {
- DestroyWindow(hWnd);
- }
- else{
- MessageBox(hWnd, TranslateT("You can't close the window now, wait for all events to load."), TranslateT("Error"), MB_OK | MB_ICONERROR);
- }
- break;
- }
- case WM_WINDOWPOSCHANGING:
- {
- HDWP hdWnds = BeginDeferWindowPos(6);
- RECT rParent;
- HWND hStatusBar = GetDlgItem(hWnd, IDC_STATUSBAR);
- WINDOWPOS *wndPos = (WINDOWPOS *) lParam;
- GetWindowRect(hWnd, &rParent);
-
- //hdWnds = DeferWindowPos(hdWnds, hStatusBar, HWND_NOTOPMOST, wndPos->x, wndPos->y + wndPos->cy - statusHeight, statusWidth, statusHeight, SWP_NOZORDER);
- SendMessage(hStatusBar, WM_SIZE, 0, 0);
- if (wndPos->cx < MIN_HISTORY_WIDTH)
- {
- wndPos->cx = MIN_HISTORY_WIDTH;
- }
- if (wndPos->cy < MIN_HISTORY_HEIGHT)
- {
- wndPos->cy = MIN_HISTORY_HEIGHT;
- }
- //MoveWindow(hStatusBar, wndPos->x, wndPos->y + wndPos->cy - statusHeight - 2, statusWidth - 2, statusHeight, TRUE);
- AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_STATUSBAR), &rParent, wndPos, ANCHOR_BOTTOM);
- AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_CLOSE), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM);
- AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), &rParent, wndPos, ANCHOR_ALL);
- AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PREV), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM);
- AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_NEXT), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM);
- //AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PAGE_NUMBER), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM);
- AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_SEARCH), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM);
-
- EndDeferWindowPos(hdWnds);
- MoveIeView(hWnd);
- break;
- }
- case WM_COMMAND:
- {
- switch (LOWORD(wParam))
- {
- case IDC_CLOSE:
- {
- SendMessage(hWnd, WM_CLOSE, 0, 0);
- break;
- }
- case IDC_PREV:
- {
- int finished = LoadPrev(hWnd);
- //EnableWindow(GetDlgItem(hWnd, IDC_PREV), !finished);
- //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), TRUE);
- break;
- }
- case IDC_NEXT:
- {
- int finished = LoadNext(hWnd);
- //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !finished);
- //EnableWindow(GetDlgItem(hWnd, IDC_PREV), TRUE);
- break;
- }
- case IDC_SEARCH:
- {
- HWND hSearch = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_SEARCH), hWnd, SearchDlgProc);
- if (hSearch == NULL)
- {
- char buffer[1024];
- sprintf(buffer, "Error #%d", GetLastError());
- MessageBoxA(0, buffer, "Error", MB_OK);
- }
- HistoryWindowData *data = (HistoryWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- SearchWindowData *searchData = (SearchWindowData *) malloc(sizeof(SearchWindowData));
- searchData->contact = data->contact;
- searchData->hHistoryWindow = hWnd;
- searchData->hLastFoundEvent = NULL;
- searchData->index = 0;
- SetWindowLongPtr(hSearch, DWLP_USER, (LONG_PTR)searchData);
- ShowWindow(hSearch, SW_SHOW);
- //sprintf(buffer, "Error #%d", GetLastError());
- //MessageBoxA(0, buffer, "Error", MB_OK);
- break;
- }
- }
- break;
- }
- default:
- {
- break;
- }
+ int bRTL = db_get_b(NULL, ModuleName, "EnableRTL", 0);
+ if (bRTL)
+ SetWindowLongPtr(hWnd, GWL_EXSTYLE, WS_EX_RTLREADING);
+
+ HWND hStatusBar = CreateWindow(STATUSCLASSNAME, //class
+ _T("-"), //title
+ WS_CHILD | WS_VISIBLE | SBARS_TOOLTIPS | SBARS_SIZEGRIP, //style
+ 0, 0, //x, y
+ 0, 0, //width, height
+ hWnd, //parent
+ (HMENU)IDC_STATUSBAR, //menu
+ hInstance, //instance
+ NULL); //lpParam
+ int x;
+ int widths[] = { x = 50, x += 50, x += 150, -1 };
+ int count = sizeof(widths) / sizeof(widths[0]);
+ SendMessage(hStatusBar, SB_SETPARTS, count, (LPARAM)widths);
+ //SendMessage(hStatusBar, SB_SETTIPTEXT, 1, (LPARAM) TranslateT("First event shown in page"));
+ //SendMessage(hStatusBar, SB_SETTIPTEXT, 2, (LPARAM) TranslateT("Last event shown in page"));
+ SendMessage(hStatusBar, SB_SETTEXT, 2 | SBT_POPOUT, (LPARAM)TranslateT("Out of a total of"));
}
+ return TRUE;
+
+ case WM_SHOWWINDOW:
+ Log("Inside WM_SHOWWINDOW ...");
+ LoadName(hWnd);
+ LoadIEView(hWnd);
+ LoadEvents(hWnd);
+ {
+ bool bAll = (data->itemsPerPage <= 0) || (data->itemsPerPage >= data->count);
+ int bLastFirst = db_get_b(NULL, ModuleName, "ShowLastPageFirst", 0);
+ if (!bLastFirst) {
+ EnableWindow(GetDlgItem(hWnd, IDC_PREV), FALSE);
+ EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !bAll);
+ }
+ else {
+ EnableWindow(GetDlgItem(hWnd, IDC_PREV), !bAll);
+ EnableWindow(GetDlgItem(hWnd, IDC_NEXT), FALSE);
+ }
+ EnableWindow(GetDlgItem(hWnd, IDC_SEARCH), !bAll);
+ }
+ break;
+
+ case WM_DESTROY:
+ DestroyIEView(hWnd);
+ free(data);
+ WindowList_Remove(hOpenWindowsList, hWnd);
+ break;
+
+ case WM_CLOSE:
+ if (IsWindowEnabled(GetDlgItem(hWnd, IDC_CLOSE)))
+ DestroyWindow(hWnd);
+ else
+ MessageBox(hWnd, TranslateT("You can't close the window now, wait for all events to load."), TranslateT("Error"), MB_OK | MB_ICONERROR);
+ break;
+
+ case WM_WINDOWPOSCHANGING:
+ {
+ HDWP hdWnds = BeginDeferWindowPos(6);
+ RECT rParent;
+ HWND hStatusBar = GetDlgItem(hWnd, IDC_STATUSBAR);
+ WINDOWPOS *wndPos = (WINDOWPOS *)lParam;
+ GetWindowRect(hWnd, &rParent);
+
+ //hdWnds = DeferWindowPos(hdWnds, hStatusBar, HWND_NOTOPMOST, wndPos->x, wndPos->y + wndPos->cy - statusHeight, statusWidth, statusHeight, SWP_NOZORDER);
+ SendMessage(hStatusBar, WM_SIZE, 0, 0);
+ if (wndPos->cx < MIN_HISTORY_WIDTH)
+ wndPos->cx = MIN_HISTORY_WIDTH;
+ if (wndPos->cy < MIN_HISTORY_HEIGHT)
+ wndPos->cy = MIN_HISTORY_HEIGHT;
+
+ //MoveWindow(hStatusBar, wndPos->x, wndPos->y + wndPos->cy - statusHeight - 2, statusWidth - 2, statusHeight, TRUE);
+ AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_STATUSBAR), &rParent, wndPos, ANCHOR_BOTTOM);
+ AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_CLOSE), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM);
+ AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), &rParent, wndPos, ANCHOR_ALL);
+ AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PREV), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM);
+ AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_NEXT), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM);
+ //AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PAGE_NUMBER), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM);
+ AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_SEARCH), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM);
+
+ EndDeferWindowPos(hdWnds);
+ MoveIeView(hWnd);
+ }
+ break;
+
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDC_CLOSE:
+ SendMessage(hWnd, WM_CLOSE, 0, 0);
+ break;
+
+ case IDC_PREV:
+ {
+ int finished = LoadPrev(hWnd);
+ //EnableWindow(GetDlgItem(hWnd, IDC_PREV), !finished);
+ //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), TRUE);
+ break;
+ }
+ case IDC_NEXT:
+ {
+ int finished = LoadNext(hWnd);
+ //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !finished);
+ //EnableWindow(GetDlgItem(hWnd, IDC_PREV), TRUE);
+ break;
+ }
+ case IDC_SEARCH:
+ HWND hSearch = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_SEARCH), hWnd, SearchDlgProc);
+ if (hSearch == NULL) {
+ char buffer[1024];
+ sprintf(buffer, "Error #%d", GetLastError());
+ MessageBoxA(0, buffer, "Error", MB_OK);
+ }
+ SearchWindowData *searchData = (SearchWindowData *)malloc(sizeof(SearchWindowData));
+ searchData->contact = data->contact;
+ searchData->hHistoryWindow = hWnd;
+ searchData->hLastFoundEvent = NULL;
+ searchData->index = 0;
+ SetWindowLongPtr(hSearch, DWLP_USER, (LONG_PTR)searchData);
+ ShowWindow(hSearch, SW_SHOW);
+ break;
+ }
+ break;
+ }
return 0;
}
-#include "prsht.h" //PSN_APPLY
-
INT_PTR CALLBACK OptionsDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
- switch (msg)
+ switch (msg) {
+ case WM_INITDIALOG:
+ TranslateDialogDefault(hWnd);
{
- case WM_INITDIALOG:
- {
- TranslateDialogDefault(hWnd);
- int count = db_get_dw(NULL, ModuleName, "EventsToLoad", 0);
- EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), count > 0);
- EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), count > 0);
-
- CheckDlgButton(hWnd, IDC_LOAD_ALL, count <= 0);
- CheckDlgButton(hWnd, IDC_LOAD_NUMBER, count > 0);
- CheckDlgButton(hWnd, IDC_ENABLE_RTL, (BOOL) db_get_b(NULL, ModuleName, "EnableRTL", 0));
- CheckDlgButton(hWnd, IDC_SHOW_LAST_FIRST, (BOOL) db_get_b(NULL, ModuleName, "ShowLastPageFirst", 0));
- CheckDlgButton(hWnd, IDC_LOAD_BACKGROUND, (BOOL) db_get_b(NULL, ModuleName, "UseWorkerThread", 0));
+ int count = db_get_dw(NULL, ModuleName, "EventsToLoad", 0);
+ EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), count > 0);
+ EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), count > 0);
+
+ CheckDlgButton(hWnd, IDC_LOAD_ALL, count <= 0);
+ CheckDlgButton(hWnd, IDC_LOAD_NUMBER, count > 0);
+ CheckDlgButton(hWnd, IDC_ENABLE_RTL, (BOOL)db_get_b(NULL, ModuleName, "EnableRTL", 0));
+ CheckDlgButton(hWnd, IDC_SHOW_LAST_FIRST, (BOOL)db_get_b(NULL, ModuleName, "ShowLastPageFirst", 0));
+ CheckDlgButton(hWnd, IDC_LOAD_BACKGROUND, (BOOL)db_get_b(NULL, ModuleName, "UseWorkerThread", 0));
+
+ TCHAR buffer[40];
+ _itot_s(count, buffer, 10);
+ SetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer);
+ }
+ break;
+
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDC_LOAD_ALL:
+ EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), FALSE);
+ EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), FALSE);
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ break;
+
+ case IDC_LOAD_NUMBER:
+ EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), TRUE);
+ EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), TRUE);
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ break;
+
+ case IDC_ENABLE_RTL:
+ case IDC_SHOW_LAST_FIRST:
+ case IDC_EVENTS_COUNT:
+ case IDC_LOAD_BACKGROUND:
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ break;
+ }
+ break;
+
+ case WM_NOTIFY:
+ switch (((LPNMHDR)lParam)->idFrom) {
+ case 0:
+ switch (((LPNMHDR)lParam)->code) {
+ case PSN_APPLY:
+ long count;
+ if (IsDlgButtonChecked(hWnd, IDC_LOAD_ALL))
+ count = 0;
+ else {
TCHAR buffer[1024];
- itot(count, buffer, 10);
- SetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer);
-
- break;
- }
- case WM_COMMAND:
- {
- switch (LOWORD(wParam))
- {
- case IDC_LOAD_ALL:
- {
- EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), FALSE);
- EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), FALSE);
- SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
- break;
- }
- case IDC_LOAD_NUMBER:
- {
- EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), TRUE);
- EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), TRUE);
- SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
- break;
- }
- case IDC_ENABLE_RTL:
- case IDC_SHOW_LAST_FIRST:
- case IDC_EVENTS_COUNT:
- case IDC_LOAD_BACKGROUND:
- {
- SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
- break;
- }
- }
- break;
- }
- case WM_NOTIFY:
- {
- switch(((LPNMHDR)lParam)->idFrom)
- {
- case 0:
- {
- switch (((LPNMHDR)lParam)->code)
- {
- case PSN_APPLY:
- {
- long count;
- if (IsDlgButtonChecked(hWnd, IDC_LOAD_ALL))
- {
- count = 0;
- }
- else{
- TCHAR buffer[1024];
- GetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer, sizeof(buffer));
- count = _tstol(buffer);
- count = (count < 0) ? 0 : count;
- }
- db_set_b(NULL, ModuleName, "ShowLastPageFirst", IsDlgButtonChecked(hWnd, IDC_SHOW_LAST_FIRST));
- db_set_b(NULL, ModuleName, "EnableRTL", IsDlgButtonChecked(hWnd, IDC_ENABLE_RTL));
- db_set_b(NULL, ModuleName, "UseWorkerThread", IsDlgButtonChecked(hWnd, IDC_LOAD_BACKGROUND));
- db_set_dw(NULL, ModuleName, "EventsToLoad", count);
-
- break;
- }
- }
- break;
- }
- }
- break;
- }
- default:
- {
- break;
+ GetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer, sizeof(buffer));
+ count = _tstol(buffer);
+ count = (count < 0) ? 0 : count;
}
+ db_set_b(NULL, ModuleName, "ShowLastPageFirst", IsDlgButtonChecked(hWnd, IDC_SHOW_LAST_FIRST));
+ db_set_b(NULL, ModuleName, "EnableRTL", IsDlgButtonChecked(hWnd, IDC_ENABLE_RTL));
+ db_set_b(NULL, ModuleName, "UseWorkerThread", IsDlgButtonChecked(hWnd, IDC_LOAD_BACKGROUND));
+ db_set_dw(NULL, ModuleName, "EventsToLoad", count);
+ }
}
+ break;
+ }
return 0;
}
-
-#include "commctrl.h" //tab control
-
INT_PTR CALLBACK SearchDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
- switch (msg)
+ SearchWindowData *data = (SearchWindowData *)GetWindowLongPtr(hWnd, DWLP_USER);
+
+ switch (msg) {
+ case WM_INITDIALOG:
+ if (MyEnableThemeDialogTexture)
+ MyEnableThemeDialogTexture((HWND)hWnd, ETDT_ENABLETAB);
+
+ TranslateDialogDefault(hWnd);
{
- case WM_INITDIALOG:
- {
- if (MyEnableThemeDialogTexture)
- {
- MyEnableThemeDialogTexture((HWND) hWnd, ETDT_ENABLETAB);
- }
- TranslateDialogDefault(hWnd);
- TCITEM tabItem = {0};
- tabItem.pszText = TranslateT("Text search");
- tabItem.mask = TCIF_TEXT;
- //MessageBoxA(0, "Before TCM_INSERTITEM 1", "Error", MB_OK);
- SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 0, (LPARAM) &tabItem);
- tabItem.pszText = TranslateT("Time search");
- //MessageBoxA(0, "Before TCM_INSERTITEM 2", "Error", MB_OK);
- SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 1, (LPARAM) &tabItem);
- //SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TIME), DTM_SETFORMAT, 0, (LPARAM) "HH:mm");
- //MessageBoxA(0, "Before CheckDlgButton", "Error", MB_OK);
- CheckDlgButton(hWnd, IDC_DIRECTION_DOWN, TRUE);
- return TRUE;
- break;
- }
- case WM_SHOWWINDOW:
- {
- SetFocus(GetDlgItem(hWnd, IDC_SEARCH_TEXT));
- break;
- }
- case WM_DESTROY:
- {
- SearchWindowData *data = (SearchWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- free(data);
- //DestroyWindow(hWnd);
- break;
- }
- case WM_CLOSE:
- {
- DestroyWindow(hWnd);
- break;
- }
- case WM_NOTIFY:
- {
- switch (((LPNMHDR) lParam)->idFrom)
- {
- case IDC_SEARCH_DATE:
- case IDC_SEARCH_TIME:
- {
- SearchWindowData *data = (SearchWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- data->hLastFoundEvent = NULL; //start from top if changes occur
- break;
- }
- case IDC_TABS:
- {
- switch (((LPNMHDR) lParam)->code)
- {
- case TCN_SELCHANGE:
- {
- int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0);
- ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_DATE), (tab == 1) ? SW_SHOW : SW_HIDE);
- ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TIME), (tab == 1) ? SW_SHOW : SW_HIDE);
- ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TEXT), (tab == 0) ? SW_SHOW : SW_HIDE);
- SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT_STATIC), WM_SETTEXT, 0, (LPARAM) ((tab == 0) ? _T("Text :") : _T("Time :")));
- break;
- }
- }
- break;
- }
- }
- break;
- }
- case WM_COMMAND:
- {
- switch (LOWORD(wParam))
- {
- case IDC_SEARCH_TEXT:
- {
- switch (HIWORD(wParam))
- {
- case EN_CHANGE:
- {
- SearchWindowData *data = (SearchWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- data->hLastFoundEvent = NULL; //start from top if changes occur
- break;
- }
- }
- break;
- }
- case IDCANCEL:
- {
- SendMessage(hWnd, WM_CLOSE, 0, 0);
- break;
- }
- case IDC_FIND_NEXT:
- {
- SearchWindowData *data = (SearchWindowData *) GetWindowLongPtr(hWnd, DWLP_USER);
- const HistoryWindowData *histData = (HistoryWindowData *) GetWindowLongPtr(data->hHistoryWindow, DWLP_USER);
- int direction = IsDlgButtonChecked(hWnd, IDC_DIRECTION_UP) ? DIRECTION_BACK : DIRECTION_FORWARD;
- int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0);
- int type = (tab == 0) ? SEARCH_TEXT : SEARCH_TIME;
- SearchResult searchResult;
- if (data->hLastFoundEvent == NULL)
- {
- data->index = (direction == DIRECTION_FORWARD) ? 0 : histData->count;
- }
- else{
- data->hLastFoundEvent = GetNeededEvent(data->hLastFoundEvent, 1, direction);
- }
-
- if (type == SEARCH_TEXT) //text search
- {
- TCHAR text[2048]; //TODO buffer overrun
- SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT), WM_GETTEXT, SIZEOF(text), (LPARAM) text);
- searchResult = SearchHistory(data->contact, data->hLastFoundEvent, text, direction, type);
- }
- else{//time search
- TimeSearchData tsData = {0};
- SYSTEMTIME date = {0}, time = {0};
- int res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_DATE), DTM_GETSYSTEMTIME, 0, (LPARAM) &date);
- tsData.flags = (res == GDT_VALID) ? TSDF_DATE_SET : 0;
- res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TIME), DTM_GETSYSTEMTIME, 0, (LPARAM) &time);
- if (res == GDT_VALID)
- {
- tsData.flags |= TSDF_TIME_SET;
- date.wHour = time.wHour;
- date.wMinute = time.wMinute;
- date.wSecond = time.wSecond;
- date.wMilliseconds = time.wMilliseconds;
- }
- tsData.time = date;
- searchResult = SearchHistory(data->contact, data->hLastFoundEvent, &tsData, direction, type);
- }
- if (searchResult.hEvent)
- {
- //char buffer[1024];
- //sprintf(buffer, "Found it: index = %ld hEvent = %p", searchResult.index, searchResult.hEvent);
- //MessageBox(0, buffer, "Yupppi", 0);
- data->index += (direction == DIRECTION_BACK) ? -searchResult.index : searchResult.index;
- LoadPage(data->hHistoryWindow, searchResult.hEvent, data->index, histData->itemsPerPage / 2, histData->itemsPerPage, DIRECTION_BACK);
- }
- else{
- MessageBox(0, TranslateT("Search finished. No more entries ..."), TranslateT("Information"), MB_OK | MB_ICONINFORMATION);
- }
- data->hLastFoundEvent = searchResult.hEvent;
- break;
- }
- }
- break;
+ TCITEM tabItem = { 0 };
+ tabItem.pszText = TranslateT("Text search");
+ tabItem.mask = TCIF_TEXT;
+ SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 0, (LPARAM)&tabItem);
+ tabItem.pszText = TranslateT("Time search");
+ SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 1, (LPARAM)&tabItem);
+ }
+
+ CheckDlgButton(hWnd, IDC_DIRECTION_DOWN, TRUE);
+ return TRUE;
+
+ case WM_SHOWWINDOW:
+ SetFocus(GetDlgItem(hWnd, IDC_SEARCH_TEXT));
+ break;
+
+ case WM_DESTROY:
+ free(data);
+ break;
+
+ case WM_CLOSE:
+ DestroyWindow(hWnd);
+ break;
+
+ case WM_NOTIFY:
+ switch (((LPNMHDR)lParam)->idFrom) {
+ case IDC_SEARCH_DATE:
+ case IDC_SEARCH_TIME:
+ data->hLastFoundEvent = NULL; //start from top if changes occur
+ break;
+
+ case IDC_TABS:
+ switch (((LPNMHDR)lParam)->code) {
+ case TCN_SELCHANGE:
+ int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0);
+ ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_DATE), (tab == 1) ? SW_SHOW : SW_HIDE);
+ ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TIME), (tab == 1) ? SW_SHOW : SW_HIDE);
+ ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TEXT), (tab == 0) ? SW_SHOW : SW_HIDE);
+ SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT_STATIC), WM_SETTEXT, 0, (LPARAM)((tab == 0) ? _T("Text :") : _T("Time :")));
+ break;
+ }
+ break;
+ }
+ break;
+
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDC_SEARCH_TEXT:
+ switch (HIWORD(wParam)) {
+ case EN_CHANGE:
+ data->hLastFoundEvent = NULL; //start from top if changes occur
+ break;
+ }
+ break;
+
+ case IDCANCEL:
+ SendMessage(hWnd, WM_CLOSE, 0, 0);
+ break;
+
+ case IDC_FIND_NEXT:
+ const HistoryWindowData *histData = (HistoryWindowData *)GetWindowLongPtr(data->hHistoryWindow, DWLP_USER);
+ int direction = IsDlgButtonChecked(hWnd, IDC_DIRECTION_UP) ? DIRECTION_BACK : DIRECTION_FORWARD;
+ int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0);
+ int type = (tab == 0) ? SEARCH_TEXT : SEARCH_TIME;
+ SearchResult searchResult;
+ if (data->hLastFoundEvent == NULL)
+ data->index = (direction == DIRECTION_FORWARD) ? 0 : histData->count;
+ else
+ data->hLastFoundEvent = GetNeededEvent(data->hLastFoundEvent, 1, direction);
+
+ if (type == SEARCH_TEXT) { //text search
+ TCHAR text[2048]; //TODO buffer overrun
+ SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT), WM_GETTEXT, SIZEOF(text), (LPARAM)text);
+ searchResult = SearchHistory(data->contact, data->hLastFoundEvent, text, direction, type);
+ }
+ else { //time search
+ TimeSearchData tsData = { 0 };
+ SYSTEMTIME date = { 0 }, time = { 0 };
+ int res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_DATE), DTM_GETSYSTEMTIME, 0, (LPARAM)&date);
+ tsData.flags = (res == GDT_VALID) ? TSDF_DATE_SET : 0;
+ res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TIME), DTM_GETSYSTEMTIME, 0, (LPARAM)&time);
+ if (res == GDT_VALID) {
+ tsData.flags |= TSDF_TIME_SET;
+ date.wHour = time.wHour;
+ date.wMinute = time.wMinute;
+ date.wSecond = time.wSecond;
+ date.wMilliseconds = time.wMilliseconds;
}
+ tsData.time = date;
+ searchResult = SearchHistory(data->contact, data->hLastFoundEvent, &tsData, direction, type);
+ }
+
+ if (searchResult.hEvent) {
+ //char buffer[1024];
+ //sprintf(buffer, "Found it: index = %ld hEvent = %p", searchResult.index, searchResult.hEvent);
+ //MessageBox(0, buffer, "Yupppi", 0);
+ data->index += (direction == DIRECTION_BACK) ? -searchResult.index : searchResult.index;
+ LoadPage(data->hHistoryWindow, searchResult.hEvent, data->index, histData->itemsPerPage / 2, histData->itemsPerPage, DIRECTION_BACK);
+ }
+ else MessageBox(0, TranslateT("Search finished. No more entries ..."), TranslateT("Information"), MB_OK | MB_ICONINFORMATION);
+
+ data->hLastFoundEvent = searchResult.hEvent;
+ break;
}
+ break;
+ }
return 0;
}