1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include "gui/icons.h"
#include "item/itemwidgetwrapper.h"
#include <QVariant>
#include <QWidget>
namespace Ui {
class ItemNotesSettings;
}
class QTextEdit;
class QTimer;
enum NotesPosition {
NotesAbove,
NotesBelow,
NotesBeside,
};
class ItemNotes final : public QWidget, public ItemWidgetWrapper
{
Q_OBJECT
public:
ItemNotes(ItemWidget *childItem, const QString &text, const QByteArray &icon,
NotesPosition notesPosition, bool showToolTip);
void setCurrent(bool current) override;
protected:
void updateSize(QSize maximumSize, int idealWidth) override;
void paintEvent(QPaintEvent *event) override;
bool eventFilter(QObject *, QEvent *event) override;
private:
void showToolTip();
QTextEdit *m_notes;
QWidget *m_icon;
QTimer *m_timerShowToolTip;
QString m_toolTipText;
bool m_isCurrent = false;
};
class ItemNotesLoader final : public QObject, public ItemLoaderInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID COPYQ_PLUGIN_ITEM_LOADER_ID)
Q_INTERFACES(ItemLoaderInterface)
public:
ItemNotesLoader();
~ItemNotesLoader();
QString id() const override { return "itemnotes"; }
QString name() const override { return tr("Notes"); }
QString author() const override { return QString(); }
QString description() const override { return tr("Display notes for items."); }
QVariant icon() const override { return QVariant(IconPenToSquare); }
QStringList formatsToSave() const override;
void applySettings(QSettings &settings) override;
void loadSettings(const QSettings &settings) override;
QWidget *createSettingsWidget(QWidget *parent) override;
ItemWidget *transform(ItemWidget *itemWidget, const QVariantMap &data) override;
bool matches(const QModelIndex &index, const ItemFilter &filter) const override;
private:
bool m_notesAtBottom = false;
bool m_notesBeside = false;
bool m_showTooltip = false;
std::unique_ptr<Ui::ItemNotesSettings> ui;
};
|