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; }
void wxListCtrlXmlHandler::HandleCommonItemAttrs(wxListItem& item) { if (HasParam(wxT("align"))) item.SetAlign((wxListColumnFormat)GetStyle(wxT("align"))); if (HasParam(wxT("text"))) item.SetText(GetText(wxT("text"))); }
wxInt32 SortRoutine(wxInt32 Order, wxListItem &Item1, wxListItem &Item2) { if (Order == 1) return NaturalCompare(Item1.GetText(), Item2.GetText()); return NaturalCompare(Item2.GetText(), Item1.GetText()); }
void CViewBase::RestoreListColumnState(wxString strName, wxListItem& liColumnInfo) { CConfigManager* pConfig = wxGetApp().GetConfigManager(); long lTempValue = 0; if (pConfig->GetConfigValue(GetViewName(), strName, wxT("Width"), -1, &lTempValue)) { liColumnInfo.SetWidth(lTempValue); } m_pListPane->SetColumn(liColumnInfo.GetColumn(), liColumnInfo); }
bool wxListCtrl::GetColumn(int col, wxListItem& info) const { QTreeWidgetItem *qitem = m_qtTreeWidget->headerItem(); if ( qitem != NULL ) { info.SetText(wxQtConvertString(qitem->text(col))); info.SetAlign(wxQtConvertAlignFlag(qitem->textAlignment(col))); info.SetWidth(m_qtTreeWidget->columnWidth(col)); return true; } else return false; }
long wxListCtrl::DoInsertColumn(long col, const wxListItem& info) { QTreeWidgetItem *qitem = m_qtTreeWidget->headerItem(); if ( qitem != NULL ) { qitem->setText(col, wxQtConvertString(info.GetText())); qitem->setTextAlignment(col, wxQtConvertTextAlign(info.GetAlign())); if (info.GetWidth()) m_qtTreeWidget->setColumnWidth(col, info.GetWidth()); return col; } else return -1; }
// 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 wxCheckedListCtrl::InsertItem(wxListItem &info) { int additionalstate = GetAndRemoveAdditionalState(&info.m_state, info.m_stateMask); if (!(info.m_mask & wxLIST_MASK_STATE) || !(info.m_stateMask & wxLIST_STATE_ENABLED)) { // if not specified, the default additional state is ENABLED additionalstate = wxLIST_STATE_ENABLED; } // we always want to insert items with images... info.m_mask |= wxLIST_MASK_IMAGE; info.m_image = GetItemImageFromAdditionalState(additionalstate); info.SetBackgroundColour(GetBgColourFromAdditionalState(additionalstate)); int itemcount = GetItemCount(); wxASSERT_MSG(info.m_itemId <= itemcount, wxT("Invalid index !")); wxASSERT_MSG((int)m_stateList.GetCount() == (int)GetItemCount(), wxT("Something wrong !")); if (info.m_itemId == itemcount) { // we are adding a new item at the end of the list m_stateList.Add(additionalstate); } else { // we must shift all following items for (int i=itemcount; i > info.m_itemId; i++) m_stateList[i] = m_stateList[i-1]; m_stateList[info.m_itemId] = additionalstate; } return wxListCtrl::InsertItem(info); }
// Adjusts the index, so it jumps over the sort arrow images. void wxAdvancedListCtrl::SetColumnImage(wxListItem &li, wxInt32 ImageIndex) { if (ImageIndex < -1) ImageIndex = -1; li.SetImage(((ImageIndex == -1) ? ImageIndex : FIRST_IMAGE + ImageIndex)); }
bool wxCheckedListCtrl::GetItem(wxListItem &info) const { // wx internal wxListCtrl::GetItem remove from the state mask the // wxLIST_STATE_CHECKED & wxLIST_STATE_ENABLED bits since they // are not part of wx standard flags... so we need to check those // flags against the original wxListItem's statemask... wxListItem original(info); #ifdef __WXDEBUG__ // we always want to retrieve also the image state for checking purposes... info.m_mask |= wxLIST_MASK_IMAGE; #endif if (!wxListCtrl::GetItem(info)) return FALSE; // these are our additional supported states: read them from m_stateList bool checked = (m_stateList[info.m_itemId] & wxLIST_STATE_CHECKED) != 0; bool enabled = (m_stateList[info.m_itemId] & wxLIST_STATE_ENABLED) != 0; // now intercept state requests about enable or check mode if ((original.m_mask & wxLIST_MASK_STATE) && (original.m_stateMask & wxLIST_STATE_CHECKED)) { info.m_state |= (m_stateList[info.m_itemId] & wxLIST_STATE_CHECKED); info.m_stateMask |= wxLIST_STATE_CHECKED; info.m_mask |= wxLIST_MASK_STATE; // contains valid info ! } if ((original.m_mask & wxLIST_MASK_STATE) && (original.m_stateMask & wxLIST_STATE_ENABLED)) { info.m_state |= (m_stateList[info.m_itemId] & wxLIST_STATE_ENABLED); info.m_stateMask |= wxLIST_STATE_ENABLED; info.m_mask |= wxLIST_MASK_STATE; // contains valid info ! } // check that state & image are synch #if CLC_VBAM_USAGE if (info.GetColumn()) return TRUE; #endif #ifdef __WXDEBUG__ wxASSERT_MSG((int)m_stateList.GetCount() == (int)GetItemCount(), wxT("Something wrong ! See InsertItem()")); // read info by image index bool imagecheck = (info.m_image == wxCLC_CHECKED_IMGIDX) || (info.m_image == wxCLC_DISABLED_CHECKED_IMGIDX); bool imageenabled = (info.m_image == wxCLC_CHECKED_IMGIDX) || (info.m_image == wxCLC_UNCHECKED_IMGIDX); wxASSERT_MSG((checked && imagecheck) || (!checked && !imagecheck), wxT("This is item has checked state but it's shown as unchecked (or viceversa)")); wxASSERT_MSG((enabled && imageenabled) || (!enabled && !imageenabled), wxT("This is item has enabled state but it's shown as disabled (or viceversa)")); #endif return TRUE; }
bool wxCheckedListCtrl::SetItem(wxListItem& info) { // 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); }
void wxFileData::MakeItem( wxListItem &item ) { item.m_text = m_fileName; item.ClearAttributes(); if (IsExe()) item.SetTextColour(*wxRED); if (IsDir()) item.SetTextColour(*wxBLUE); item.m_image = m_image; if (IsLink()) { wxColour dg = wxTheColourDatabase->Find( _T("MEDIUM GREY") ); if ( dg.Ok() ) item.SetTextColour(dg); } item.m_data = (long)this; }
void wxAdvancedListCtrl::ColourListItem(wxListItem &info) { static bool SwapColour = false; wxColour col; wxListItemAttr *ListItemAttr = info.GetAttributes(); // Don't change a background colour we didn't set. if (ListItemAttr && ListItemAttr->HasBackgroundColour()) { return; } // light grey coolness if (SwapColour) col = ItemShade; else col = BgColor; SwapColour = !SwapColour; info.SetBackgroundColour(col); }
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; }
void CViewBase::SaveListColumnState(wxString strName, wxListItem& liColumnInfo) { CConfigManager* pConfig = wxGetApp().GetConfigManager(); pConfig->SetConfigValue(GetViewName(), strName, wxT("Width"), liColumnInfo.GetWidth()); }
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; }