2023-11-01 21:11:11 +00:00
|
|
|
// This file Copyright © Mnemosyne LLC.
|
2022-08-08 18:05:39 +00:00
|
|
|
// It may be used under GPLv2 (SPDX: GPL-2.0-only), GPLv3 (SPDX: GPL-3.0-only),
|
2022-01-20 18:27:56 +00:00
|
|
|
// or any future license endorsed by Mnemosyne LLC.
|
|
|
|
// License text can be found in the licenses/ folder.
|
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
|
|
|
|
2022-04-25 01:49:52 +00:00
|
|
|
#include <cstddef> // size_t
|
2022-08-17 16:08:36 +00:00
|
|
|
#include <utility>
|
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>
|
2023-04-14 18:38:56 +00:00
|
|
|
#include <QSpinBox>
|
2015-01-17 16:59:42 +00:00
|
|
|
#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
|
|
|
|
2020-08-15 15:42:51 +00:00
|
|
|
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
|
|
|
|
|
|
|
namespace std
|
|
|
|
{
|
|
|
|
|
|
|
|
template<>
|
|
|
|
struct hash<QString>
|
|
|
|
{
|
2021-08-15 09:41:48 +00:00
|
|
|
std::size_t operator()(QString const& s) const
|
2020-08-15 15:42:51 +00:00
|
|
|
{
|
|
|
|
return qHash(s);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace std
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
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 getIconFromIndex(QModelIndex const& index);
|
2017-02-07 22:06:28 +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
|
|
|
}
|
|
|
|
|
2020-11-02 01:13:32 +00:00
|
|
|
static int measureViewItem(QAbstractItemView const* view, QString const& text);
|
|
|
|
static int measureHeaderItem(QHeaderView const* 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>
|
2020-01-03 00:30:26 +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
|
|
|
{
|
2023-07-18 15:20:17 +00:00
|
|
|
dialog = new DialogT{ std::forward<ArgsT>(args)... }; // NOLINT clang-analyzer-cplusplus.NewDelete
|
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
|
|
|
}
|
|
|
|
}
|
2023-04-14 18:38:56 +00:00
|
|
|
|
|
|
|
static void updateSpinBoxFormat(QSpinBox* spinBox, char const* context, char const* format, QString const& placeholder);
|
2009-04-09 18:55:47 +00:00
|
|
|
};
|