diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,10 @@ set(KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}") set(PROJECT_VERSION ${KDE_APPLICATIONS_VERSION}) +# At least C++14 is required +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_SOURCE_DIR}) include(KDEInstallDirs) diff --git a/kcontrol/kamera.cpp b/kcontrol/kamera.cpp --- a/kcontrol/kamera.cpp +++ b/kcontrol/kamera.cpp @@ -110,17 +110,17 @@ m_deviceSel->setModel(m_deviceModel); - connect(m_deviceSel, SIGNAL(customContextMenuRequested(QPoint)), - SLOT(slot_deviceMenu(QPoint))); - connect(m_deviceSel, SIGNAL(doubleClicked(QModelIndex)), - SLOT(slot_configureCamera())); - connect(m_deviceSel, SIGNAL(activated(QModelIndex)), - SLOT(slot_deviceSelected(QModelIndex))); - connect(m_deviceSel, SIGNAL(clicked(QModelIndex)), - SLOT(slot_deviceSelected(QModelIndex))); + connect(m_deviceSel, &QListView::customContextMenuRequested, + this, &KKameraConfig::slot_deviceMenu); + connect(m_deviceSel, &QListView::doubleClicked, + this, &KKameraConfig::slot_configureCamera); + connect(m_deviceSel, &QListView::activated, + this, &KKameraConfig::slot_deviceSelected); + connect(m_deviceSel, &QListView::clicked, + this, &KKameraConfig::slot_deviceSelected); m_deviceSel->setViewMode(QListView::IconMode); - m_deviceSel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + m_deviceSel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_deviceSel->setContextMenuPolicy(Qt::CustomContextMenu); // create actions, add to the toolbar @@ -128,7 +128,7 @@ act = m_actions->addAction("camera_add"); act->setIcon(QIcon::fromTheme("camera-photo")); act->setText(i18n("Add")); - connect(act, SIGNAL(triggered(bool)), this, SLOT(slot_addCamera())); + connect(act, &QAction::triggered, this, &KKameraConfig::slot_addCamera); act->setWhatsThis(i18n("Click this button to add a new camera.")); m_toolbar->addAction(act); m_toolbar->addSeparator(); @@ -136,28 +136,28 @@ act = m_actions->addAction("camera_test"); act->setIcon(QIcon::fromTheme("dialog-ok")); act->setText(i18n("Test")); - connect(act, SIGNAL(triggered(bool)), this, SLOT(slot_testCamera())); + connect(act, &QAction::triggered, this, &KKameraConfig::slot_testCamera); act->setWhatsThis(i18n("Click this button to test the connection to the selected camera.")); m_toolbar->addAction(act); act = m_actions->addAction("camera_remove"); act->setIcon(QIcon::fromTheme("user-trash")); act->setText(i18n("Remove")); - connect(act, SIGNAL(triggered(bool)), this, SLOT(slot_removeCamera())); + connect(act, &QAction::triggered, this, &KKameraConfig::slot_removeCamera); act->setWhatsThis(i18n("Click this button to remove the selected camera from the list.")); m_toolbar->addAction(act); act = m_actions->addAction("camera_configure"); act->setIcon(QIcon::fromTheme("configure")); act->setText(i18n("Configure...")); - connect(act, SIGNAL(triggered(bool)), this, SLOT(slot_configureCamera())); + connect(act, &QAction::triggered, this, &KKameraConfig::slot_configureCamera); act->setWhatsThis(i18n("Click this button to change the configuration of the selected camera.

The availability of this feature and the contents of the Configuration dialog depend on the camera model.")); m_toolbar->addAction(act); act = m_actions->addAction("camera_summary"); act->setIcon(QIcon::fromTheme("hwinfo")); act->setText(i18n("Information")); - connect(act, SIGNAL(triggered(bool)), this, SLOT(slot_cameraSummary())); + connect(act, &QAction::triggered, this, &KKameraConfig::slot_cameraSummary); act->setWhatsThis(i18n("Click this button to view a summary of the current status of the selected camera.

