transmission/qt/Utils.h

89 lines
2.1 KiB
C
Raw Normal View History

2009-04-09 18:55:47 +00:00
/*
* This file Copyright (C) 2009-2015 Mnemosyne LLC
2009-04-09 18:55:47 +00:00
*
* It may be used under the GNU GPL versions 2 or 3
* or any future license endorsed by Mnemosyne LLC.
2009-04-09 18:55:47 +00:00
*
* $Id$
2009-04-09 18:55:47 +00:00
*/
#ifndef QTR_UTILS_H
#define QTR_UTILS_H
#include <cctype> // isxdigit()
2009-04-09 18:55:47 +00:00
#include <QPointer>
#include <QRect>
#include <QString>
2009-04-09 18:55:47 +00:00
class QAbstractItemView;
class QColor;
class QHeaderView;
2015-06-12 22:12:12 +00:00
class QIcon;
2009-04-09 18:55:47 +00:00
2015-06-12 22:12:12 +00:00
class Utils
2009-04-09 18:55:47 +00:00
{
2013-09-14 22:45:04 +00:00
public:
static QIcon guessMimeIcon (const QString& filename);
// Test if string is UTF-8 or not
2015-06-12 22:12:12 +00:00
static bool isValidUtf8 (const char * s);
2009-04-09 18:55:47 +00:00
2013-09-14 22:45:04 +00:00
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);
}
static int measureViewItem (QAbstractItemView * view, const QString& text);
static int measureHeaderItem (QHeaderView * view, const QString& text);
static QColor getFadedColor (const QColor& color);
template<typename DialogT, typename... ArgsT>
static void
openDialog (QPointer<DialogT>& dialog, ArgsT&&... args)
{
if (dialog.isNull ())
{
dialog = new DialogT (std::forward<ArgsT> (args)...);
dialog->setAttribute (Qt::WA_DeleteOnClose);
dialog->show ();
}
else
{
dialog->raise ();
dialog->activateWindow ();
}
}
2013-09-14 22:45:04 +00:00
///
/// URLs
///
2013-09-14 22:45:04 +00:00
static bool isMagnetLink (const QString& s)
{
return s.startsWith (QString::fromUtf8 ("magnet:?"));
}
2013-09-14 22:45:04 +00:00
static bool isHexHashcode (const QString& s)
{
if (s.length() != 40)
return false;
for (const QChar ch: s) if (!isxdigit (ch.unicode())) return false;
2013-09-14 22:45:04 +00:00
return true;
}
2013-09-14 22:45:04 +00:00
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);
}
2009-04-09 18:55:47 +00:00
};
#endif // QTR_UTILS_H