void ClipboardBrowser::connectModelAndDelegate() { Q_ASSERT(&m != model()); // set new model QAbstractItemModel *oldModel = model(); setModel(&m); delete oldModel; // delegate for rendering and editing items setItemDelegate(&d); connect( &m, SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(onDataChanged(QModelIndex,QModelIndex)) ); connect( &m, SIGNAL(tabNameChanged(QString)), SLOT(onTabNameChanged(QString)) ); connect( &m, SIGNAL(unloaded()), SLOT(onModelUnloaded()) ); // update on change connect( &m, SIGNAL(rowsInserted(QModelIndex, int, int)), SLOT(onModelDataChanged()) ); connect( &m, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), SLOT(onModelDataChanged()) ); connect( &m, SIGNAL(rowsInserted(QModelIndex, int, int)), SLOT(onItemCountChanged()) ); connect( &m, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(onItemCountChanged()) ); connect( &m, SIGNAL(rowsAboutToBeMoved(QModelIndex, int, int, QModelIndex, int)), SLOT(onModelDataChanged()) ); connect( &m, SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(onModelDataChanged()) ); connect( &d, SIGNAL(rowSizeChanged()), SLOT(updateCurrentPage()) ); connect( &m, SIGNAL(rowsInserted(QModelIndex, int, int)), &d, SLOT(rowsInserted(QModelIndex, int, int)) ); connect( &m, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), &d, SLOT(rowsRemoved(QModelIndex,int,int)) ); connect( &m, SIGNAL(rowsAboutToBeMoved(QModelIndex, int, int, QModelIndex, int)), &d, SLOT(rowsMoved(QModelIndex, int, int, QModelIndex, int)) ); connect( &m, SIGNAL(dataChanged(QModelIndex,QModelIndex)), &d, SLOT(dataChanged(QModelIndex,QModelIndex)) ); updateCurrentPage(); }
AMScanViewScanBar::AMScanViewScanBar(AMScanSetModel* model, int scanIndex, QWidget* parent) : QFrame(parent) { model_ = model; scanIndex_ = scanIndex; setObjectName("AMScanViewScanBar"); setStyleSheet("QFrame#AMScanViewScanBar { " "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(81, 81, 81, 255), stop:0.494444 rgba(81, 81, 81, 255), stop:0.5 rgba(64, 64, 64, 255), stop:1 rgba(64, 64, 64, 255));" "border-bottom: 1px solid black;" "}"); exclusiveModeOn_ = false; sourceButtons_.setExclusive(false); AMScan* source = model->scanAt(scanIndex_); // UI Setup: /////////////////////// QHBoxLayout* hl = new QHBoxLayout(); nameLabel_ = new QLabel(); if(source) nameLabel_->setText(source->name() + QString(" #%1").arg(source->number())); nameLabel_->setStyleSheet("color: white;"); hl->addWidget(nameLabel_); hl->addStretch(0); cramBar_ = new AMCramBarHorizontal(); if(source) { for(int i=0; i<source->dataSourceCount(); i++) { QColor color = model->plotColor(scanIndex, i); QToolButton* sourceButton = new AMColoredTextToolButton(color); /// \todo special buttons, with lines underneath that show the line color / style, and differentiate 1D, 2D datasets. sourceButton->setMaximumHeight(18); sourceButton->setText(source->dataSourceAt(i)->name()); /// \todo description or name? both? name if description is empty? sourceButton->setCheckable(true); sourceButton->setChecked(model->isVisible(scanIndex, i)); sourceButtons_.addButton(sourceButton, i); cramBar_->addWidget(sourceButton); // hide the button if this data source should be hidden from users: sourceButton->setHidden(model->isHiddenFromUsers(scanIndex, i)); sourceButton->setContextMenuPolicy(Qt::CustomContextMenu); connect(sourceButton, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onDataSourceButtonRightClicked(QPoint))); } } hl->addWidget(cramBar_); hl->addStretch(1); hl->setContentsMargins(6, 0, 6, 0); hl->setSpacing(24); setLayout(hl); connect(model, SIGNAL(rowsInserted(QModelIndex, int, int)), this, SLOT(onRowInserted(QModelIndex,int,int))); connect(model, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), this, SLOT(onRowAboutToBeRemoved(QModelIndex,int,int))); connect(model, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, SLOT(onRowRemoved(QModelIndex,int,int))); connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(onModelDataChanged(QModelIndex,QModelIndex))); connect(model, SIGNAL(exclusiveDataSourceChanged(QString)), this, SLOT(onExclusiveDataSourceChanged(QString))); connect(&sourceButtons_, SIGNAL(buttonClicked(int)), this, SLOT(onSourceButtonClicked(int))); // connect(closeButton_, SIGNAL(clicked()), this, SLOT(onCloseButtonClicked())); }