Changeset View
Changeset View
Standalone View
Standalone View
kcm/src/widget.cpp
Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Line(s) | |||||
44 | #include <QDir> | 44 | #include <QDir> | ||
45 | #include <QStandardPaths> | 45 | #include <QStandardPaths> | ||
46 | #include <KLocalizedString> | 46 | #include <KLocalizedString> | ||
47 | #include <QComboBox> | 47 | #include <QComboBox> | ||
48 | #include <QPushButton> | 48 | #include <QPushButton> | ||
49 | #include <QQuickView> | 49 | #include <QQuickView> | ||
50 | #include <QQuickWidget> | 50 | #include <QQuickWidget> | ||
51 | 51 | | |||
52 | #include "ui_kscreen_widget.h" | ||||
53 | | ||||
52 | #define QML_PATH "kcm_kscreen/qml/" | 54 | #define QML_PATH "kcm_kscreen/qml/" | ||
53 | 55 | | |||
54 | Widget::Widget(QWidget *parent) | 56 | Widget::Widget(QWidget *parent) | ||
55 | : QWidget(parent) | 57 | : QWidget(parent) | ||
58 | , ui(new Ui::KScreenWidget()) | ||||
56 | { | 59 | { | ||
57 | qRegisterMetaType<QQuickView*>(); | 60 | qRegisterMetaType<QQuickView*>(); | ||
58 | 61 | | |||
59 | setMinimumHeight(550); | 62 | ui->setupUi(this); | ||
60 | 63 | ui->quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); | |||
61 | QVBoxLayout *layout = new QVBoxLayout(this); | 64 | connect(ui->primaryCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), | ||
62 | | ||||
63 | QSplitter *splitter = new QSplitter(Qt::Vertical, this); | | |||
64 | layout->addWidget(splitter); | | |||
65 | | ||||
66 | mDeclarativeView = new QQuickWidget(); | | |||
67 | mDeclarativeView->setResizeMode(QQuickWidget::SizeRootObjectToView); | | |||
68 | mDeclarativeView->setMinimumHeight(280); | | |||
69 | splitter->addWidget(mDeclarativeView); | | |||
70 | | ||||
71 | QWidget *widget = new QWidget(this); | | |||
72 | splitter->addWidget(widget); | | |||
73 | splitter->setStretchFactor(1, 1); | | |||
74 | widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); | | |||
75 | | ||||
76 | QVBoxLayout *vbox = new QVBoxLayout(widget); | | |||
77 | const int topMargin = style()->pixelMetric(QStyle::PM_LayoutTopMargin, nullptr, this); | | |||
78 | vbox->setContentsMargins(0, topMargin, 0, 0); | | |||
79 | widget->setLayout(vbox); | | |||
80 | | ||||
81 | QHBoxLayout *hbox = new QHBoxLayout; | | |||
82 | vbox->addLayout(hbox); | | |||
83 | | ||||
84 | mPrimaryCombo = new QComboBox(this); | | |||
85 | mPrimaryCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents); | | |||
86 | mPrimaryCombo->addItem(i18n("No Primary Output")); | | |||
87 | connect(mPrimaryCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), | | |||
88 | this, &Widget::primaryOutputSelected); | 65 | this, &Widget::primaryOutputSelected); | ||
89 | mPrimaryLabel = new QLabel(i18n("Primary display:")); | | |||
90 | hbox->addWidget(mPrimaryLabel); | | |||
91 | hbox->addWidget(mPrimaryCombo); | | |||
92 | | ||||
93 | hbox->addStretch(); | | |||
94 | 66 | | |||
95 | #ifdef WITH_PROFILES | 67 | #ifdef WITH_PROFILES | ||
96 | mProfilesModel = new ProfilesModel(this); | 68 | mProfilesModel = new ProfilesModel(this); | ||
97 | 69 | | |||
98 | connect(mProfilesModel, &ProfilesModel::modelUpdated()), | 70 | connect(mProfilesModel, &ProfilesModel::modelUpdated()), | ||
99 | this, &Widget::slotProfilesUpdated); | 71 | this, &Widget::slotProfilesUpdated); | ||
100 | mProfilesCombo = new QComboBox(this); | 72 | mProfilesCombo = new QComboBox(this); | ||
101 | mProfilesCombo->setModel(mProfilesModel); | 73 | mProfilesCombo->setModel(mProfilesModel); | ||
102 | mProfilesCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents); | 74 | mProfilesCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents); | ||
103 | hbox->addWidget(new QLabel(i18n("Active profile"))); | 75 | hbox->addWidget(new QLabel(i18n("Active profile"))); | ||
104 | hbox->addWidget(mProfilesCombo); | 76 | hbox->addWidget(mProfilesCombo); | ||
105 | #endif | 77 | #endif | ||
106 | 78 | | |||
107 | mControlPanel = new ControlPanel(this); | 79 | mControlPanel = new ControlPanel(this); | ||
108 | connect(mControlPanel, &ControlPanel::changed, | 80 | connect(mControlPanel, &ControlPanel::changed, | ||
109 | this, &Widget::changed); | 81 | this, &Widget::changed); | ||
110 | vbox->addWidget(mControlPanel); | 82 | ui->controlPanelLayout->addWidget(mControlPanel); | ||
111 | 83 | | |||
112 | mUnifyButton = new QPushButton(i18n("Unify Outputs"), this); | 84 | connect(ui->unifyButton, &QPushButton::released, | ||
113 | connect(mUnifyButton, &QPushButton::released, | | |||
114 | [this]{ | 85 | [this]{ | ||
115 | slotUnifyOutputs(); | 86 | slotUnifyOutputs(); | ||
116 | }); | 87 | }); | ||
117 | 88 | | |||
118 | vbox->addWidget(mUnifyButton); | 89 | connect(ui->scaleAllOutputsButton, &QPushButton::released, | ||
119 | | ||||
120 | mScaleAllOutputsButton = new QPushButton(i18n("Scale Display"), this); | | |||
121 | connect(mScaleAllOutputsButton, &QPushButton::released, | | |||
122 | [this] { | 90 | [this] { | ||
123 | QPointer<ScalingConfig> dialog = new ScalingConfig(mConfig->outputs(), this); | 91 | QPointer<ScalingConfig> dialog = new ScalingConfig(mConfig->outputs(), this); | ||
124 | dialog->exec(); | 92 | dialog->exec(); | ||
125 | delete dialog; | 93 | delete dialog; | ||
126 | }); | 94 | }); | ||
127 | 95 | | |||
128 | vbox->addWidget(mScaleAllOutputsButton); | | |||
129 | | ||||
130 | | ||||
131 | mOutputTimer = new QTimer(this); | 96 | mOutputTimer = new QTimer(this); | ||
132 | connect(mOutputTimer, &QTimer::timeout, | 97 | connect(mOutputTimer, &QTimer::timeout, | ||
133 | this, &Widget::clearOutputIdentifiers); | 98 | this, &Widget::clearOutputIdentifiers); | ||
134 | 99 | | |||
135 | loadQml(); | 100 | loadQml(); | ||
136 | } | 101 | } | ||
137 | 102 | | |||
138 | Widget::~Widget() | 103 | Widget::~Widget() | ||
Show All 40 Lines | 143 | connect(mConfig.data(), &KScreen::Config::outputAdded, | |||
179 | this, &Widget::outputAdded); | 144 | this, &Widget::outputAdded); | ||
180 | connect(mConfig.data(), &KScreen::Config::outputRemoved, | 145 | connect(mConfig.data(), &KScreen::Config::outputRemoved, | ||
181 | this, &Widget::outputRemoved); | 146 | this, &Widget::outputRemoved); | ||
182 | connect(mConfig.data(), &KScreen::Config::primaryOutputChanged, | 147 | connect(mConfig.data(), &KScreen::Config::primaryOutputChanged, | ||
183 | this, &Widget::primaryOutputChanged); | 148 | this, &Widget::primaryOutputChanged); | ||
184 | 149 | | |||
185 | mScreen->setConfig(mConfig); | 150 | mScreen->setConfig(mConfig); | ||
186 | mControlPanel->setConfig(mConfig); | 151 | mControlPanel->setConfig(mConfig); | ||
187 | mUnifyButton->setEnabled(mConfig->outputs().count() > 1); | 152 | ui->unifyButton->setEnabled(mConfig->outputs().count() > 1); | ||
188 | mScaleAllOutputsButton->setVisible(!mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PerOutputScaling)); | 153 | ui->scaleAllOutputsButton->setVisible(!mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PerOutputScaling)); | ||
189 | 154 | | |||
190 | for (const KScreen::OutputPtr &output : mConfig->outputs()) { | 155 | for (const KScreen::OutputPtr &output : mConfig->outputs()) { | ||
191 | outputAdded(output); | 156 | outputAdded(output); | ||
192 | } | 157 | } | ||
193 | 158 | | |||
194 | // Select the primary (or only) output by default | 159 | // Select the primary (or only) output by default | ||
195 | QMLOutput *qmlOutput = mScreen->primaryOutput(); | 160 | QMLOutput *qmlOutput = mScreen->primaryOutput(); | ||
196 | if (qmlOutput) { | 161 | if (qmlOutput) { | ||
Show All 18 Lines | 178 | { | |||
215 | qmlRegisterType<QMLScreen>("org.kde.kscreen", 1, 0, "QMLScreen"); | 180 | qmlRegisterType<QMLScreen>("org.kde.kscreen", 1, 0, "QMLScreen"); | ||
216 | 181 | | |||
217 | qmlRegisterType<KScreen::Output>("org.kde.kscreen", 1, 0, "KScreenOutput"); | 182 | qmlRegisterType<KScreen::Output>("org.kde.kscreen", 1, 0, "KScreenOutput"); | ||
218 | qmlRegisterType<KScreen::Edid>("org.kde.kscreen", 1, 0, "KScreenEdid"); | 183 | qmlRegisterType<KScreen::Edid>("org.kde.kscreen", 1, 0, "KScreenEdid"); | ||
219 | qmlRegisterType<KScreen::Mode>("org.kde.kscreen", 1, 0, "KScreenMode"); | 184 | qmlRegisterType<KScreen::Mode>("org.kde.kscreen", 1, 0, "KScreenMode"); | ||
220 | 185 | | |||
221 | //const QString file = QDir::currentPath() + "/main.qml"; | 186 | //const QString file = QDir::currentPath() + "/main.qml"; | ||
222 | const QString file = QStandardPaths::locate(QStandardPaths::QStandardPaths::GenericDataLocation, QStringLiteral("kcm_kscreen/qml/main.qml")); | 187 | const QString file = QStandardPaths::locate(QStandardPaths::QStandardPaths::GenericDataLocation, QStringLiteral("kcm_kscreen/qml/main.qml")); | ||
223 | mDeclarativeView->setSource(QUrl::fromLocalFile(file)); | 188 | ui->quickWidget->setSource(QUrl::fromLocalFile(file)); | ||
224 | 189 | | |||
225 | QQuickItem* rootObject = mDeclarativeView->rootObject(); | 190 | QQuickItem* rootObject = ui->quickWidget->rootObject(); | ||
226 | mScreen = rootObject->findChild<QMLScreen*>(QStringLiteral("outputView")); | 191 | mScreen = rootObject->findChild<QMLScreen*>(QStringLiteral("outputView")); | ||
227 | if (!mScreen) { | 192 | if (!mScreen) { | ||
228 | return; | 193 | return; | ||
229 | } | 194 | } | ||
230 | mScreen->setEngine(mDeclarativeView->engine()); | 195 | mScreen->setEngine(ui->quickWidget->engine()); | ||
231 | 196 | | |||
232 | connect(mScreen, &QMLScreen::focusedOutputChanged, | 197 | connect(mScreen, &QMLScreen::focusedOutputChanged, | ||
233 | this, &Widget::slotFocusedOutputChanged); | 198 | this, &Widget::slotFocusedOutputChanged); | ||
234 | connect(rootObject->findChild<QObject*>(QStringLiteral("identifyButton")), SIGNAL(clicked()), | 199 | connect(rootObject->findChild<QObject*>(QStringLiteral("identifyButton")), SIGNAL(clicked()), | ||
235 | this, SLOT(slotIdentifyButtonClicked())); | 200 | this, SLOT(slotIdentifyButtonClicked())); | ||
236 | } | 201 | } | ||
237 | 202 | | |||
238 | void Widget::resetPrimaryCombo() | 203 | void Widget::resetPrimaryCombo() | ||
239 | { | 204 | { | ||
240 | bool isPrimaryDisplaySupported = mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PrimaryDisplay); | 205 | bool isPrimaryDisplaySupported = mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PrimaryDisplay); | ||
241 | mPrimaryLabel->setVisible(isPrimaryDisplaySupported); | 206 | ui->primaryLabel->setVisible(isPrimaryDisplaySupported); | ||
242 | mPrimaryCombo->setVisible(isPrimaryDisplaySupported); | 207 | ui->primaryCombo->setVisible(isPrimaryDisplaySupported); | ||
243 | 208 | | |||
244 | // Don't emit currentIndexChanged when resetting | 209 | // Don't emit currentIndexChanged when resetting | ||
245 | bool blocked = mPrimaryCombo->blockSignals(true); | 210 | bool blocked = ui->primaryCombo->blockSignals(true); | ||
246 | mPrimaryCombo->clear(); | 211 | ui->primaryCombo->clear(); | ||
247 | mPrimaryCombo->addItem(i18n("No Primary Output")); | 212 | ui->primaryCombo->addItem(i18n("No Primary Output")); | ||
248 | mPrimaryCombo->blockSignals(blocked); | 213 | ui->primaryCombo->blockSignals(blocked); | ||
249 | 214 | | |||
250 | if (!mConfig) { | 215 | if (!mConfig) { | ||
251 | return; | 216 | return; | ||
252 | } | 217 | } | ||
253 | 218 | | |||
254 | for (auto &output: mConfig->outputs()) { | 219 | for (auto &output: mConfig->outputs()) { | ||
255 | addOutputToPrimaryCombo(output); | 220 | addOutputToPrimaryCombo(output); | ||
256 | } | 221 | } | ||
257 | } | 222 | } | ||
258 | 223 | | |||
259 | void Widget::addOutputToPrimaryCombo(const KScreen::OutputPtr &output) | 224 | void Widget::addOutputToPrimaryCombo(const KScreen::OutputPtr &output) | ||
260 | { | 225 | { | ||
261 | if (!output->isConnected() || !output->isEnabled()) { | 226 | if (!output->isConnected() || !output->isEnabled()) { | ||
262 | return; | 227 | return; | ||
263 | } | 228 | } | ||
264 | mPrimaryCombo->addItem(Utils::outputName(output), output->id()); | 229 | ui->primaryCombo->addItem(Utils::outputName(output), output->id()); | ||
265 | if (output->isPrimary()) { | 230 | if (output->isPrimary()) { | ||
266 | Q_ASSERT(mConfig); | 231 | Q_ASSERT(mConfig); | ||
267 | int lastIndex = mPrimaryCombo->count() - 1; | 232 | int lastIndex = ui->primaryCombo->count() - 1; | ||
268 | mPrimaryCombo->setCurrentIndex(lastIndex); | 233 | ui->primaryCombo->setCurrentIndex(lastIndex); | ||
269 | } | 234 | } | ||
270 | } | 235 | } | ||
271 | 236 | | |||
272 | void Widget::slotFocusedOutputChanged(QMLOutput *output) | 237 | void Widget::slotFocusedOutputChanged(QMLOutput *output) | ||
273 | { | 238 | { | ||
274 | mControlPanel->activateOutput(output->outputPtr()); | 239 | mControlPanel->activateOutput(output->outputPtr()); | ||
275 | } | 240 | } | ||
276 | 241 | | |||
277 | void Widget::slotOutputEnabledChanged() | 242 | void Widget::slotOutputEnabledChanged() | ||
278 | { | 243 | { | ||
279 | resetPrimaryCombo(); | 244 | resetPrimaryCombo(); | ||
280 | 245 | | |||
281 | int enabledOutputsCount = 0; | 246 | int enabledOutputsCount = 0; | ||
282 | Q_FOREACH (const KScreen::OutputPtr &output, mConfig->outputs()) { | 247 | Q_FOREACH (const KScreen::OutputPtr &output, mConfig->outputs()) { | ||
283 | if (output->isEnabled()) { | 248 | if (output->isEnabled()) { | ||
284 | ++enabledOutputsCount; | 249 | ++enabledOutputsCount; | ||
285 | } | 250 | } | ||
286 | if (enabledOutputsCount > 1) { | 251 | if (enabledOutputsCount > 1) { | ||
287 | break; | 252 | break; | ||
288 | } | 253 | } | ||
289 | } | 254 | } | ||
290 | mUnifyButton->setEnabled(enabledOutputsCount > 1); | 255 | ui->unifyButton->setEnabled(enabledOutputsCount > 1); | ||
291 | } | 256 | } | ||
292 | 257 | | |||
293 | void Widget::slotOutputConnectedChanged() | 258 | void Widget::slotOutputConnectedChanged() | ||
294 | { | 259 | { | ||
295 | resetPrimaryCombo(); | 260 | resetPrimaryCombo(); | ||
296 | } | 261 | } | ||
297 | 262 | | |||
298 | void Widget::slotUnifyOutputs() | 263 | void Widget::slotUnifyOutputs() | ||
Show All 14 Lines | 276 | if (!base) { | |||
313 | return; | 278 | return; | ||
314 | } | 279 | } | ||
315 | } | 280 | } | ||
316 | 281 | | |||
317 | if (base->isCloneMode()) { | 282 | if (base->isCloneMode()) { | ||
318 | setConfig(mPrevConfig); | 283 | setConfig(mPrevConfig); | ||
319 | mPrevConfig.clear(); | 284 | mPrevConfig.clear(); | ||
320 | 285 | | |||
321 | mPrimaryCombo->setEnabled(true); | 286 | ui->primaryCombo->setEnabled(true); | ||
322 | mUnifyButton->setText(i18n("Unify Outputs")); | 287 | ui->unifyButton->setText(i18n("Unify Outputs")); | ||
323 | } else { | 288 | } else { | ||
324 | // Clone the current config, so that we can restore it in case user | 289 | // Clone the current config, so that we can restore it in case user | ||
325 | // breaks the cloning | 290 | // breaks the cloning | ||
326 | mPrevConfig = mConfig->clone(); | 291 | mPrevConfig = mConfig->clone(); | ||
327 | 292 | | |||
328 | for (QMLOutput *output: mScreen->outputs()) { | 293 | for (QMLOutput *output: mScreen->outputs()) { | ||
329 | if (!output->output()->isConnected()) { | 294 | if (!output->output()->isConnected()) { | ||
330 | continue; | 295 | continue; | ||
Show All 20 Lines | |||||
351 | } | 316 | } | ||
352 | } | 317 | } | ||
353 | 318 | | |||
354 | base->output()->setClones(clones); | 319 | base->output()->setClones(clones); | ||
355 | base->setIsCloneMode(true); | 320 | base->setIsCloneMode(true); | ||
356 | 321 | | |||
357 | mScreen->updateOutputsPlacement(); | 322 | mScreen->updateOutputsPlacement(); | ||
358 | 323 | | |||
359 | mPrimaryCombo->setEnabled(false); | 324 | ui->primaryCombo->setEnabled(false); | ||
360 | mControlPanel->setUnifiedOutput(base->outputPtr()); | 325 | mControlPanel->setUnifiedOutput(base->outputPtr()); | ||
361 | 326 | ui->unifyButton->setText(i18n("Break Unified Outputs")); | |||
362 | mUnifyButton->setText(i18n("Break Unified Outputs")); | | |||
363 | } | 327 | } | ||
364 | 328 | | |||
365 | Q_EMIT changed(); | 329 | Q_EMIT changed(); | ||
366 | } | 330 | } | ||
367 | 331 | | |||
368 | void Widget::slotProfileChanged(int index) | 332 | void Widget::slotProfileChanged(int index) | ||
369 | { | 333 | { | ||
370 | #ifdef WITH_PROFILES | 334 | #ifdef WITH_PROFILES | ||
▲ Show 20 Lines • Show All 112 Lines • ▼ Show 20 Line(s) | |||||
483 | 447 | | |||
484 | void Widget::outputRemoved(int outputId) | 448 | void Widget::outputRemoved(int outputId) | ||
485 | { | 449 | { | ||
486 | KScreen::OutputPtr output = mConfig->output(outputId); | 450 | KScreen::OutputPtr output = mConfig->output(outputId); | ||
487 | if (!output.isNull()) { | 451 | if (!output.isNull()) { | ||
488 | output->disconnect(this); | 452 | output->disconnect(this); | ||
489 | } | 453 | } | ||
490 | 454 | | |||
491 | const int index = mPrimaryCombo->findData(outputId); | 455 | const int index = ui->primaryCombo->findData(outputId); | ||
492 | if (index == -1) { | 456 | if (index == -1) { | ||
493 | return; | 457 | return; | ||
494 | } | 458 | } | ||
495 | 459 | | |||
496 | if (index == mPrimaryCombo->currentIndex()) { | 460 | if (index == ui->primaryCombo->currentIndex()) { | ||
497 | // We'll get the actual primary update signal eventually | 461 | // We'll get the actual primary update signal eventually | ||
498 | // Don't emit currentIndexChanged | 462 | // Don't emit currentIndexChanged | ||
499 | const bool blocked = mPrimaryCombo->blockSignals(true); | 463 | const bool blocked = ui->primaryCombo->blockSignals(true); | ||
500 | mPrimaryCombo->setCurrentIndex(0); | 464 | ui->primaryCombo->setCurrentIndex(0); | ||
501 | mPrimaryCombo->blockSignals(blocked); | 465 | ui->primaryCombo->blockSignals(blocked); | ||
502 | } | 466 | } | ||
503 | mPrimaryCombo->removeItem(index); | 467 | ui->primaryCombo->removeItem(index); | ||
504 | } | 468 | } | ||
505 | 469 | | |||
506 | void Widget::primaryOutputSelected(int index) | 470 | void Widget::primaryOutputSelected(int index) | ||
507 | { | 471 | { | ||
508 | qDebug() << Q_FUNC_INFO << index; | 472 | qDebug() << Q_FUNC_INFO << index; | ||
509 | if (!mConfig) { | 473 | if (!mConfig) { | ||
510 | return; | 474 | return; | ||
511 | } | 475 | } | ||
512 | 476 | | |||
513 | const KScreen::OutputPtr newPrimary = index == 0 ? KScreen::OutputPtr() : mConfig->output(mPrimaryCombo->itemData(index).toInt()); | 477 | const KScreen::OutputPtr newPrimary = index == 0 ? KScreen::OutputPtr() : mConfig->output(ui->primaryCombo->itemData(index).toInt()); | ||
514 | if (newPrimary == mConfig->primaryOutput()) { | 478 | if (newPrimary == mConfig->primaryOutput()) { | ||
515 | return; | 479 | return; | ||
516 | } | 480 | } | ||
517 | 481 | | |||
518 | mConfig->setPrimaryOutput(newPrimary); | 482 | mConfig->setPrimaryOutput(newPrimary); | ||
519 | Q_EMIT changed(); | 483 | Q_EMIT changed(); | ||
520 | } | 484 | } | ||
521 | 485 | | |||
522 | void Widget::primaryOutputChanged(const KScreen::OutputPtr &output) | 486 | void Widget::primaryOutputChanged(const KScreen::OutputPtr &output) | ||
523 | { | 487 | { | ||
524 | qDebug() << Q_FUNC_INFO << output; | 488 | qDebug() << Q_FUNC_INFO << output; | ||
525 | Q_ASSERT(mConfig); | 489 | Q_ASSERT(mConfig); | ||
526 | int index = output.isNull() ? 0 : mPrimaryCombo->findData(output->id()); | 490 | int index = output.isNull() ? 0 : ui->primaryCombo->findData(output->id()); | ||
527 | if (index == -1 || index == mPrimaryCombo->currentIndex()) { | 491 | if (index == -1 || index == ui->primaryCombo->currentIndex()) { | ||
528 | return; | 492 | return; | ||
529 | } | 493 | } | ||
530 | mPrimaryCombo->setCurrentIndex(index); | 494 | ui->primaryCombo->setCurrentIndex(index); | ||
531 | } | 495 | } | ||
532 | 496 | | |||
533 | void Widget::slotIdentifyButtonClicked(bool checked) | 497 | void Widget::slotIdentifyButtonClicked(bool checked) | ||
534 | { | 498 | { | ||
535 | Q_UNUSED(checked); | 499 | Q_UNUSED(checked); | ||
536 | connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished, | 500 | connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished, | ||
537 | this, &Widget::slotIdentifyOutputs); | 501 | this, &Widget::slotIdentifyOutputs); | ||
538 | } | 502 | } | ||
▲ Show 20 Lines • Show All 60 Lines • Show Last 20 Lines |