1/*
2 * This file Copyright (C) Mnemosyne LLC
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2
6 * as published by the Free Software Foundation.
7 *
8 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
9 *
10 * $Id: utils.h 13448 2012-08-19 16:12:20Z jordan $
11 */
12
13#ifndef QTR_UTILS
14#define QTR_UTILS
15
16#include <QString>
17#include <QObject>
18#include <QIcon>
19
20#include <cctype> // isxdigit()
21
22#include "speed.h"
23
24class Utils: public QObject
25{
26        Q_OBJECT
27
28    public:
29        Utils( ) { }
30        virtual ~Utils( ) { }
31
32    public:
33        static QString remoteFileChooser( QWidget * parent, const QString& title, const QString& myPath, bool dir, bool local );
34        static const QIcon& guessMimeIcon( const QString& filename );
35        // Test if string is UTF-8 or not
36        static bool isValidUtf8 ( const char *s );
37
38        // meh
39        static void toStderr( const QString& qstr );
40
41        ///
42        /// URLs
43        ///
44
45        static bool isMagnetLink( const QString& s ) { return s.startsWith( QString::fromAscii( "magnet:?" ) ); }
46
47        static bool isHexHashcode( const QString& s )
48        {
49            if( s.length() != 40 ) return false;
50            foreach( QChar ch, s ) if( !isxdigit( ch.toAscii() ) ) return false;
51            return true;
52        }
53
54        static bool isUriWithSupportedScheme( const QString& s )
55        {
56            static const QString ftp = QString::fromAscii( "ftp://" );
57            static const QString http = QString::fromAscii( "http://" );
58            static const QString https = QString::fromAscii( "https://" );
59            return s.startsWith(http) || s.startsWith(https) || s.startsWith(ftp);
60        }
61
62};
63
64#endif
65