mirror of
https://github.com/transmission/transmission
synced 2025-03-19 10:15:36 +00:00
Refactor and use the same code to calculate element positions in sizeHint () and paint () to prevent discrepancies. While we are at it, properly support RTL layout.
74 lines
1.7 KiB
C++
74 lines
1.7 KiB
C++
/*
|
|
* This file Copyright (C) 2009-2014 Mnemosyne LLC
|
|
*
|
|
* It may be used under the GNU GPL versions 2 or 3
|
|
* or any future license endorsed by Mnemosyne LLC.
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
#ifndef QTR_UTILS
|
|
#define QTR_UTILS
|
|
|
|
#include <QIcon>
|
|
#include <QObject>
|
|
#include <QRect>
|
|
#include <QString>
|
|
|
|
#include <cctype> // isxdigit()
|
|
|
|
#include "speed.h"
|
|
|
|
class Utils: public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
Utils () {}
|
|
virtual ~Utils () {}
|
|
|
|
public:
|
|
static QString remoteFileChooser (QWidget * parent, const QString& title, const QString& myPath, bool dir, bool local);
|
|
static QIcon guessMimeIcon (const QString& filename);
|
|
// Test if string is UTF-8 or not
|
|
static bool isValidUtf8 (const char *s);
|
|
|
|
static QString removeTrailingDirSeparator (const QString& path);
|
|
|
|
static void narrowRect (QRect& rect, int dx1, int dx2, Qt::LayoutDirection direction)
|
|
{
|
|
if (direction == Qt::RightToLeft)
|
|
qSwap (dx1, dx2);
|
|
rect.adjust (dx1, 0, -dx2, 0);
|
|
}
|
|
|
|
// meh
|
|
static void toStderr (const QString& qstr);
|
|
|
|
///
|
|
/// URLs
|
|
///
|
|
|
|
static bool isMagnetLink (const QString& s)
|
|
{
|
|
return s.startsWith (QString::fromUtf8 ("magnet:?"));
|
|
}
|
|
|
|
static bool isHexHashcode (const QString& s)
|
|
{
|
|
if (s.length() != 40)
|
|
return false;
|
|
foreach (QChar ch, s) if (!isxdigit (ch.unicode())) return false;
|
|
return true;
|
|
}
|
|
|
|
static bool isUriWithSupportedScheme (const QString& s)
|
|
{
|
|
static const QString ftp = QString::fromUtf8 ("ftp://");
|
|
static const QString http = QString::fromUtf8 ("http://");
|
|
static const QString https = QString::fromUtf8 ("https://");
|
|
return s.startsWith(http) || s.startsWith(https) || s.startsWith(ftp);
|
|
}
|
|
};
|
|
|
|
#endif
|