Пример #1
0
void DoSort(INT iColumn, BOOL bAscendant = TRUE)
{
    LV_COLUMN Column;
    ZeroMemory(&Column, sizeof(Column));
    Column.mask = LVCF_IMAGE | LVCF_SUBITEM;
    Column.iImage = 2;
    Column.iSubItem = 0;
    ListView_SetColumn(g_hListView, 0, &Column);
    Column.iSubItem = 1;
    ListView_SetColumn(g_hListView, 1, &Column);

    switch (iColumn)
    {
        case 0:
            Column.iSubItem = 0;
            if (bAscendant)
            {
                std::sort(g_Items.begin(), g_Items.end(),
                          ItemCompareByNameAscend);
                Column.iImage = 0;
                ListView_SetColumn(g_hListView, 0, &Column);
            }
            else
            {
                std::sort(g_Items.begin(), g_Items.end(),
                          ItemCompareByNameDescend);
                Column.iImage = 1;
                ListView_SetColumn(g_hListView, 0, &Column);
            }
            break;
        case 1:
            Column.iSubItem = 1;
            if (bAscendant)
            {
                std::sort(g_Items.begin(), g_Items.end(),
                          ItemCompareBySubAscend);
                Column.iImage = 0;
                ListView_SetColumn(g_hListView, 1, &Column);
            }
            else
            {
                std::sort(g_Items.begin(), g_Items.end(),
                          ItemCompareBySubDescend);
                Column.iImage = 1;
                ListView_SetColumn(g_hListView, 1, &Column);
            }
            break;
    }
    g_iSortColumn = iColumn;
    g_bSortAscendant = bAscendant;
    InvalidateRect(g_hListView, NULL, TRUE);
}
Пример #2
0
void LV_OnDelete(HWND hwnd, INT iRow = -1)
{
    if (iRow == -1)
        iRow = ListView_GetNextItem(hwnd, -1, LVNI_SELECTED);
    if (iRow == -1)
        return;

    UINT State = LVIS_SELECTED | LVIS_FOCUSED;
    ListView_SetItemState(g_hListView, iRow, State, State);

    WCHAR sz[MAX_STRING];
    LoadStringW(g_hInstance, IDS_QUERYDELETE, sz, _countof(sz));
    if (IDYES != MessageBoxW(g_hMainWnd, sz, g_szTitle,
                             MB_ICONINFORMATION | MB_YESNO))
    {
        return;
    }

    ListView_DeleteItem(hwnd, iRow);
    g_Items.erase(g_Items.begin() + iRow);
    g_bModified = TRUE;

    ListView_SetItemState(g_hListView, iRow, State, State);

    InvalidateRect(hwnd, NULL, TRUE);
}
Пример #3
0
ItemUpdate_TC::ItemUpdate_TC(position fieldpos, ITEMVECTOR &items) : BasicServerCommand(SC_ITEMUPDATE_TC) {
    Logger::writeMessage("rot_update", "sending new itemstack for pos("+Logger::toString(fieldpos.x)+", "+Logger::toString(fieldpos.y)+", "+Logger::toString(fieldpos.z)+")",false);
    addShortIntToBuffer(fieldpos.x);
    addShortIntToBuffer(fieldpos.y);
    addShortIntToBuffer(fieldpos.z);
    int16_t size = static_cast<unsigned char>(items.size());

    if (size > 255) {
        size = 255;
    }

    addUnsignedCharToBuffer(static_cast<uint8_t>(size));

    for (auto it = items.begin(); it != items.end(); ++it) {
        //we added 255 items
        if (size <= 0) {
            break;
        }

        addShortIntToBuffer(it->getId());
        addShortIntToBuffer(it->getNumber());
        Logger::writeMessage("rot_update", "adding item id: "+Logger::toString(it->getId())+" count: "+Logger::toString(static_cast<int>(it->getNumber())),false);
        size--;
    }
}
Пример #4
0
ItemUpdate_TC::ItemUpdate_TC(int16_t px, int16_t py, int16_t pz, ITEMVECTOR &items) : BasicServerCommand(SC_ITEMUPDATE_TC) {
    addShortIntToBuffer(px);
    addShortIntToBuffer(py);
    addShortIntToBuffer(pz);
    int16_t size = static_cast<unsigned char>(items.size());

    if (size > 255) {
        size = 255;
    }

    addUnsignedCharToBuffer(static_cast<uint8_t>(size));

    for (auto it = items.begin(); it != items.end(); ++it) {
        //we added 255 items
        if (size <= 0) {
            break;
        }

        addShortIntToBuffer(it->getId());
        addShortIntToBuffer(it->getNumber());
        size--;
    }
}