void SearchResults::addItem(int pos, bool progress) { int colPos[colCount]; getColPos(colPos); int id = ListFrame::addItem(items[pos].data.name, getApp()->getImageLibrary()->getListIndex("IconReplay"), pos); if (colPos[colDate] >= 0 && items[pos].data.ftime) setItemText(id, colPos[colDate], format_systime(items[pos].data.ftime, "%c")); if (colPos[colSize] >= 0) setItemText(id, colPos[colSize], String::format("%d KB", (items[pos].data.size + 1023) / 1024)); if (colPos[colName] >= 0) setItemText(id, colPos[colName], items[pos].data.gameName); if (colPos[colLineup] >= 0) setItemText(id, colPos[colLineup], items[pos].data.lineup); if (colPos[colLength] >= 0) setItemText(id, colPos[colLength], format_time(items[pos].data.gameLength)); if (colPos[colMode] >= 0) setItemText(id, colPos[colMode], items[pos].data.gameMode); if (progress) { for (int i = 0; i < colCount; i++) if (colPos[i] >= 0 && cfg.colWidth[i] < 0) setColumnWidth(colPos[i], cfg.colWidth[i]); } }
//===================>>> vedTextEditor::TextMouseDown <<<==================== void vedTextEditor::TextMouseDown(int row, int col, int button) { static int clicks = 0; int btn = (GetFileType() == gccError || GetFileType() == bccError) ? 1 : button; long oldLine = GetCurLine(); // remember current position int oldCol = getColPos(); vTextEditor::TextMouseDown(row, col, btn); // translate to left if (button == 1 && oldLine == GetCurLine() && oldCol == getColPos()) // double click... { ++clicks; if (clicks > 3) clicks = 1; setSelection(clicks); } else { clicks = 0; } }
void SearchResults::rebuild() { EnterCriticalSection(&lock); static char colNames[colCount][32] = { "Name", "Date", "Size", "Game name", "Lineup", "Length", "Mode" }; int colPos[colCount]; getColPos(colPos); int colOrder[colCount]; int numOrder = 0; for (int i = 0; i < colCount; i++) if (colPos[cfg.colOrder[i]] >= 0) colOrder[numOrder++] = colPos[cfg.colOrder[i]]; Dictionary<uint32> selected; for (int sel = ListView_GetNextItem(hWnd, -1, LVNI_SELECTED); sel >= 0; sel = ListView_GetNextItem(hWnd, sel, LVNI_SELECTED)) selected.set(items[sel].path, 1); int scrollPosX = GetScrollPos(hWnd, SB_HORZ); int scrollPosY = GetScrollPos(hWnd, SB_VERT); if (items.length() > 0) { RECT rc; ListView_GetItemRect(hWnd, 0, &rc, LVIR_BOUNDS); scrollPosY *= rc.bottom - rc.top; } setRedraw(false); clear(); clearColumns(); for (int i = 0; i < colCount; i++) if (colPos[i] >= 0) insertColumn(colPos[i], colNames[i]); if (colPos[colName] >= 0) setColumnUTF8(colPos[colName], true); ListView_SetColumnOrderArray(hWnd, numOrder, colOrder); int colSort = (cfg.colSort[0] & 0x80000000 ? ~cfg.colSort[0] : cfg.colSort[0]); if (colSort >= 0 && colSort < colCount && colPos[colSort] >= 0 && items.length() > 0) { HBITMAP image = NULL; if (cfg.colSort[0] & 0x80000000) image = getApp()->getImageLibrary()->getBitmap("SortUp"); else image = getApp()->getImageLibrary()->getBitmap("SortDown"); if (image) { HWND hHeader = ListView_GetHeader(hWnd); HDITEM hdi; memset(&hdi, 0, sizeof hdi); hdi.mask = HDI_FORMAT; Header_GetItem(hHeader, colSort, &hdi); hdi.mask |= HDI_BITMAP; hdi.fmt |= HDF_BITMAP | HDF_BITMAP_ON_RIGHT; hdi.hbm = image; Header_SetItem(hHeader, colSort, &hdi); } } items.sort(compItems); for (int i = 0; i < items.length(); i++) addItem(i, false); for (int i = 0; i < items.length(); i++) if (selected.has(items[i].path)) ListView_SetItemState(hWnd, i, LVIS_SELECTED, LVIS_SELECTED); for (int i = 0; i < colCount; i++) if (colPos[i] >= 0) setColumnWidth(colPos[i], cfg.colWidth[i]); setRedraw(true); ListView_Scroll(hWnd, scrollPosX, scrollPosY); LeaveCriticalSection(&lock); }