bool wxCheckedListCtrl::SetItem(wxListItem &info) { #if CLC_VBAM_USAGE // only col 0 gets a checkbox if (info.GetColumn()) return wxListCtrl::SetItem(info); #endif // remove the checked & enabled states from the state flag: // we'll store them in our separate array int additionalstate = GetAndRemoveAdditionalState(&info.m_state, info.m_stateMask); // set image index // we will ignore the info.m_image field since we need // to overwrite it... if (info.m_mask & wxLIST_MASK_STATE) { // if some state is not included in the state mask, then get the state info // from our internal state array if (!(info.m_stateMask & wxLIST_STATE_ENABLED)) additionalstate |= (m_stateList[info.m_itemId] & wxLIST_STATE_ENABLED); if (!(info.m_stateMask & wxLIST_STATE_CHECKED)) additionalstate |= (m_stateList[info.m_itemId] & wxLIST_STATE_CHECKED); // state is valid: use it to determine the image to set... info.m_mask |= wxLIST_MASK_IMAGE; info.m_image = GetItemImageFromAdditionalState(additionalstate); // since when changing the background color, also the foreground color // and the font of the item are changed, we try to respect the user // choices of such attributes info.SetTextColour(this->GetItemTextColour(info.GetId())); #if wxCHECK_VERSION(2, 6, 2) // before wx 2.6.2 the wxListCtrl::SetItemFont function is missing info.SetFont(this->GetItemFont(info.GetId())); #endif // change the background color to respect the enabled/disabled status... info.SetBackgroundColour(GetBgColourFromAdditionalState(additionalstate)); m_stateList[info.m_itemId] = additionalstate; } else { // state is invalid; don't change image info.m_mask &= ~wxLIST_MASK_IMAGE; } // save the changes return wxListCtrl::SetItem(info); }
bool wxListCtrl::GetItem(wxListItem& info) const { const long id = info.GetId(); QTreeWidgetItem *qitem = QtGetItem(id); if ( qitem != NULL ) { if ( !info.m_mask ) // by default, get everything for backwards compatibility info.m_mask = -1; if ( info.m_mask & wxLIST_MASK_TEXT ) info.SetText(wxQtConvertString(qitem->text(info.GetColumn()))); if ( info.m_mask & wxLIST_MASK_DATA ) { QVariant variant = qitem->data(0, Qt::UserRole); info.SetData(variant.value<long>()); } if ( info.m_mask & wxLIST_MASK_STATE ) { info.m_state = wxLIST_STATE_DONTCARE; if ( info.m_stateMask & wxLIST_STATE_FOCUSED ) { if ( m_qtTreeWidget->currentIndex().row() == id ) info.m_state |= wxLIST_STATE_FOCUSED; } if ( info.m_stateMask & wxLIST_STATE_SELECTED ) { if ( qitem->isSelected() ) info.m_state |= wxLIST_STATE_SELECTED; } } return true; } else return false; }
bool wxListCtrl::SetItem(wxListItem& info) { const long id = info.GetId(); QTreeWidgetItem *qitem = QtGetItem(id); if ( qitem != NULL ) { if ((info.m_mask & wxLIST_MASK_TEXT) && !info.GetText().IsNull() ) qitem->setText(info.GetColumn(), wxQtConvertString(info.GetText())); qitem->setTextAlignment(info.GetColumn(), wxQtConvertTextAlign(info.GetAlign())); if ( info.m_mask & wxLIST_MASK_DATA ) { QVariant variant = qVariantFromValue(info.GetData()); qitem->setData(0, Qt::UserRole, variant); } if (info.m_mask & wxLIST_MASK_STATE) { if ((info.m_stateMask & wxLIST_STATE_FOCUSED) && (info.m_state & wxLIST_STATE_FOCUSED)) m_qtTreeWidget->setCurrentItem(qitem, 0); if (info.m_stateMask & wxLIST_STATE_SELECTED) qitem->setSelected(info.m_state & wxLIST_STATE_SELECTED); } if (info.m_mask & wxLIST_MASK_IMAGE) { if (info.m_image >= 0) { wxImageList *imglst = GetImageList(InReportView() ? wxIMAGE_LIST_SMALL : wxIMAGE_LIST_NORMAL); wxCHECK_MSG(imglst, false, "invalid listctrl imagelist"); const wxBitmap* bitmap = imglst->GetBitmapPtr(info.m_image); if (bitmap != NULL) { // set the new image: qitem->setIcon( info.GetColumn(), QIcon( *bitmap->GetHandle() )); } } else { // remove the image using and empty qt icon: qitem->setIcon( info.GetColumn(), QIcon() ); } } for (int col=0; col<GetColumnCount(); col++) { if ( info.GetFont().IsOk() ) qitem->setFont(col, info.GetFont().GetHandle() ); if ( info.GetTextColour().IsOk() ) qitem->setTextColor(col, info.GetTextColour().GetHandle()); if ( info.GetBackgroundColour().IsOk() ) qitem->setBackgroundColor(col, info.GetBackgroundColour().GetHandle()); } return true; } else return false; }
// Our variation of InsertItem, so we can do magical things! long wxAdvancedListCtrl::ALCInsertItem(wxListItem &info) { //Sort(); // TODO: We need to remember this item id, because the last item on the list // does not get sorted, we can't move sort either, because then the return // index would be stale. info.SetId(InsertItem(info)); ColourListItem(info); SetItem(info); return info.GetId(); }
long wxListCtrl::InsertItem(const wxListItem& info) { // default return value if not successful: int index = -1; wxASSERT_MSG( info.m_itemId != -1, wxS("Item ID must be set.") ); QTreeWidgetItem *qitem = new QTreeWidgetItem(); if ( qitem != NULL ) { // insert at the correct index and return it: m_qtTreeWidget->insertTopLevelItem(info.GetId(), qitem); // return the correct position of the item or -1 if not found: index = m_qtTreeWidget->indexOfTopLevelItem(qitem); if ( index != -1 ) { // temporarily copy the item info (we need a non-const instance) wxListItem tmp = info; // set the text, image, etc.: SetItem(tmp); } } return index; }