d1f6c4e95b
* add final specifiers * apply clang-format * fix for macOS
145 lines
3.7 KiB
C++
145 lines
3.7 KiB
C++
#pragma once
|
|
|
|
#ifndef XSHNOTEVIEWER_H
|
|
#define XSHNOTEVIEWER_H
|
|
|
|
#include <memory>
|
|
|
|
#include "toonz/txsheet.h"
|
|
#include "toonzqt/dvdialog.h"
|
|
#include "toonzqt/dvtextedit.h"
|
|
#include "toonzqt/colorfield.h"
|
|
|
|
#include <QFrame>
|
|
#include <QScrollArea>
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// forward declaration
|
|
class XsheetViewer;
|
|
class QTextEdit;
|
|
class TColorStyle;
|
|
class QToolButton;
|
|
class QPushButton;
|
|
class QComboBox;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace XsheetGUI {
|
|
|
|
//=============================================================================
|
|
// NotePopup
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class NotePopup final : public DVGui::Dialog {
|
|
Q_OBJECT
|
|
XsheetViewer *m_viewer;
|
|
int m_noteIndex;
|
|
DVGui::DvTextEdit *m_textEditor;
|
|
int m_currentColorIndex;
|
|
QList<DVGui::ColorField *> m_colorFields;
|
|
//! Used to avoid double click in discard or post button.
|
|
bool m_isOneButtonPressed;
|
|
|
|
public:
|
|
NotePopup(XsheetViewer *viewer, int noteIndex);
|
|
~NotePopup() {}
|
|
|
|
void setCurrentNoteIndex(int index);
|
|
|
|
void update();
|
|
|
|
protected:
|
|
TXshNoteSet *getNotes();
|
|
QList<TPixel32> getColors();
|
|
|
|
void onColorFieldEditingChanged(const TPixel32 &color, bool isEditing,
|
|
int index);
|
|
|
|
DVGui::ColorField *createColorField(int index);
|
|
void updateColorField();
|
|
|
|
void showEvent(QShowEvent *) override;
|
|
void hideEvent(QHideEvent *) override;
|
|
|
|
protected slots:
|
|
void onColor1Switched(const TPixel32 &, bool isDragging);
|
|
void onColor2Switched(const TPixel32 &, bool isDragging);
|
|
void onColor3Switched(const TPixel32 &, bool isDragging);
|
|
void onColor4Switched(const TPixel32 &, bool isDragging);
|
|
void onColor5Switched(const TPixel32 &, bool isDragging);
|
|
void onColor6Switched(const TPixel32 &, bool isDragging);
|
|
void onColor7Switched(const TPixel32 &, bool isDragging);
|
|
|
|
void onColorChanged(const TPixel32 &, bool isDragging);
|
|
void onNoteAdded();
|
|
void onNoteDiscarded();
|
|
void onTextEditFocusIn();
|
|
|
|
void onXsheetSwitched();
|
|
};
|
|
|
|
//=============================================================================
|
|
// NoteWidget
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class NoteWidget final : public QWidget {
|
|
Q_OBJECT
|
|
XsheetViewer *m_viewer;
|
|
int m_noteIndex;
|
|
std::unique_ptr<NotePopup> m_noteEditor;
|
|
bool m_isHovered;
|
|
|
|
public:
|
|
NoteWidget(XsheetViewer *parent = 0, int noteIndex = -1);
|
|
|
|
int getNoteIndex() const { return m_noteIndex; }
|
|
void setNoteIndex(int index) {
|
|
m_noteIndex = index;
|
|
if (m_noteEditor) m_noteEditor->setCurrentNoteIndex(index);
|
|
}
|
|
|
|
void paint(QPainter *painter, QPoint pos = QPoint(), bool isCurrent = false);
|
|
|
|
void openNotePopup();
|
|
|
|
protected:
|
|
void paintEvent(QPaintEvent *event) override;
|
|
};
|
|
|
|
//=============================================================================
|
|
// NoteArea
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class NoteArea final : public QFrame {
|
|
Q_OBJECT
|
|
|
|
std::unique_ptr<NotePopup> m_newNotePopup; // Popup used to create new note
|
|
XsheetViewer *m_viewer;
|
|
|
|
QToolButton *m_nextNoteButton;
|
|
QToolButton *m_precNoteButton;
|
|
|
|
QComboBox *m_frameDisplayStyleCombo;
|
|
|
|
public:
|
|
#if QT_VERSION >= 0x050500
|
|
NoteArea(XsheetViewer *parent = 0, Qt::WindowFlags flags = 0);
|
|
#else
|
|
NoteArea(XsheetViewer *parent = 0, Qt::WFlags flags = 0);
|
|
#endif
|
|
|
|
void updatePopup() { m_newNotePopup->update(); }
|
|
void updateButtons();
|
|
|
|
protected slots:
|
|
void toggleNewNote();
|
|
void nextNote();
|
|
void precNote();
|
|
|
|
void onFrameDisplayStyleChanged(int id);
|
|
};
|
|
|
|
} // namespace XsheetGUI;
|
|
|
|
#endif // XSHNOTEVIEWER_H
|