2009-04-09 18:55:47 +00:00
|
|
|
/*
|
2015-06-10 21:27:11 +00:00
|
|
|
* This file Copyright (C) 2009-2015 Mnemosyne LLC
|
2009-04-09 18:55:47 +00:00
|
|
|
*
|
2014-01-21 03:10:30 +00:00
|
|
|
* It may be used under the GNU GPL versions 2 or 3
|
2014-01-19 01:09:44 +00:00
|
|
|
* or any future license endorsed by Mnemosyne LLC.
|
2009-04-09 18:55:47 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2016-03-29 16:37:21 +00:00
|
|
|
#pragma once
|
2015-06-10 21:27:11 +00:00
|
|
|
|
|
|
|
#include <cctype> // isxdigit()
|
2009-04-09 18:55:47 +00:00
|
|
|
|
2015-07-30 06:55:28 +00:00
|
|
|
#include <QPointer>
|
2015-01-17 16:59:42 +00:00
|
|
|
#include <QRect>
|
|
|
|
#include <QString>
|
2009-04-09 18:55:47 +00:00
|
|
|
|
2015-06-15 21:07:46 +00:00
|
|
|
class QAbstractItemView;
|
2015-06-10 21:27:11 +00:00
|
|
|
class QColor;
|
2015-06-15 21:07:46 +00:00
|
|
|
class QHeaderView;
|
2015-06-12 22:12:12 +00:00
|
|
|
class QIcon;
|
2017-02-07 22:06:28 +00:00
|
|
|
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
|
|
|
{
|
2017-04-19 12:04:45 +00:00
|
|
|
public:
|
2017-04-20 16:02:19 +00:00
|
|
|
static QIcon guessMimeIcon(QString const& filename);
|
|
|
|
static QIcon getIconFromIndex(QModelIndex const& index);
|
2017-02-07 22:06:28 +00:00
|
|
|
|
2013-09-14 22:45:04 +00:00
|
|
|
// Test if string is UTF-8 or not
|
2017-04-20 16:02:19 +00:00
|
|
|
static bool isValidUtf8(char const* s);
|
2009-04-09 18:55:47 +00:00
|
|
|
|
2017-04-20 16:02:19 +00:00
|
|
|
static QString removeTrailingDirSeparator(QString const& path);
|
2013-09-08 19:59:47 +00:00
|
|
|
|
2017-04-19 12:04:45 +00:00
|
|
|
static void narrowRect(QRect& rect, int dx1, int dx2, Qt::LayoutDirection direction)
|
2015-01-17 16:59:42 +00:00
|
|
|
{
|
2017-04-19 12:04:45 +00:00
|
|
|
if (direction == Qt::RightToLeft)
|
|
|
|
{
|
|
|
|
qSwap(dx1, dx2);
|
|
|
|
}
|
|
|
|
|
|
|
|
rect.adjust(dx1, 0, -dx2, 0);
|
2015-01-17 16:59:42 +00:00
|
|
|
}
|
|
|
|
|
2017-04-20 16:02:19 +00:00
|
|
|
static int measureViewItem(QAbstractItemView* view, QString const& text);
|
|
|
|
static int measureHeaderItem(QHeaderView* view, QString const& text);
|
2015-06-15 21:07:46 +00:00
|
|
|
|
2017-04-20 16:02:19 +00:00
|
|
|
static QColor getFadedColor(QColor const& color);
|
2015-06-10 21:27:11 +00:00
|
|
|
|
2015-07-30 06:18:02 +00:00
|
|
|
template<typename DialogT, typename... ArgsT>
|
2017-04-19 12:04:45 +00:00
|
|
|
static void openDialog(QPointer<DialogT>& dialog, ArgsT&& ... args)
|
2015-07-30 06:18:02 +00:00
|
|
|
{
|
2017-04-19 12:04:45 +00:00
|
|
|
if (dialog.isNull())
|
2015-07-30 06:18:02 +00:00
|
|
|
{
|
2019-02-10 11:05:16 +00:00
|
|
|
dialog = new DialogT(std::forward<ArgsT>(args)...);
|
2017-04-19 12:04:45 +00:00
|
|
|
dialog->setAttribute(Qt::WA_DeleteOnClose);
|
|
|
|
dialog->show();
|
2015-07-30 06:18:02 +00:00
|
|
|
}
|
2017-04-19 12:04:45 +00:00
|
|
|
else
|
2015-07-30 06:18:02 +00:00
|
|
|
{
|
2017-04-19 12:04:45 +00:00
|
|
|
dialog->raise();
|
|
|
|
dialog->activateWindow();
|
2015-07-30 06:18:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-09-14 22:45:04 +00:00
|
|
|
///
|
|
|
|
/// URLs
|
|
|
|
///
|
2010-05-13 23:54:32 +00:00
|
|
|
|
2017-04-20 16:02:19 +00:00
|
|
|
static bool isMagnetLink(QString const& s)
|
2013-09-14 22:45:04 +00:00
|
|
|
{
|
2017-04-19 12:04:45 +00:00
|
|
|
return s.startsWith(QString::fromUtf8("magnet:?"));
|
2013-09-14 22:45:04 +00:00
|
|
|
}
|
2010-05-13 23:54:32 +00:00
|
|
|
|
2017-04-20 16:02:19 +00:00
|
|
|
static bool isHexHashcode(QString const& s)
|
2013-09-14 22:45:04 +00:00
|
|
|
{
|
2017-04-19 12:04:45 +00:00
|
|
|
if (s.length() != 40)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2017-04-20 16:02:19 +00:00
|
|
|
for (QChar const ch : s)
|
2017-04-19 12:04:45 +00:00
|
|
|
{
|
|
|
|
if (!isxdigit(ch.unicode()))
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
2013-09-14 22:45:04 +00:00
|
|
|
}
|
2010-05-13 23:54:32 +00:00
|
|
|
|
2017-04-20 16:02:19 +00:00
|
|
|
static bool isUriWithSupportedScheme(QString const& s)
|
2013-09-14 22:45:04 +00:00
|
|
|
{
|
2017-04-20 16:02:19 +00:00
|
|
|
static QString const ftp = QString::fromUtf8("ftp://");
|
|
|
|
static QString const http = QString::fromUtf8("http://");
|
|
|
|
static QString const https = QString::fromUtf8("https://");
|
2017-04-19 12:04:45 +00:00
|
|
|
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
|
|
|
};
|