diff --git a/kcm/src/CMakeLists.txt b/kcm/src/CMakeLists.txt
--- a/kcm/src/CMakeLists.txt
+++ b/kcm/src/CMakeLists.txt
@@ -22,7 +22,7 @@
ecm_qt_declare_logging_category(kcm_kscreen_SRCS HEADER kcm_screen_debug.h IDENTIFIER KSCREEN_KCM CATEGORY_NAME kscreen.kcm)
-ki18n_wrap_ui(kcm_kscreen_SRCS stylepreview.ui scaling.ui)
+ki18n_wrap_ui(kcm_kscreen_SRCS kscreen_widget.ui stylepreview.ui scaling.ui)
add_library(kcm_kscreen MODULE kcm_kscreen.cpp ${kcm_kscreen_SRCS})
diff --git a/kcm/src/controlpanel.cpp b/kcm/src/controlpanel.cpp
--- a/kcm/src/controlpanel.cpp
+++ b/kcm/src/controlpanel.cpp
@@ -32,7 +32,7 @@
: QFrame(parent)
, mUnifiedOutputCfg(nullptr)
{
- setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
mLayout = new QVBoxLayout(this);
}
diff --git a/kcm/src/kscreen_widget.ui b/kcm/src/kscreen_widget.ui
new file mode 100644
--- /dev/null
+++ b/kcm/src/kscreen_widget.ui
@@ -0,0 +1,101 @@
+
+
+ KScreenWidget
+
+
+
+ 0
+ 0
+ 549
+ 591
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 100
+
+
+
+ Form
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QQuickWidget::SizeRootObjectToView
+
+
+
+ -
+
+
-
+
+
+ Primary display:
+
+
+
+ -
+
+
+ QComboBox::AdjustToContents
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ Unify Outputs
+
+
+
+ -
+
+
+ Scale Display
+
+
+
+
+
+
+
+ QQuickWidget
+ QWidget
+ QtQuickWidgets/QQuickWidget
+
+
+
+
+
diff --git a/kcm/src/outputconfig.cpp b/kcm/src/outputconfig.cpp
--- a/kcm/src/outputconfig.cpp
+++ b/kcm/src/outputconfig.cpp
@@ -88,7 +88,7 @@
mScale->setCurrentIndex(index);
});
- setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
QVBoxLayout *vbox = new QVBoxLayout(this);
mTitle = new QLabel(this);
@@ -159,8 +159,6 @@
slotResolutionChanged(mResolution->currentResolution());
connect(mRefreshRate, static_cast(&QComboBox::activated),
this, &OutputConfig::slotRefreshRateChanged);
-
- vbox->addStretch(2);
}
void OutputConfig::setOutput(const KScreen::OutputPtr &output)
diff --git a/kcm/src/widget.h b/kcm/src/widget.h
--- a/kcm/src/widget.h
+++ b/kcm/src/widget.h
@@ -43,6 +43,10 @@
class ConfigOperation;
}
+namespace Ui {
+ class KScreenWidget;
+}
+
class Widget : public QWidget
{
Q_OBJECT
@@ -89,25 +93,19 @@
KScreen::OutputPtr findOutput(const KScreen::ConfigPtr &config, const QVariantMap &info);
private:
+ Ui::KScreenWidget *ui;
QMLScreen *mScreen = nullptr;
KScreen::ConfigPtr mConfig = nullptr;
KScreen::ConfigPtr mPrevConfig = nullptr;
- QQuickWidget *mDeclarativeView = nullptr;
ControlPanel *mControlPanel = nullptr;
ProfilesModel *mProfilesModel = nullptr;
- QComboBox *mPrimaryCombo = nullptr;
- QLabel *mPrimaryLabel = nullptr;
QComboBox *mProfilesCombo = nullptr;
-
- QPushButton *mScaleAllOutputsButton = nullptr;
- QPushButton *mUnifyButton = nullptr;
QPushButton *mSaveProfileButton = nullptr;
QList mOutputIdentifiers;
QTimer *mOutputTimer = nullptr;
-
};
#endif // WIDGET_H
diff --git a/kcm/src/widget.cpp b/kcm/src/widget.cpp
--- a/kcm/src/widget.cpp
+++ b/kcm/src/widget.cpp
@@ -49,48 +49,20 @@
#include
#include
+#include "ui_kscreen_widget.h"
+
#define QML_PATH "kcm_kscreen/qml/"
Widget::Widget(QWidget *parent)
: QWidget(parent)
+ , ui(new Ui::KScreenWidget())
{
qRegisterMetaType();
- setMinimumHeight(550);
-
- QVBoxLayout *layout = new QVBoxLayout(this);
-
- QSplitter *splitter = new QSplitter(Qt::Vertical, this);
- layout->addWidget(splitter);
-
- mDeclarativeView = new QQuickWidget();
- mDeclarativeView->setResizeMode(QQuickWidget::SizeRootObjectToView);
- mDeclarativeView->setMinimumHeight(280);
- splitter->addWidget(mDeclarativeView);
-
- QWidget *widget = new QWidget(this);
- splitter->addWidget(widget);
- splitter->setStretchFactor(1, 1);
- widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
-
- QVBoxLayout *vbox = new QVBoxLayout(widget);
- const int topMargin = style()->pixelMetric(QStyle::PM_LayoutTopMargin, nullptr, this);
- vbox->setContentsMargins(0, topMargin, 0, 0);
- widget->setLayout(vbox);
-
- QHBoxLayout *hbox = new QHBoxLayout;
- vbox->addLayout(hbox);
-
- mPrimaryCombo = new QComboBox(this);
- mPrimaryCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
- mPrimaryCombo->addItem(i18n("No Primary Output"));
- connect(mPrimaryCombo, QOverload::of(&QComboBox::currentIndexChanged),
+ ui->setupUi(this);
+ ui->quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
+ connect(ui->primaryCombo, QOverload::of(&QComboBox::currentIndexChanged),
this, &Widget::primaryOutputSelected);
- mPrimaryLabel = new QLabel(i18n("Primary display:"));
- hbox->addWidget(mPrimaryLabel);
- hbox->addWidget(mPrimaryCombo);
-
- hbox->addStretch();
#ifdef WITH_PROFILES
mProfilesModel = new ProfilesModel(this);
@@ -107,27 +79,20 @@
mControlPanel = new ControlPanel(this);
connect(mControlPanel, &ControlPanel::changed,
this, &Widget::changed);
- vbox->addWidget(mControlPanel);
+ ui->controlPanelLayout->addWidget(mControlPanel);
- mUnifyButton = new QPushButton(i18n("Unify Outputs"), this);
- connect(mUnifyButton, &QPushButton::released,
+ connect(ui->unifyButton, &QPushButton::released,
[this]{
slotUnifyOutputs();
});
- vbox->addWidget(mUnifyButton);
-
- mScaleAllOutputsButton = new QPushButton(i18n("Scale Display"), this);
- connect(mScaleAllOutputsButton, &QPushButton::released,
+ connect(ui->scaleAllOutputsButton, &QPushButton::released,
[this] {
QPointer dialog = new ScalingConfig(mConfig->outputs(), this);
dialog->exec();
delete dialog;
});
- vbox->addWidget(mScaleAllOutputsButton);
-
-
mOutputTimer = new QTimer(this);
connect(mOutputTimer, &QTimer::timeout,
this, &Widget::clearOutputIdentifiers);
@@ -184,8 +149,8 @@
mScreen->setConfig(mConfig);
mControlPanel->setConfig(mConfig);
- mUnifyButton->setEnabled(mConfig->outputs().count() > 1);
- mScaleAllOutputsButton->setVisible(!mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PerOutputScaling));
+ ui->unifyButton->setEnabled(mConfig->outputs().count() > 1);
+ ui->scaleAllOutputsButton->setVisible(!mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PerOutputScaling));
for (const KScreen::OutputPtr &output : mConfig->outputs()) {
outputAdded(output);
@@ -220,14 +185,14 @@
//const QString file = QDir::currentPath() + "/main.qml";
const QString file = QStandardPaths::locate(QStandardPaths::QStandardPaths::GenericDataLocation, QStringLiteral("kcm_kscreen/qml/main.qml"));
- mDeclarativeView->setSource(QUrl::fromLocalFile(file));
+ ui->quickWidget->setSource(QUrl::fromLocalFile(file));
- QQuickItem* rootObject = mDeclarativeView->rootObject();
+ QQuickItem* rootObject = ui->quickWidget->rootObject();
mScreen = rootObject->findChild(QStringLiteral("outputView"));
if (!mScreen) {
return;
}
- mScreen->setEngine(mDeclarativeView->engine());
+ mScreen->setEngine(ui->quickWidget->engine());
connect(mScreen, &QMLScreen::focusedOutputChanged,
this, &Widget::slotFocusedOutputChanged);
@@ -238,14 +203,14 @@
void Widget::resetPrimaryCombo()
{
bool isPrimaryDisplaySupported = mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PrimaryDisplay);
- mPrimaryLabel->setVisible(isPrimaryDisplaySupported);
- mPrimaryCombo->setVisible(isPrimaryDisplaySupported);
+ ui->primaryLabel->setVisible(isPrimaryDisplaySupported);
+ ui->primaryCombo->setVisible(isPrimaryDisplaySupported);
// Don't emit currentIndexChanged when resetting
- bool blocked = mPrimaryCombo->blockSignals(true);
- mPrimaryCombo->clear();
- mPrimaryCombo->addItem(i18n("No Primary Output"));
- mPrimaryCombo->blockSignals(blocked);
+ bool blocked = ui->primaryCombo->blockSignals(true);
+ ui->primaryCombo->clear();
+ ui->primaryCombo->addItem(i18n("No Primary Output"));
+ ui->primaryCombo->blockSignals(blocked);
if (!mConfig) {
return;
@@ -261,11 +226,11 @@
if (!output->isConnected() || !output->isEnabled()) {
return;
}
- mPrimaryCombo->addItem(Utils::outputName(output), output->id());
+ ui->primaryCombo->addItem(Utils::outputName(output), output->id());
if (output->isPrimary()) {
Q_ASSERT(mConfig);
- int lastIndex = mPrimaryCombo->count() - 1;
- mPrimaryCombo->setCurrentIndex(lastIndex);
+ int lastIndex = ui->primaryCombo->count() - 1;
+ ui->primaryCombo->setCurrentIndex(lastIndex);
}
}
@@ -287,7 +252,7 @@
break;
}
}
- mUnifyButton->setEnabled(enabledOutputsCount > 1);
+ ui->unifyButton->setEnabled(enabledOutputsCount > 1);
}
void Widget::slotOutputConnectedChanged()
@@ -318,8 +283,8 @@
setConfig(mPrevConfig);
mPrevConfig.clear();
- mPrimaryCombo->setEnabled(true);
- mUnifyButton->setText(i18n("Unify Outputs"));
+ ui->primaryCombo->setEnabled(true);
+ ui->unifyButton->setText(i18n("Unify Outputs"));
} else {
// Clone the current config, so that we can restore it in case user
// breaks the cloning
@@ -356,10 +321,9 @@
mScreen->updateOutputsPlacement();
- mPrimaryCombo->setEnabled(false);
+ ui->primaryCombo->setEnabled(false);
mControlPanel->setUnifiedOutput(base->outputPtr());
-
- mUnifyButton->setText(i18n("Break Unified Outputs"));
+ ui->unifyButton->setText(i18n("Break Unified Outputs"));
}
Q_EMIT changed();
@@ -488,19 +452,19 @@
output->disconnect(this);
}
- const int index = mPrimaryCombo->findData(outputId);
+ const int index = ui->primaryCombo->findData(outputId);
if (index == -1) {
return;
}
- if (index == mPrimaryCombo->currentIndex()) {
+ if (index == ui->primaryCombo->currentIndex()) {
// We'll get the actual primary update signal eventually
// Don't emit currentIndexChanged
- const bool blocked = mPrimaryCombo->blockSignals(true);
- mPrimaryCombo->setCurrentIndex(0);
- mPrimaryCombo->blockSignals(blocked);
+ const bool blocked = ui->primaryCombo->blockSignals(true);
+ ui->primaryCombo->setCurrentIndex(0);
+ ui->primaryCombo->blockSignals(blocked);
}
- mPrimaryCombo->removeItem(index);
+ ui->primaryCombo->removeItem(index);
}
void Widget::primaryOutputSelected(int index)
@@ -510,7 +474,7 @@
return;
}
- const KScreen::OutputPtr newPrimary = index == 0 ? KScreen::OutputPtr() : mConfig->output(mPrimaryCombo->itemData(index).toInt());
+ const KScreen::OutputPtr newPrimary = index == 0 ? KScreen::OutputPtr() : mConfig->output(ui->primaryCombo->itemData(index).toInt());
if (newPrimary == mConfig->primaryOutput()) {
return;
}
@@ -523,11 +487,11 @@
{
qDebug() << Q_FUNC_INFO << output;
Q_ASSERT(mConfig);
- int index = output.isNull() ? 0 : mPrimaryCombo->findData(output->id());
- if (index == -1 || index == mPrimaryCombo->currentIndex()) {
+ int index = output.isNull() ? 0 : ui->primaryCombo->findData(output->id());
+ if (index == -1 || index == ui->primaryCombo->currentIndex()) {
return;
}
- mPrimaryCombo->setCurrentIndex(index);
+ ui->primaryCombo->setCurrentIndex(index);
}
void Widget::slotIdentifyButtonClicked(bool checked)