The availability of this feature and the contents of the Information dialog depend on the camera model.")); m_toolbar->addAction(act); m_toolbar->addSeparator(); @@ -165,7 +165,7 @@ act = m_actions->addAction("camera_cancel"); act->setIcon(QIcon::fromTheme("process-stop")); act->setText(i18n("Cancel")); - connect(act, SIGNAL(triggered(bool)), this, SLOT(slot_cancelOperation())); + connect(act, &QAction::triggered, this, &KKameraConfig::slot_cancelOperation); act->setWhatsThis(i18n("Click this button to cancel the current camera operation.")); act->setEnabled(false); m_toolbar->addAction(act); @@ -211,21 +211,26 @@ KCamera *kcamera; for (it = groupList.begin(); it != groupList.end(); it++) { - if (*it != "") { - KConfigGroup cg(m_config, *it); - if (cg.readEntry("Path").contains("usb:")) { - continue; - } - - // Load configuration for Serial port cameras - qCDebug(KAMERA_KCONTROL) << "Loading configuration for serial port camera: " - << *it; - kcamera = new KCamera(*it, cg.readEntry("Path")); - connect(kcamera, SIGNAL(error(QString)), SLOT(slot_error(QString))); - connect(kcamera, SIGNAL(error(QString,QString)), SLOT(slot_error(QString,QString))); - kcamera->load(m_config); - m_devices[*it] = kcamera; + if (*it != "") { + KConfigGroup cg(m_config, *it); + + if (cg.readEntry("Path").contains("usb:")) { + continue; } + + // Load configuration for Serial port cameras + qCDebug(KAMERA_KCONTROL) << "Loading configuration for serial port camera: " + << *it; + kcamera = new KCamera(*it, cg.readEntry("Path")); + connect(kcamera, qOverload(&KCamera::error), + this, qOverload(&KKameraConfig::slot_error)); + + connect(kcamera, qOverload(&KCamera::error), + this, qOverload(&KKameraConfig::slot_error)); + + kcamera->load(m_config); + m_devices[*it] = kcamera; + } } m_cancelPending = false; @@ -263,8 +268,13 @@ qCDebug(KAMERA_KCONTROL) << "Adding USB camera: " << portit.value() << " at " << portit.key(); kcamera = new KCamera(portit.value(), portit.key()); - connect(kcamera, SIGNAL(error(QString)), SLOT(slot_error(QString))); - connect(kcamera, SIGNAL(error(QString,QString)), SLOT(slot_error(QString,QString))); + + connect(kcamera, qOverload(&KCamera::error), + this, qOverload(&KKameraConfig::slot_error)); + + connect(kcamera, qOverload(&KCamera::error), + this, qOverload(&KKameraConfig::slot_error)); + m_devices[portit.value()] = kcamera; } populateDeviceListView(); @@ -319,8 +329,13 @@ void KKameraConfig::slot_addCamera() { KCamera *m_device = new KCamera(QString::null, QString()); //krazy:exclusion=nullstrassign for old broken gcc - connect(m_device, SIGNAL(error(QString)), SLOT(slot_error(QString))); - connect(m_device, SIGNAL(error(QString,QString)), SLOT(slot_error(QString,QString))); + + connect(m_device, qOverload(&KCamera::error), + this, qOverload(&KKameraConfig::slot_error)); + + connect(m_device, qOverload(&KCamera::error), + this, qOverload(&KKameraConfig::slot_error)); + KameraDeviceSelectDialog dialog(this, m_device); if (dialog.exec() == QDialog::Accepted) { dialog.save(); diff --git a/kcontrol/kameraconfigdialog.cpp b/kcontrol/kameraconfigdialog.cpp --- a/kcontrol/kameraconfigdialog.cpp +++ b/kcontrol/kameraconfigdialog.cpp @@ -62,8 +62,8 @@ okButton->setDefault(true); okButton->setShortcut(Qt::CTRL | Qt::Key_Return); - connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); - connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + connect(buttonBox, &QDialogButtonBox::accepted, this, &KameraConfigDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &KameraConfigDialog::reject); okButton->setDefault(true); setModal( true ); @@ -78,7 +78,7 @@ appendWidget(main, widget); - connect(okButton,SIGNAL(clicked()),this,SLOT(slotOk())); + connect(okButton, &QPushButton::clicked, this, &KameraConfigDialog::slotOk); mainLayout->addWidget(buttonBox); } diff --git a/kcontrol/kameradevice.cpp b/kcontrol/kameradevice.cpp --- a/kcontrol/kameradevice.cpp +++ b/kcontrol/kameradevice.cpp @@ -300,10 +300,11 @@ setModal( true ); m_device = device; - connect(m_device, SIGNAL(error(QString)), - SLOT(slot_error(QString))); - connect(m_device, SIGNAL(error(QString,QString)), - SLOT(slot_error(QString,QString))); + connect(m_device, qOverload(&KCamera::error), + this, qOverload(&KameraDeviceSelectDialog::slot_error)); + + connect(m_device, qOverload(&KCamera::error), + this, qOverload(&KameraDeviceSelectDialog::slot_error)); QWidget *page = new QWidget( this ); @@ -320,10 +321,9 @@ m_modelSel->setModel(m_model); topLayout->addWidget( m_modelSel ); - connect(m_modelSel, SIGNAL(activated(QModelIndex)), - SLOT(slot_setModel(QModelIndex))); - connect(m_modelSel, SIGNAL(clicked(QModelIndex)), - SLOT(slot_setModel(QModelIndex))); + connect(m_modelSel, &QListView::activated, this, &KameraDeviceSelectDialog::slot_setModel); + connect(m_modelSel, &QListView::clicked, this, &KameraDeviceSelectDialog::slot_setModel); + // make sure listview only as wide as it needs to be m_modelSel->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred)); @@ -362,10 +362,9 @@ lay->addWidget(grid2); lay->addWidget( m_settingsStack ); - connect(m_serialRB, SIGNAL(toggled(bool)), - this, SLOT(changeCurrentIndex()) ); - connect(m_USBRB, SIGNAL(toggled(bool)), - this, SLOT(changeCurrentIndex()) ); + connect(m_serialRB, &QRadioButton::toggled, this, &KameraDeviceSelectDialog::changeCurrentIndex); + connect(m_USBRB, &QRadioButton::toggled, this, &KameraDeviceSelectDialog::changeCurrentIndex); + // none tab m_settingsStack->insertWidget(INDEX_NONE, new QLabel(i18n("No port type selected."), @@ -400,8 +399,8 @@ // to enableButtonOk(true) in slot_setModel. okButton->setEnabled(false); okButton->setShortcut(Qt::CTRL | Qt::Key_Return); - connect(okButton, SIGNAL(clicked(bool)), SLOT(accept())); - connect(cancelButton, SIGNAL(clicked(bool)), SLOT(close())); + connect(okButton, &QPushButton::clicked, this, &KameraDeviceSelectDialog::accept); + connect(cancelButton, &QPushButton::clicked, this, &KameraDeviceSelectDialog::close); rightLayout->addWidget(m_OkCancelButtonBox); // query gphoto2 for existing serial ports