vlc | branch: master | Francois Cartegnie <[email protected]> | Mon Dec 2 18:54:55 2013 +0100| [2652d1bcc522a160b13889a1f201dce92aa1d3eb] | committer: Francois Cartegnie
Qt: update QUrlValidator (fix #9932) somehow #3435 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2652d1bcc522a160b13889a1f201dce92aa1d3eb --- modules/gui/qt4/util/validators.cpp | 23 +++++++++++++++++++---- modules/gui/qt4/util/validators.hpp | 1 + 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/modules/gui/qt4/util/validators.cpp b/modules/gui/qt4/util/validators.cpp index 56be4e9..397f4b8 100644 --- a/modules/gui/qt4/util/validators.cpp +++ b/modules/gui/qt4/util/validators.cpp @@ -24,12 +24,27 @@ #include "validators.hpp" +#include <QUrl> + QValidator::State UrlValidator::validate( QString& str, int& ) const { - str = str.trimmed(); - if( str.contains( ' ' ) ) + if( str.startsWith( ' ' ) ) return QValidator::Invalid; - if( !str.contains( "://" ) ) + + if ( str.isEmpty() ) + return QValidator::Intermediate; + + QUrl url( str ); + if ( url.scheme().isEmpty() ) return QValidator::Intermediate; - return QValidator::Acceptable; + + return ( url.isValid() ) ? QValidator::Acceptable : QValidator::Intermediate; +} + +void UrlValidator::fixup( QString & input ) const +{ + while( input.startsWith( ' ' ) ) + input.chop( 1 ); + QUrl fixed( input, QUrl::TolerantMode ); + input = fixed.toString(); } diff --git a/modules/gui/qt4/util/validators.hpp b/modules/gui/qt4/util/validators.hpp index f40be28..4a0cece 100644 --- a/modules/gui/qt4/util/validators.hpp +++ b/modules/gui/qt4/util/validators.hpp @@ -29,6 +29,7 @@ class UrlValidator : public QValidator public: UrlValidator( QObject *parent ) : QValidator( parent ) { } virtual QValidator::State validate( QString&, int& ) const; + virtual void fixup ( QString & input ) const; }; #endif // VALIDATORS_HPP _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
