diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,8 @@ set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) -find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Core Widgets) -find_package(KF5 REQUIRED COMPONENTS KDELibs4Support) +find_package(Qt5 REQUIRED COMPONENTS Core Widgets DBus) +find_package(KF5 REQUIRED COMPONENTS WidgetsAddons CoreAddons I18n Config ConfigWidgets KCMUtils KIO IconThemes) find_package(PWQuality REQUIRED) include(FeatureSummary) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -39,7 +39,17 @@ add_library(user_manager MODULE ${user_manager_SRCS}) target_link_libraries(user_manager - KF5::KDELibs4Support + Qt5::Core + Qt5::Widgets + Qt5::DBus + KF5::WidgetsAddons + KF5::CoreAddons + KF5::I18n + KF5::ConfigCore + KF5::ConfigWidgets + KF5::KCMUtils + KF5::KIOCore + KF5::IconThemes ${PWQUALITY_LIBRARY} ) diff --git a/src/accountinfo.h b/src/accountinfo.h --- a/src/accountinfo.h +++ b/src/accountinfo.h @@ -22,6 +22,7 @@ #include #include +#include #include "lib/accountmodel.h" class KJob; @@ -63,6 +64,7 @@ bool validateUsername(QString username) const; QString cleanEmail(QString email); bool validateEmail(const QString &email) const; + QStringList imageFormats() const; QPixmap m_positive; QPixmap m_negative; diff --git a/src/accountinfo.cpp b/src/accountinfo.cpp --- a/src/accountinfo.cpp +++ b/src/accountinfo.cpp @@ -25,21 +25,19 @@ #include "avatargallery.h" #include +#include #include #include -#include +#include +#include +#include +#include #include "user_manager_debug.h" -#include -#include -#include -#include -#include -#include -#include +#include +#include #include -#include AccountInfo::AccountInfo(AccountModel* model, QWidget* parent, Qt::WindowFlags f) : QWidget(parent, f) @@ -176,16 +174,17 @@ } if (m_infoToSave.contains(AccountModel::Face)) { const QString path = m_infoToSave[AccountModel::Face].toString(); - QString faceFile = QDesktopServices::storageLocation(QDesktopServices::HomeLocation); + QString faceFile = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); faceFile.append(QLatin1String("/.face")); QFile::remove(faceFile); KIO::CopyJob* moveJob = KIO::move(QUrl::fromLocalFile(path), QUrl::fromLocalFile(faceFile), KIO::HideProgressInfo); connect(moveJob, SIGNAL(finished(KJob*)), SLOT(avatarModelChanged(KJob*))); moveJob->setUiDelegate(0); + moveJob->setUiDelegateExtension(0); moveJob->start(); - QString faceFile2 = QDesktopServices::storageLocation(QDesktopServices::HomeLocation); + QString faceFile2 = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); faceFile2.append(QLatin1String("/.face.icon")); QFile::remove(faceFile2); QFile::link(faceFile, faceFile2); @@ -401,22 +400,29 @@ job->start(); } -void AccountInfo::openAvatarSlot() +QStringList AccountInfo::imageFormats() const { - KFileDialog dlg(QUrl::fromLocalFile(QDir::homePath()), KImageIO::pattern(KImageIO::Reading), this); + QStringList result; + for(const QByteArray b: QImageReader::supportedMimeTypes()) { + if (! b.isEmpty()) + result.append(QString(b)); + } + return result; +} - dlg.setOperationMode(KFileDialog::Opening); - dlg.setWindowTitle(i18nc("@title:window", "Choose Image")); - dlg.setMode(KFile::File); +void AccountInfo::openAvatarSlot() +{ + QFileDialog dlg(this, i18nc("@title:window", "Choose Image"), QDir::homePath()); - KImageFilePreview *imagePreviewer = new KImageFilePreview(&dlg); - dlg.setPreviewWidget(imagePreviewer); + dlg.setMimeTypeFilters(imageFormats()); + dlg.setAcceptMode(QFileDialog::AcceptOpen); + dlg.setFileMode(QFileDialog::ExistingFile); if (dlg.exec() != QDialog::Accepted) { return; } - QUrl url = QUrl::fromLocalFile(dlg.selectedFile()); + QUrl url = QUrl::fromLocalFile(dlg.selectedFiles().first()); CreateAvatarJob *job = new CreateAvatarJob(this); connect(job, SIGNAL(finished(KJob*)), SLOT(avatarCreated(KJob*))); job->setUrl(url); diff --git a/src/createavatarjob.cpp b/src/createavatarjob.cpp --- a/src/createavatarjob.cpp +++ b/src/createavatarjob.cpp @@ -17,11 +17,14 @@ *************************************************************************************/ #include "createavatarjob.h" +#include "user_manager_debug.h" #include -#include "user_manager_debug.h" -#include -#include +#include +#include +#include + +#include #include CreateAvatarJob::CreateAvatarJob(QObject* parent) : KJob(parent) @@ -47,7 +50,7 @@ { qCDebug(USER_MANAGER_LOG) << "Starting: " << m_url; - KTemporaryFile file; + QTemporaryFile file; file.open(); m_tmpFile = file.fileName(); file.remove(); diff --git a/src/lib/modeltest.cpp b/src/lib/modeltest.cpp --- a/src/lib/modeltest.cpp +++ b/src/lib/modeltest.cpp @@ -24,6 +24,7 @@ #include "modeltest.h" #include +#include /*! * Connect to all of the models signals. Whenever anything happens recheck everything. @@ -386,27 +387,27 @@ // General Purpose roles that should return a QString QVariant variant = model->data(model->index(0, 0), Qt::ToolTipRole); if (variant.isValid()) { - Q_ASSERT(qVariantCanConvert(variant)); + Q_ASSERT(variant.canConvert(QMetaType::QString)); } variant = model->data(model->index(0, 0), Qt::StatusTipRole); if (variant.isValid()) { - Q_ASSERT(qVariantCanConvert(variant)); + Q_ASSERT(variant.canConvert(QMetaType::QString)); } variant = model->data(model->index(0, 0), Qt::WhatsThisRole); if (variant.isValid()) { - Q_ASSERT(qVariantCanConvert(variant)); + Q_ASSERT(variant.canConvert(QMetaType::QString)); } // General Purpose roles that should return a QSize variant = model->data(model->index(0, 0), Qt::SizeHintRole); if (variant.isValid()) { - Q_ASSERT(qVariantCanConvert(variant)); + Q_ASSERT(variant.canConvert(QMetaType::QSize)); } // General Purpose roles that should return a QFont QVariant fontVariant = model->data(model->index(0, 0), Qt::FontRole); if (fontVariant.isValid()) { - Q_ASSERT(qVariantCanConvert(fontVariant)); + Q_ASSERT(variant.canConvert(QMetaType::QFont)); } // Check that the alignment is one we know about @@ -419,12 +420,12 @@ // General Purpose roles that should return a QColor QVariant colorVariant = model->data(model->index(0, 0), Qt::BackgroundColorRole); if (colorVariant.isValid()) { - Q_ASSERT(qVariantCanConvert(colorVariant)); + Q_ASSERT(variant.canConvert(QMetaType::QColor)); } colorVariant = model->data(model->index(0, 0), Qt::TextColorRole); if (colorVariant.isValid()) { - Q_ASSERT(qVariantCanConvert(colorVariant)); + Q_ASSERT(variant.canConvert(QMetaType::QColor)); } // Check that the "check state" is one we know about. diff --git a/src/passworddialog.h b/src/passworddialog.h --- a/src/passworddialog.h +++ b/src/passworddialog.h @@ -23,10 +23,12 @@ #include -#include +#include +class QDialogButtonBox; + class QTimer; -class PasswordDialog : public KDialog, private Ui::PasswordDlg +class PasswordDialog : public QDialog, private Ui::PasswordDlg { Q_OBJECT @@ -45,10 +47,11 @@ QPalette m_negative; QPalette m_neutral; QPalette m_positive; + QDialogButtonBox *buttons; pwquality_settings_t *m_pwSettings; QByteArray m_username; QTimer *m_timer; }; -#endif //PASSWORD_DIALOG_H \ No newline at end of file +#endif //PASSWORD_DIALOG_H diff --git a/src/passworddialog.cpp b/src/passworddialog.cpp --- a/src/passworddialog.cpp +++ b/src/passworddialog.cpp @@ -19,24 +19,32 @@ #include "passworddialog.h" #include "user_manager_debug.h" + #include -#include +#include +#include +#include + #include -#include #include -#include PasswordDialog::PasswordDialog(QWidget* parent, Qt::WindowFlags flags) - : KDialog(parent, flags) + : QDialog(parent, flags) , m_pwSettings(0) , m_timer(new QTimer(this)) { setWindowTitle(i18nc("Title for change password dialog", "New Password")); - QWidget *widget = new QWidget(this); + QWidget *widget = new QWidget(); + QVBoxLayout *layout = new QVBoxLayout(this); setupUi(widget); - setMainWidget(widget); - button(KDialog::Ok)->setEnabled(false); + layout->addWidget(widget); + buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + buttons->button(QDialogButtonBox::Ok)->setEnabled(false); + buttons->button(QDialogButtonBox::Ok)->setShortcut(Qt::CTRL | Qt::Key_Return); + layout->addWidget(buttons); + setLayout(layout); + passwordEdit->setFocus(); m_timer->setInterval(400); m_timer->setSingleShot(true); @@ -54,6 +62,8 @@ connect(m_timer, SIGNAL(timeout()), SLOT(checkPassword())); connect(passwordEdit, SIGNAL(textEdited(QString)), SLOT(passwordChanged())); connect(verifyEdit, SIGNAL(textEdited(QString)), SLOT(passwordChanged())); + connect(buttons->button(QDialogButtonBox::Ok), SIGNAL(clicked(bool)), this, SLOT(accept())); + connect(buttons->button(QDialogButtonBox::Cancel), SIGNAL(clicked(bool)), this, SLOT(reject())); } PasswordDialog::~PasswordDialog() @@ -80,7 +90,7 @@ void PasswordDialog::checkPassword() { qCDebug(USER_MANAGER_LOG) << "Checking password"; - button(KDialog::Ok)->setEnabled(false); + buttons->button(QDialogButtonBox::Ok)->setEnabled(false); if (verifyEdit->text().isEmpty()) { qCDebug(USER_MANAGER_LOG) << "Verify password is empty"; @@ -128,7 +138,7 @@ strenghtLbl->setPalette(palette); strenghtLbl->setText(strenght); - button(KDialog::Ok)->setEnabled(true); + buttons->button(QDialogButtonBox::Ok)->setEnabled(true); } QString PasswordDialog::errorString(int error)