From 5ec954917c9a59ce0ec8ba3a30b99bb9cd30e297 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 13 Mar 2016 23:56:32 +0100 Subject: Added a path validator --- accounts/maildir/maildirsettings.cpp | 21 +++++++++++++++++++++ accounts/maildir/maildirsettings.h | 3 +++ .../package/contents/ui/MaildirAccountSettings.qml | 6 ++++++ 3 files changed, 30 insertions(+) (limited to 'accounts') diff --git a/accounts/maildir/maildirsettings.cpp b/accounts/maildir/maildirsettings.cpp index 58ff77fd..18abaebb 100644 --- a/accounts/maildir/maildirsettings.cpp +++ b/accounts/maildir/maildirsettings.cpp @@ -23,6 +23,7 @@ #include #include #include +#include MaildirSettings::MaildirSettings(QObject *parent) : QObject(parent) @@ -77,8 +78,28 @@ QString MaildirSettings::path() const return mPath; } +QValidator *MaildirSettings::pathValidator() const +{ + class PathValidator : public QValidator { + State validate(QString &input, int &pos) const { + Q_UNUSED(pos); + if (QDir(input).exists()) { + return Acceptable; + } else { + return Intermediate; + } + } + }; + static PathValidator *pathValidator = new PathValidator; + return pathValidator; +} + void MaildirSettings::save() { + if (!QDir(mPath).exists()) { + qWarning() << "The path doesn't exist: " << mPath; + return; + } if (!mIdentifier.isEmpty()) { Sink::ApplicationDomain::SinkResource resource(mIdentifier); resource.setProperty("path", mPath); diff --git a/accounts/maildir/maildirsettings.h b/accounts/maildir/maildirsettings.h index 9a65cf39..063fb9da 100644 --- a/accounts/maildir/maildirsettings.h +++ b/accounts/maildir/maildirsettings.h @@ -19,6 +19,7 @@ #pragma once #include +#include class MaildirSettings : public QObject { @@ -26,6 +27,7 @@ class MaildirSettings : public QObject Q_PROPERTY(QByteArray identifier READ identifier WRITE setIdentifier) Q_PROPERTY(QByteArray accountIdentifier READ accountIdentifier WRITE setAccountIdentifier) Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + Q_PROPERTY(QValidator* pathValidator READ pathValidator) public: MaildirSettings(QObject *parent = 0); @@ -38,6 +40,7 @@ public: void setPath(const QString &); QString path() const; + QValidator *pathValidator() const; Q_INVOKABLE void save(); Q_INVOKABLE void remove(); diff --git a/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml b/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml index 2f5049e0..61828f34 100644 --- a/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml +++ b/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml @@ -51,6 +51,12 @@ Rectangle { Layout.fillWidth: true text: maildirSettings.path onTextChanged: { maildirSettings.path = text; } + validator: maildirSettings.pathValidator + Rectangle { + anchors.fill: parent + opacity: 0.2 + color: path.acceptableInput ? "green" : "yellow" + } } Button { -- cgit v1.2.3