void WSuggestionPopup::modelDataChanged(const WModelIndex& topLeft, const WModelIndex& bottomRight) { if (topLeft.parent().isValid()) return; if (modelColumn_ < topLeft.column() || modelColumn_ > bottomRight.column()) return; for (int i = topLeft.row(); i <= bottomRight.row(); ++i) { WContainerWidget *w = dynamic_cast<WContainerWidget *>(impl_->widget(i)); WAnchor *anchor = dynamic_cast<WAnchor *>(w->widget(0)); WText *value = dynamic_cast<WText *>(anchor->widget(0)); WModelIndex index = model_->index(i, modelColumn_); boost::any d = index.data(); value->setText(asString(d)); TextFormat format = index.flags() & ItemIsXHTMLText ? XHTMLText : PlainText; value->setTextFormat(format); boost::any d2 = model_->data(i, modelColumn_, UserRole); if (d2.empty()) d2 = d; value->setAttributeValue("sug", asString(d2)); } }
WWidget *WToolBar::widget(int index) const { if (compact_) return impl_->widget(index); else { int current = 0; for (int i = 0; i < impl_->count(); ++i) { WWidget *w = impl_->widget(i); if (dynamic_cast<WSplitButton *>(w)) { if (index == current) return w; ++current; } else { WContainerWidget *group = dynamic_cast<WContainerWidget *>(w); if (index < current + group->count()) return group->widget(index - current); current += group->count(); } } return 0; } }
void WItemDelegate::setEditState(WWidget *editor, const boost::any& value) const { WContainerWidget *w = dynamic_cast<WContainerWidget *>(editor); WLineEdit *lineEdit = dynamic_cast<WLineEdit *>(w->widget(0)); lineEdit->setText(boost::any_cast<WT_USTRING>(value)); }
boost::any WItemDelegate::editState(WWidget *editor) const { WContainerWidget *w = dynamic_cast<WContainerWidget *>(editor); WLineEdit *lineEdit = dynamic_cast<WLineEdit *>(w->widget(0)); return boost::any(lineEdit->text()); }
void WSubMenuItem::updateItemWidget(WWidget *itemWidget) { if (subMenu_) { WContainerWidget *contents = dynamic_cast<WContainerWidget *>(itemWidget); WWidget *anchor = contents->widget(0); WMenuItem::updateItemWidget(anchor); } else WMenuItem::updateItemWidget(itemWidget); }
SignalBase& WSubMenuItem::activateSignal() { if (subMenu_) { WContainerWidget *contents = dynamic_cast<WContainerWidget *>(itemWidget()); WInteractWidget *wi = dynamic_cast<WInteractWidget *> (contents->widget(0)->webWidget()); return wi->clicked(); } else return WMenuItem::activateSignal(); }
WAnchor *WItemDelegate::anchorWidget(WidgetRef& w) { WAnchor *anchor = dynamic_cast<WAnchor *>(w.w->find("a")); if (anchor) return anchor; anchor = new WAnchor(); anchor->setObjectName("a"); WContainerWidget *wc = dynamic_cast<WContainerWidget *>(w.w->find("o")); if (wc) { /* * Convert (2) -> (4) */ int firstToMove = 0; WCheckBox *cb = dynamic_cast<WCheckBox *>(wc->widget(0)); if (cb) firstToMove = 1; wc->insertWidget(firstToMove, anchor); while (wc->count() > firstToMove + 1) { WWidget *c = wc->widget(firstToMove + 1); wc->removeWidget(c); anchor->addWidget(c); } } else { /* * Convert (1) -> (3) */ anchor->addWidget(w.w); w.w = anchor; } return anchor; }
void WSuggestionPopup::modelDataChanged(const WModelIndex& topLeft, const WModelIndex& bottomRight) { if (topLeft.parent().isValid()) return; if (modelColumn_ < topLeft.column() || modelColumn_ > bottomRight.column()) return; for (int i = topLeft.row(); i <= bottomRight.row(); ++i) { WContainerWidget *w = dynamic_cast<WContainerWidget *>(content_->widget(i)); WText *value = dynamic_cast<WText *>(w->widget(0)); boost::any d = model_->data(i, modelColumn_); value->setText(asString(d)); boost::any d2 = model_->data(i, modelColumn_, UserRole); if (d2.empty()) d2 = d; value->setAttributeValue("sug", asString(d2)); } }