int DriverColorsDialog::exec() { SeasonData &sd = SeasonData::getInstance(); colors = ColorsManager::getInstance().getDriverColors(); int i = 0; for (; i < sd.getTeams().size(); ++i) { QList<LTDriver> drivers = sd.getMainDrivers(sd.getTeams()[i]); if (drivers.size() != 2) continue; if ((ui->verticalLayout->count()-2) <= i) { QHBoxLayout *layout = new QHBoxLayout(); QLabel *label = new QLabel(this); label->setText(QString("%1 %2").arg(drivers[0].no).arg(drivers[0].name)); label->updateGeometry(); QToolButton *button = new QToolButton(this); button->setMaximumHeight(16); button->setMaximumWidth(16); setButtonColor(button, /*sd.getCarColor(sd.getTeams()[i].driver1No)*/colors[i*2]); layout->addWidget(button); connect(button, SIGNAL(clicked()), this, SLOT(onColorButtonClicked())); button = new QToolButton(this); button->setText("Reset"); button->setMaximumHeight(20); layout->addWidget(button); connect(button, SIGNAL(clicked()), this, SLOT(onResetButtonClicked())); layout->addWidget(label); //colors.append(sd.getCarColor(sd.getTeams()[i].driver1No)); // layout = new QHBoxLayout(this); label = new QLabel(this); label->setText(QString("%1 %2").arg(drivers[1].no).arg(drivers[1].name)); label->updateGeometry(); button = new QToolButton(this); button->setMaximumHeight(16); button->setMaximumWidth(16); setButtonColor(button, /*sd.getCarColor(sd.getTeams()[i].driver2No)*/colors[i*2+1]); layout->addWidget(button); connect(button, SIGNAL(clicked()), this, SLOT(onColorButtonClicked())); button = new QToolButton(this); button->setText("Reset"); button->setMaximumHeight(20); layout->addWidget(button); connect(button, SIGNAL(clicked()), this, SLOT(onResetButtonClicked())); layout->addWidget(label); //colors.append(sd.getCarColor(sd.getTeams()[i].driver2No)); ui->verticalLayout->insertLayout(ui->verticalLayout->count() - 2, layout); } else { QHBoxLayout *layout = static_cast<QHBoxLayout*>(ui->verticalLayout->itemAt(i)->layout()); QLabel *label = static_cast<QLabel*>(layout->itemAt(2)->widget()); QToolButton *button = static_cast<QToolButton*>(layout->itemAt(0)->widget()); label->setText(QString("%1 %2").arg(drivers[0].no).arg(drivers[0].name)); setButtonColor(button, ColorsManager::getInstance().getCarColor(drivers[0].no)); label->setVisible(true); button->setVisible(true); button = static_cast<QToolButton*>(layout->itemAt(1)->widget()); button->setVisible(true); label = static_cast<QLabel*>(layout->itemAt(5)->widget()); button = static_cast<QToolButton*>(layout->itemAt(3)->widget()); label->setText(QString("%1 %2").arg(drivers[1].no).arg(drivers[1].name)); setButtonColor(button, ColorsManager::getInstance().getCarColor(drivers[1].no)); label->setVisible(true); button->setVisible(true); button = static_cast<QToolButton*>(layout->itemAt(4)->widget()); button->setVisible(true); } } for (; i < ui->verticalLayout->count()-2; ++i) { QHBoxLayout *layout = static_cast<QHBoxLayout*>(ui->verticalLayout->itemAt(i)->layout()); QLabel *label = static_cast<QLabel*>(layout->itemAt(2)->widget()); QToolButton *button = static_cast<QToolButton*>(layout->itemAt(0)->widget()); label->setVisible(false); button->setVisible(false); button = static_cast<QToolButton*>(layout->itemAt(1)->widget()); button->setVisible(false); label = static_cast<QLabel*>(layout->itemAt(5)->widget()); button = static_cast<QToolButton*>(layout->itemAt(3)->widget()); label->setVisible(false); button->setVisible(false); button = static_cast<QToolButton*>(layout->itemAt(4)->widget()); button->setVisible(false); } return QDialog::exec(); }
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())); }
WorkingSetToolTipWidget::WorkingSetToolTipWidget(QWidget* parent, WorkingSet* set, MainWindow* mainwindow) : QWidget(parent), m_set(set) { QVBoxLayout* layout = new QVBoxLayout(this); layout->setSpacing(0); layout->setMargin(0); connect(static_cast<Sublime::MainWindow*>(mainwindow)->area(), SIGNAL(viewAdded(Sublime::AreaIndex*,Sublime::View*)), SLOT(updateFileButtons()), Qt::QueuedConnection); connect(static_cast<Sublime::MainWindow*>(mainwindow)->area(), SIGNAL(viewRemoved(Sublime::AreaIndex*,Sublime::View*)), SLOT(updateFileButtons()), Qt::QueuedConnection); connect(Core::self()->workingSetControllerInternal(), SIGNAL(workingSetSwitched()), SLOT(updateFileButtons())); // title bar { QHBoxLayout* topLayout = new QHBoxLayout; m_setButton = new WorkingSetToolButton(this, set, mainwindow); m_setButton->hide(); topLayout->addSpacing(5); QLabel* icon = new QLabel; topLayout->addWidget(icon); topLayout->addSpacing(5); QLabel* name = new QLabel(i18n("<b>Working Set</b>")); name->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); topLayout->addWidget(name); topLayout->addSpacing(10); icon->setPixmap(m_setButton->icon().pixmap(name->sizeHint().height()+8, name->sizeHint().height()+8)); topLayout->addStretch(); m_openButton = new QPushButton; m_openButton->setFlat(true); topLayout->addWidget(m_openButton); m_deleteButton = new QPushButton; m_deleteButton->setIcon(KIcon("edit-delete")); m_deleteButton->setText(i18n("Delete")); m_deleteButton->setToolTip(i18n("Remove this working set. The contained documents are not affected.")); m_deleteButton->setFlat(true); connect(m_deleteButton, SIGNAL(clicked(bool)), m_set, SLOT(deleteSet())); connect(m_deleteButton, SIGNAL(clicked(bool)), this, SIGNAL(shouldClose())); topLayout->addWidget(m_deleteButton); layout->addLayout(topLayout); // horizontal line QFrame* line = new QFrame(); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Raised); layout->addWidget(line); } // everything else is added to the following widget which just has a different background color QVBoxLayout* bodyLayout = new QVBoxLayout; { QWidget* body = new QWidget(); body->setLayout(bodyLayout); layout->addWidget(body); body->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); } // document list actions { QHBoxLayout* actionsLayout = new QHBoxLayout; QLabel* label = new QLabel(i18n("Documents:")); label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); actionsLayout->addWidget(label); actionsLayout->addStretch(); m_mergeButton = new QPushButton; m_mergeButton->setIcon(KIcon("list-add")); m_mergeButton->setText(i18n("Add All")); m_mergeButton->setToolTip(i18n("Add all documents that are part of this working set to the currently active working set.")); m_mergeButton->setFlat(true); connect(m_mergeButton, SIGNAL(clicked(bool)), m_setButton, SLOT(mergeSet())); actionsLayout->addWidget(m_mergeButton); m_subtractButton = new QPushButton; m_subtractButton->setIcon(KIcon("list-remove")); m_subtractButton->setText(i18n("Subtract All")); m_subtractButton->setToolTip(i18n("Remove all documents that are part of this working set from the currently active working set.")); m_subtractButton->setFlat(true); connect(m_subtractButton, SIGNAL(clicked(bool)), m_setButton, SLOT(subtractSet())); actionsLayout->addWidget(m_subtractButton); bodyLayout->addLayout(actionsLayout); } QSet<QString> hadFiles; QVBoxLayout* filesLayout = new QVBoxLayout; filesLayout->setMargin(0); foreach(const QString& file, m_set->fileList()) { if(hadFiles.contains(file)) continue; hadFiles.insert(file); FileWidget* widget = new FileWidget; widget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); QHBoxLayout* fileLayout = new QHBoxLayout(widget); QToolButton* plusButton = new QToolButton; plusButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Maximum); fileLayout->addWidget(plusButton); WorkingSetFileLabel* fileLabel = new WorkingSetFileLabel; fileLabel->setTextFormat(Qt::RichText); // We add spaces behind and after, to make it look nicer fileLabel->setText(" " + Core::self()->projectController()->prettyFileName(KUrl(file)) + " "); fileLabel->setToolTip(i18nc("@info:tooltip", "Click to open and activate this document.")); fileLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); fileLayout->addWidget(fileLabel); fileLayout->setMargin(0); plusButton->setMaximumHeight(fileLabel->sizeHint().height() + 4); plusButton->setMaximumWidth(plusButton->maximumHeight()); plusButton->setObjectName(file); fileLabel->setObjectName(file); fileLabel->setCursor(QCursor(Qt::PointingHandCursor)); widget->m_button = plusButton; widget->m_label = fileLabel; filesLayout->addWidget(widget); m_fileWidgets.insert(file, widget); m_orderedFileWidgets.push_back(widget); connect(plusButton, SIGNAL(clicked(bool)), this, SLOT(buttonClicked(bool))); connect(fileLabel, SIGNAL(clicked()), this, SLOT(labelClicked())); } bodyLayout->addLayout(filesLayout); updateFileButtons(); connect(set, SIGNAL(setChangedSignificantly()), SLOT(updateFileButtons())); connect(mainwindow->area(), SIGNAL(changedWorkingSet(Sublime::Area*,QString,QString)), SLOT(updateFileButtons()), Qt::QueuedConnection); QMetaObject::invokeMethod(this, "updateFileButtons"); }