transmission/qt/Utils.h

102 lines
2.4 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
*
*/
#pragma once
#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;
class QModelIndex;
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
{
public:
static QIcon getFileIcon();
static QIcon getFolderIcon();
static QIcon guessMimeIcon(QString const& filename);
static QIcon getIconFromIndex(QModelIndex const& index);
2013-09-14 22:45:04 +00:00
// Test if string is UTF-8 or not
static bool isValidUtf8(char const* s);
2009-04-09 18:55:47 +00:00
static QString removeTrailingDirSeparator(QString const& 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, QString const& text);
static int measureHeaderItem(QHeaderView* view, QString const& text);
static QColor getFadedColor(QColor const& 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
///
static bool isMagnetLink(QString const& s)
2013-09-14 22:45:04 +00:00
{
return s.startsWith(QString::fromUtf8("magnet:?"));
2013-09-14 22:45:04 +00:00
}
static bool isHexHashcode(QString const& s)
2013-09-14 22:45:04 +00:00
{
if (s.length() != 40)
{
return false;
}
for (QChar const ch : s)
{
if (!isxdigit(ch.unicode()))
{
return false;
}
}
return true;
2013-09-14 22:45:04 +00:00
}
static bool isUriWithSupportedScheme(QString const& s)
2013-09-14 22:45:04 +00:00
{
static QString const ftp = QString::fromUtf8("ftp://");
static QString const http = QString::fromUtf8("http://");
static QString const https = QString::fromUtf8("https://");
return s.startsWith(http) || s.startsWith(https) || s.startsWith(ftp);
2013-09-14 22:45:04 +00:00
}
2009-04-09 18:55:47 +00:00
};