Palapeli::TriggerListView::TriggerListView(const QMap<QByteArray, Palapeli::Interactor*>& interactors, Palapeli::InteractorType interactorType, QWidget* parent) : KCategorizedView(parent) , m_categoryDrawer(new KCategoryDrawer) , m_baseModel(new QStandardItemModel(this)) , m_proxyModel(new Palapeli::TriggerListProxyModel(this)) , m_delegate(new Palapeli::TriggerListDelegate(this)) { //fill base model with interactors QMap<QByteArray, Palapeli::Interactor*>::const_iterator it1 = interactors.begin(), it2 = interactors.end(); for (; it1 != it2; ++it1) { //filter interactor Palapeli::Interactor* interactor = it1.value(); if (interactor->interactorType() != interactorType) continue; //create item for interactor QStandardItem* item = new QStandardItem; item->setData(interactor->description(), Qt::DisplayRole); item->setData(interactor->icon(), Qt::DecorationRole); item->setData(interactorType, Palapeli::InteractorTypeRole); item->setData(it1.key(), Palapeli::InteractorRole); item->setData(qVariantFromValue(Palapeli::Trigger()), Palapeli::TriggerRole); item->setData(categoryToString(interactor->category()), KCategorizedSortFilterProxyModel::CategoryDisplayRole); item->setData(interactor->category(), KCategorizedSortFilterProxyModel::CategorySortRole); m_baseModel->appendRow(item); } //setup model/view m_proxyModel->setSourceModel(m_baseModel); setModel(m_proxyModel); setItemDelegate(m_delegate); connect(m_delegate, SIGNAL(triggerChanged()), SIGNAL(associationsChanged())); // setCategoryDrawer(m_categoryDrawer); //FIXME: Why do I crash? }
void PathChooser::setBaseDirectory(const QString &directory) { if (d->m_baseDirectory == directory) return; d->m_baseDirectory = directory; triggerChanged(); }
void PSMoveQt::setTrigger(int trigger) { if (_trigger != trigger) { _trigger = trigger; emit triggerChanged(); } }
void PathChooser::setEnvironment(const Environment &env) { QString oldExpand = path(); d->m_environment = env; if (path() != oldExpand) { triggerChanged(); emit rawPathChanged(rawPath()); } }
/*! Mouse press event handler called when a mouse button is pressed. */ void UiSelfmixedTrigger::mousePressEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton) { int s = (int) mState; s++; if (s >= SelfmixedSignal::SelfmixedTriggerNum) s = 0; mState = (SelfmixedSignal::SelfmixedTriggerState)s; emit triggerChanged(); update(); } }
void oggencWidget::trigger_changed() { changed = ( kdoublenuminput_quality->value() != parameters->valueToFloat(ENCODER_OGGENC_QUALITY_KEY, ENCODER_OGGENC_QUALITY) || kintspinbox_minbitrate->value() != parameters->valueToInt(ENCODER_OGGENC_MINBITRATE_VALUE_KEY, ENCODER_OGGENC_MINBITRATE_VALUE) || checkBox_minbitrate->isChecked() != parameters->valueToBool(ENCODER_OGGENC_MINBITRATE_KEY) || kintspinbox_maxbitrate->value() != parameters->valueToInt(ENCODER_OGGENC_MAXBITRATE_VALUE_KEY, ENCODER_OGGENC_MAXBITRATE_VALUE) || checkBox_maxbitrate->isChecked() != parameters->valueToBool(ENCODER_OGGENC_MAXBITRATE_KEY) || qlineedit_suffix->text() != parameters->value(ENCODER_OGGENC_SUFFIX_KEY, ENCODER_OGGENC_SUFFIX) ); emit triggerChanged(); }
void MousePluginWidget::clearTrigger() { QString oldTrigger = m_triggerButton->trigger(); setTrigger(QString()); emit triggerChanged(oldTrigger, QString()); //byebye! m_pluginList->deleteLater(); m_aboutButton->deleteLater(); m_clearButton->deleteLater(); m_triggerButton->deleteLater(); m_configButton->deleteLater(); deleteLater(); }
Window::Window(QWidget* parent) : QWidget(parent) { QGridLayout* grid = new QGridLayout; grid->addWidget(createAccelerometerGroup(), 0, 0); grid->addWidget(createGyroscopeGroup(), 0, 1); grid->addWidget(createMagnetometerGroup(), 1, 0); grid->addWidget(createButtonsGroup(), 1, 1); setLayout(grid); setWindowTitle(tr("psmoveosc")); resize(480, 320); psm = new PSMoveQt(0); psm->setColor(Qt::red); psm->setEnabled(true); connect(psm, SIGNAL(accelerometerChanged()), this, SLOT(readAccelerometer())); connect(psm, SIGNAL(gyroChanged()), this, SLOT(readGyro())); connect(psm, SIGNAL(magnetometerChanged()), this, SLOT(readMagnetometer())); connect(psm, SIGNAL(triggerChanged()), this, SLOT(setTrigger())); connect(psm, SIGNAL(buttonPressed(int)), this, SLOT(onButton(int))); connect(psm, SIGNAL(buttonReleased(int)), this, SLOT(onButton(int))); }
void PathChooser::slotBrowse() { emit beforeBrowsing(); QString predefined = path(); QFileInfo fi(predefined); if (!predefined.isEmpty() && !fi.isDir()) { predefined = fi.path(); fi.setFile(predefined); } if ((predefined.isEmpty() || !fi.isDir()) && !d->m_initialBrowsePathOverride.isNull()) { predefined = d->m_initialBrowsePathOverride; fi.setFile(predefined); if (!fi.isDir()) { predefined.clear(); fi.setFile(QString()); } } // Prompt for a file/dir QString newPath; switch (d->m_acceptingKind) { case PathChooser::Directory: case PathChooser::ExistingDirectory: newPath = QFileDialog::getExistingDirectory(this, makeDialogTitle(tr("Choose Directory")), predefined); break; case PathChooser::ExistingCommand: case PathChooser::Command: newPath = QFileDialog::getOpenFileName(this, makeDialogTitle(tr("Choose Executable")), predefined, d->m_dialogFilter); newPath = appBundleExpandedPath(newPath); break; case PathChooser::File: // fall through newPath = QFileDialog::getOpenFileName(this, makeDialogTitle(tr("Choose File")), predefined, d->m_dialogFilter); newPath = appBundleExpandedPath(newPath); break; case PathChooser::SaveFile: newPath = QFileDialog::getSaveFileName(this, makeDialogTitle(tr("Choose File")), predefined, d->m_dialogFilter); break; case PathChooser::Any: { QFileDialog dialog(this); dialog.setFileMode(QFileDialog::AnyFile); dialog.setWindowTitle(makeDialogTitle(tr("Choose File"))); if (fi.exists()) dialog.setDirectory(fi.absolutePath()); // FIXME: fix QFileDialog so that it filters properly: lib*.a dialog.setNameFilter(d->m_dialogFilter); if (dialog.exec() == QDialog::Accepted) { // probably loop here until the *.framework dir match QStringList paths = dialog.selectedFiles(); if (!paths.isEmpty()) newPath = paths.at(0); } break; } default: break; } // Delete trailing slashes unless it is "/"|"\\", only if (!newPath.isEmpty()) { newPath = QDir::toNativeSeparators(newPath); if (newPath.size() > 1 && newPath.endsWith(QDir::separator())) newPath.truncate(newPath.size() - 1); setPath(newPath); } emit browsingFinished(); triggerChanged(); }
void PathChooser::setBaseFileName(const FileName &base) { d->m_baseDirectory = base.toString(); triggerChanged(); }
ProfileDataDialog::ProfileDataDialog(ProfileModel *profileModel, const int profileRow, QWidget *parent) : KDialog(parent) { Q_UNUSED(parent); profile_model = profileModel; if (!profile_model) { kDebug() << "ProfileModel is NULL!"; return; } profile_row = profileRow; QWidget *widget = new QWidget(this); ui.setupUi(widget); setMainWidget(widget); if (profile_row >= 0) { lame_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_LAME_PARAMETERS_INDEX)).toString()); oggenc_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_OGGENC_PARAMETERS_INDEX)).toString()); flac_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_FLAC_PARAMETERS_INDEX)).toString()); faac_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_FAAC_PARAMETERS_INDEX)).toString()); wave_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_WAVE_PARAMETERS_INDEX)).toString()); custom_parameters.fromString(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_CUSTOM_PARAMETERS_INDEX)).toString()); } lame_widget = new lameWidget(&lame_parameters, this); connect(lame_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); oggenc_widget = new oggencWidget(&oggenc_parameters, this); connect(oggenc_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); flac_widget = new flacWidget(&flac_parameters, this); connect(flac_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); faac_widget = new faacWidget(&faac_parameters, this); connect(faac_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); wave_widget = new waveWidget(&wave_parameters, this); connect(wave_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); custom_widget = new customWidget(&custom_parameters, this); connect(custom_widget, SIGNAL(triggerChanged()), this, SLOT(trigger_changed())); ui.stackedWidget_encoder->addWidget(lame_widget); ui.stackedWidget_encoder->addWidget(oggenc_widget); ui.stackedWidget_encoder->addWidget(flac_widget); ui.stackedWidget_encoder->addWidget(faac_widget); ui.stackedWidget_encoder->addWidget(wave_widget); ui.stackedWidget_encoder->addWidget(custom_widget); QMap<int,QString> encoders = EncoderAssistant::availableEncoderNameList(); QMap<int,QString>::const_iterator i = encoders.constBegin(); while (i != encoders.constEnd()) { ui.kcombobox_encoder->addItem(i.value(), i.key()); ++i; } connect(ui.kcombobox_encoder, SIGNAL(activated(int)), this, SLOT(set_encoder_by_combobox(int))); connect(ui.kpushbutton_pattern, SIGNAL(clicked()), this, SLOT(pattern_wizard())); ui.kpushbutton_pattern->setIcon(KIcon("tools-wizard")); connect(ui.kpushbutton_cover, SIGNAL(clicked()), this, SLOT(cover_settings())); connect(ui.kpushbutton_playlist, SIGNAL(clicked()), this, SLOT(playlist_settings())); connect(ui.kpushbutton_info, SIGNAL(clicked()), this, SLOT(info_settings())); connect(ui.kpushbutton_hashlist, SIGNAL(clicked()), this, SLOT(hashlist_settings())); connect(ui.kpushbutton_cuesheet, SIGNAL(clicked()), this, SLOT(cuesheet_settings())); connect(ui.kpushbutton_singlefile, SIGNAL(clicked()), this, SLOT(singlefile_settings())); connect(ui.checkBox_cover, SIGNAL(toggled(bool)), this, SLOT(enable_settings_cover(bool))); connect(ui.checkBox_playlist, SIGNAL(toggled(bool)), this, SLOT(enable_settings_playlist(bool))); connect(ui.checkBox_info, SIGNAL(toggled(bool)), this, SLOT(enable_settings_info(bool))); connect(ui.checkBox_hashlist, SIGNAL(toggled(bool)), this, SLOT(enable_settings_hashlist(bool))); connect(ui.checkBox_cuesheet, SIGNAL(toggled(bool)), this, SLOT(enable_settings_cuesheet(bool))); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(enable_settings_singlefile(bool))); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(disable_filenames(bool))); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(disable_playlist(bool))); if (profile_row >= 0) { setCaption(i18n("Modify Profile")); setButtons(KDialog::Ok | KDialog::Cancel | KDialog::Apply); ui.klineedit_name->setText(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_NAME_INDEX)).toString()); connect(ui.klineedit_name, SIGNAL(textEdited(const QString&)), this, SLOT(trigger_changed())); ui.klineedit_name->setCursorPosition(0); ui.kiconbutton_icon->setIcon(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ICON_INDEX)).toString()); connect(ui.kiconbutton_icon, SIGNAL(iconChanged(const QString&)), this, SLOT(trigger_changed())); set_encoder(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_ENCODER_SELECTED_INDEX)).toInt()); connect(ui.kcombobox_encoder, SIGNAL(activated(int)), this, SLOT(trigger_changed())); ui.klineedit_pattern->setText(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PATTERN_INDEX)).toString()); connect(ui.klineedit_pattern, SIGNAL(textEdited(const QString&)), this, SLOT(trigger_changed())); ui.klineedit_pattern->setCursorPosition(0); ui.checkBox_fat32compatible->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_FAT32COMPATIBLE_INDEX)).toBool()); connect(ui.checkBox_fat32compatible, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_underscore->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_UNDERSCORE_INDEX)).toBool()); connect(ui.checkBox_underscore, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_2digitstracknum->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_2DIGITSTRACKNUM_INDEX)).toBool()); connect(ui.checkBox_2digitstracknum, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_cover->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_INDEX)).toBool()); enable_settings_cover(ui.checkBox_cover->isChecked()); connect(ui.checkBox_cover, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_playlist->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_INDEX)).toBool()); enable_settings_playlist(ui.checkBox_playlist->isChecked()); connect(ui.checkBox_playlist, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_info->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_INDEX)).toBool()); enable_settings_info(ui.checkBox_info->isChecked()); connect(ui.checkBox_info, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_hashlist->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_HL_INDEX)).toBool()); enable_settings_hashlist(ui.checkBox_hashlist->isChecked()); connect(ui.checkBox_hashlist, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_cuesheet->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_CUE_INDEX)).toBool()); enable_settings_cuesheet(ui.checkBox_cuesheet->isChecked()); connect(ui.checkBox_cuesheet, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_singlefile->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SF_INDEX)).toBool()); enable_settings_singlefile(ui.checkBox_singlefile->isChecked()); connect(ui.checkBox_singlefile, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); ui.checkBox_replaygain->setChecked(profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_RG_INDEX)).toBool()); connect(ui.checkBox_replaygain, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); disable_playlist(ui.checkBox_singlefile->isChecked()); //profile data cover data pdcd_scale = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_SCALE_INDEX)).toBool(); pdcd_size = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_SIZE_INDEX)).toSize(); pdcd_format = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_FORMAT_INDEX)).toString(); pdcd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SC_NAME_INDEX)).toString(); //profile data playlist data pdpd_format = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_FORMAT_INDEX)).toString(); pdpd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_NAME_INDEX)).toString(); pdpd_abs_file_path = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_ABS_FILE_PATH_INDEX)).toBool(); pdpd_utf8 = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_PL_UTF8_INDEX)).toBool(); //profile data info data pdid_text = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_TEXT_INDEX)).toStringList(); pdid_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_NAME_INDEX)).toString(); pdid_suffix = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_INF_SUFFIX_INDEX)).toString(); //profile data hashlist data pdhd_format = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_HL_FORMAT_INDEX)).toString(); pdhd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_HL_NAME_INDEX)).toString(); //profile data cue sheet data pdud_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_CUE_NAME_INDEX)).toString(); //profile data single file data pdsd_pattern = profile_model->data(profile_model->index(profile_row, PROFILE_MODEL_COLUMN_SF_NAME_INDEX)).toString(); enableButtonApply(false); }
CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) : m_buildConfiguration(bc), m_configModel(new ConfigModel(this)), m_configFilterModel(new Utils::CategorySortFilterModel), m_configTextFilterModel(new Utils::CategorySortFilterModel) { QTC_CHECK(bc); setDisplayName(tr("CMake")); auto vbox = new QVBoxLayout(this); vbox->setMargin(0); auto container = new Utils::DetailsWidget; container->setState(Utils::DetailsWidget::NoSummary); vbox->addWidget(container); auto details = new QWidget(container); container->setWidget(details); auto mainLayout = new QGridLayout(details); mainLayout->setMargin(0); mainLayout->setColumnStretch(1, 10); auto project = static_cast<CMakeProject *>(bc->project()); auto buildDirChooser = new Utils::PathChooser; buildDirChooser->setBaseFileName(project->projectDirectory()); buildDirChooser->setFileName(bc->buildDirectory()); connect(buildDirChooser, &Utils::PathChooser::rawPathChanged, this, [this](const QString &path) { m_configModel->flush(); // clear out config cache... m_buildConfiguration->setBuildDirectory(Utils::FileName::fromString(path)); }); int row = 0; mainLayout->addWidget(new QLabel(tr("Build directory:")), row, 0); mainLayout->addWidget(buildDirChooser->lineEdit(), row, 1); mainLayout->addWidget(buildDirChooser->buttonAtIndex(0), row, 2); ++row; mainLayout->addItem(new QSpacerItem(20, 10), row, 0); ++row; m_errorLabel = new QLabel; m_errorLabel->setPixmap(Utils::Icons::CRITICAL.pixmap()); m_errorLabel->setVisible(false); m_errorMessageLabel = new QLabel; m_errorMessageLabel->setVisible(false); auto boxLayout = new QHBoxLayout; boxLayout->addWidget(m_errorLabel); boxLayout->addWidget(m_errorMessageLabel); mainLayout->addLayout(boxLayout, row, 0, 1, 3, Qt::AlignHCenter); ++row; m_warningLabel = new QLabel; m_warningLabel->setPixmap(Utils::Icons::WARNING.pixmap()); m_warningLabel->setVisible(false); m_warningMessageLabel = new QLabel; m_warningMessageLabel->setVisible(false); auto boxLayout2 = new QHBoxLayout; boxLayout2->addWidget(m_warningLabel); boxLayout2->addWidget(m_warningMessageLabel); mainLayout->addLayout(boxLayout2, row, 0, 1, 3, Qt::AlignHCenter); ++row; mainLayout->addItem(new QSpacerItem(20, 10), row, 0); ++row; m_filterEdit = new Utils::FancyLineEdit; m_filterEdit->setPlaceholderText(tr("Filter")); m_filterEdit->setFiltering(true); mainLayout->addWidget(m_filterEdit, row, 0, 1, 2); ++row; auto tree = new Utils::TreeView; connect(tree, &Utils::TreeView::activated, tree, [tree](const QModelIndex &idx) { tree->edit(idx); }); m_configView = tree; m_configView->viewport()->installEventFilter(this); m_configFilterModel->setSourceModel(m_configModel); m_configFilterModel->setFilterKeyColumn(0); m_configFilterModel->setFilterRole(ConfigModel::ItemIsAdvancedRole); m_configFilterModel->setFilterFixedString("0"); m_configTextFilterModel->setSourceModel(m_configFilterModel); m_configTextFilterModel->setSortRole(Qt::DisplayRole); m_configTextFilterModel->setFilterKeyColumn(-1); m_configTextFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); connect(m_configTextFilterModel, &QAbstractItemModel::layoutChanged, this, [this]() { QModelIndex selectedIdx = m_configView->currentIndex(); if (selectedIdx.isValid()) m_configView->scrollTo(selectedIdx); }); m_configView->setModel(m_configTextFilterModel); m_configView->setMinimumHeight(300); m_configView->setUniformRowHeights(true); m_configView->setSortingEnabled(true); m_configView->sortByColumn(0, Qt::AscendingOrder); auto stretcher = new Utils::HeaderViewStretcher(m_configView->header(), 0); m_configView->setSelectionMode(QAbstractItemView::SingleSelection); m_configView->setSelectionBehavior(QAbstractItemView::SelectItems); m_configView->setFrameShape(QFrame::NoFrame); m_configView->setItemDelegate(new ConfigModelItemDelegate(m_buildConfiguration->project()->projectDirectory(), m_configView)); QFrame *findWrapper = Core::ItemViewFind::createSearchableWrapper(m_configView, Core::ItemViewFind::LightColored); findWrapper->setFrameStyle(QFrame::StyledPanel); m_progressIndicator = new Utils::ProgressIndicator(Utils::ProgressIndicatorSize::Large, findWrapper); m_progressIndicator->attachToWidget(findWrapper); m_progressIndicator->raise(); m_progressIndicator->hide(); m_showProgressTimer.setSingleShot(true); m_showProgressTimer.setInterval(50); // don't show progress for < 50ms tasks connect(&m_showProgressTimer, &QTimer::timeout, [this]() { m_progressIndicator->show(); }); mainLayout->addWidget(findWrapper, row, 0, 1, 2); auto buttonLayout = new QVBoxLayout; m_addButton = new QPushButton(tr("&Add")); m_addButton->setToolTip(tr("Add a new configuration value.")); buttonLayout->addWidget(m_addButton); { m_addButtonMenu = new QMenu; m_addButtonMenu->addAction(tr("&Boolean"))->setData( QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::BOOLEAN))); m_addButtonMenu->addAction(tr("&String"))->setData( QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::STRING))); m_addButtonMenu->addAction(tr("&Directory"))->setData( QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::DIRECTORY))); m_addButtonMenu->addAction(tr("&File"))->setData( QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::FILE))); m_addButton->setMenu(m_addButtonMenu); } m_editButton = new QPushButton(tr("&Edit")); m_editButton->setToolTip(tr("Edit the current CMake configuration value.")); buttonLayout->addWidget(m_editButton); m_unsetButton = new QPushButton(tr("&Unset")); m_unsetButton->setToolTip(tr("Unset a value in the CMake configuration.")); buttonLayout->addWidget(m_unsetButton); m_resetButton = new QPushButton(tr("&Reset")); m_resetButton->setToolTip(tr("Reset all unapplied changes.")); m_resetButton->setEnabled(false); buttonLayout->addWidget(m_resetButton); buttonLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Fixed, QSizePolicy::Fixed)); m_showAdvancedCheckBox = new QCheckBox(tr("Advanced")); buttonLayout->addWidget(m_showAdvancedCheckBox); buttonLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding)); mainLayout->addLayout(buttonLayout, row, 2); connect(m_configView->selectionModel(), &QItemSelectionModel::currentChanged, this, &CMakeBuildSettingsWidget::updateSelection); ++row; m_reconfigureButton = new QPushButton(tr("Apply Configuration Changes")); m_reconfigureButton->setEnabled(false); mainLayout->addWidget(m_reconfigureButton, row, 0, 1, 3); updateAdvancedCheckBox(); setError(bc->error()); setWarning(bc->warning()); connect(project, &ProjectExplorer::Project::parsingStarted, this, [this]() { updateButtonState(); m_configView->setEnabled(false); m_showProgressTimer.start(); }); if (m_buildConfiguration->isParsing()) m_showProgressTimer.start(); else { m_configModel->setConfiguration(m_buildConfiguration->configurationFromCMake()); m_configView->expandAll(); } connect(project, &ProjectExplorer::Project::parsingFinished, this, [this, buildDirChooser, stretcher]() { m_configModel->setConfiguration(m_buildConfiguration->configurationFromCMake()); m_configView->expandAll(); m_configView->setEnabled(true); stretcher->stretch(); updateButtonState(); buildDirChooser->triggerChanged(); // refresh valid state... m_showProgressTimer.stop(); m_progressIndicator->hide(); }); connect(m_buildConfiguration, &CMakeBuildConfiguration::errorOccured, this, [this]() { m_showProgressTimer.stop(); m_progressIndicator->hide(); }); connect(m_configTextFilterModel, &QAbstractItemModel::modelReset, this, [this, stretcher]() { m_configView->expandAll(); stretcher->stretch(); }); connect(m_configModel, &QAbstractItemModel::dataChanged, this, &CMakeBuildSettingsWidget::updateButtonState); connect(m_configModel, &QAbstractItemModel::modelReset, this, &CMakeBuildSettingsWidget::updateButtonState); connect(m_showAdvancedCheckBox, &QCheckBox::stateChanged, this, &CMakeBuildSettingsWidget::updateAdvancedCheckBox); connect(m_filterEdit, &QLineEdit::textChanged, m_configTextFilterModel, &QSortFilterProxyModel::setFilterFixedString); connect(m_resetButton, &QPushButton::clicked, m_configModel, &ConfigModel::resetAllChanges); connect(m_reconfigureButton, &QPushButton::clicked, this, [this]() { m_buildConfiguration->setConfigurationForCMake(m_configModel->configurationForCMake()); }); connect(m_unsetButton, &QPushButton::clicked, this, [this]() { m_configModel->toggleUnsetFlag(mapToSource(m_configView, m_configView->currentIndex())); }); connect(m_editButton, &QPushButton::clicked, this, [this]() { QModelIndex idx = m_configView->currentIndex(); if (idx.column() != 1) idx = idx.sibling(idx.row(), 1); m_configView->setCurrentIndex(idx); m_configView->edit(idx); }); connect(m_addButtonMenu, &QMenu::triggered, this, [this](QAction *action) { ConfigModel::DataItem::Type type = static_cast<ConfigModel::DataItem::Type>(action->data().value<int>()); QString value = tr("<UNSET>"); if (type == ConfigModel::DataItem::BOOLEAN) value = QString::fromLatin1("OFF"); m_configModel->appendConfiguration(tr("<UNSET>"), value, type); const Utils::TreeItem *item = m_configModel->findNonRootItem([&value, type](Utils::TreeItem *item) { ConfigModel::DataItem dataItem = ConfigModel::dataItemFromIndex(item->index()); return dataItem.key == tr("<UNSET>") && dataItem.type == type && dataItem.value == value; }); QModelIndex idx = m_configModel->indexForItem(item); idx = m_configTextFilterModel->mapFromSource(m_configFilterModel->mapFromSource(idx)); m_configView->scrollTo(idx); m_configView->setCurrentIndex(idx); m_configView->edit(idx); }); connect(bc, &CMakeBuildConfiguration::errorOccured, this, &CMakeBuildSettingsWidget::setError); connect(bc, &CMakeBuildConfiguration::warningOccured, this, &CMakeBuildSettingsWidget::setWarning); updateFromKit(); connect(m_buildConfiguration->target(), &ProjectExplorer::Target::kitChanged, this, &CMakeBuildSettingsWidget::updateFromKit); connect(m_buildConfiguration, &CMakeBuildConfiguration::enabledChanged, this, [this]() { setError(m_buildConfiguration->disabledReason()); setConfigurationForCMake(); }); connect(m_buildConfiguration, &CMakeBuildConfiguration::configurationForCMakeChanged, this, [this]() { setConfigurationForCMake(); }); updateSelection(QModelIndex(), QModelIndex()); }
MousePluginWidget::MousePluginWidget(const QString &pluginName, const QString &trigger, QGridLayout *layoutHack, QWidget *parent) : QObject(parent), m_configDlg(0), m_containment(0), m_lastConfigLocation(trigger), m_tempConfigParent(QString(), KConfig::SimpleConfig) { KPluginInfo::List plugins = Plasma::ContainmentActions::listContainmentActionsInfo(); if (plugins.isEmpty()) { //panic!! QLabel *fail = new QLabel(i18n("No plugins found, check your installation."), parent); layoutHack->addWidget(fail, 0, 0); return; } //make us some widgets m_pluginList = new QComboBox(parent); m_aboutButton = new QToolButton(parent); m_clearButton = new QToolButton(parent); m_triggerButton = new MouseInputButton(parent); m_configButton = new QToolButton(parent); //m_ui.description->setText(plugin.comment()); //plugin list //FIXME is there some way to share this across all the entries? foreach (const KPluginInfo& plugin, plugins) { if (plugin.property("NoDisplay").toBool()) { continue; } m_pluginList->addItem(KIcon(plugin.icon()), plugin.name(), QVariant::fromValue(plugin)); if (plugin.pluginName() == pluginName) { m_pluginList->setCurrentIndex(m_pluginList->count() - 1); m_plugin = plugin; } } if (! m_plugin.isValid()) { //probably an empty string; pick the first one m_pluginList->setCurrentIndex(0); m_plugin = plugins.first(); } //I can haz config? m_tempConfig = KConfigGroup(&m_tempConfigParent, "test"); if (!m_plugin.property("X-Plasma-HasConfigurationInterface").toBool()) { m_configButton->setVisible(false); } setTrigger(trigger); //pretty icons for the buttons m_aboutButton->setIcon(KIcon("dialog-information")); m_aboutButton->setToolTip(i18nc("About mouse action", "About")); m_triggerButton->setIcon(KIcon("input-mouse")); m_configButton->setIcon(KIcon("configure")); m_configButton->setToolTip(i18nc("Configure mouse action", "Configure")); m_clearButton->setIcon(KIcon("list-remove")); m_clearButton->setToolTip(i18nc("Remove mouse action", "Remove")); //HACK //FIXME what's the Right Way to do this? int row = layoutHack->rowCount(); layoutHack->addWidget(m_triggerButton, row, 0); layoutHack->addWidget(m_pluginList, row, 1); layoutHack->addWidget(m_configButton, row, 2); layoutHack->addWidget(m_aboutButton, row, 3); layoutHack->addWidget(m_clearButton, row, 4); //connect connect(m_pluginList, SIGNAL(currentIndexChanged(int)), this, SLOT(setPlugin(int))); connect(m_triggerButton, SIGNAL(triggerChanged(QString,QString)), this, SLOT(changeTrigger(QString,QString))); connect(m_configButton, SIGNAL(clicked()), this, SLOT(configure())); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clearTrigger())); connect(m_aboutButton, SIGNAL(clicked()), this, SLOT(showAbout())); }
void MousePluginWidget::changeTrigger(const QString &oldTrigger, const QString& newTrigger) { updateConfig(newTrigger); emit triggerChanged(oldTrigger, newTrigger); }