Capture GUI refactor (#1939)
* Merge CTB::ButtonType into CaptureTool::Type Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Remove configshortcuts.cpp which I forgot to do earlier Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Add activeButtonTool & activeButtonToolType in CaptureWidget Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Rename slots in CaptureTool for better mnemonics Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Fix move tool bug Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Refactor ShortcutsWidget::initButtons Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Move code from CaptureWidget to SelectionWidget: part 1 Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Move code from CaptureWidget to SelectionWidget: part 2 Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Move code from CaptureWidget to SelectionWidget: part 3 Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Move code from CaptureWidget to SelectionWidget: part 4 Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Add SelectionWidget::updateCursor Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Move code from CaptureWidget to SelectionWidget: part 5 Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Refactor mouse events in CaptureWidget Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Overlay message update Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Replace connect/disconnect with blockSignals Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * updateIcon on button animation finished Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Remove CaptureWidget::selectAll Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Move moveLeft and similar to SelectionWidget Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Mark update calls for removal Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Specialize CaptureWidget update to affected rects Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Tune update of tool objects Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Remove redundant CaptureTool requests Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Improve performance of update in CaptureWidget Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Fix failing builds Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Fix failing builds again Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Fix undo/redo update Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Undo/redo update workaround Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Extend capture tool update rects Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Fix circle count tool update bug Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Add 'Left Double-Click' tooltip to copy button Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Improve ColorPicker performance Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
This commit is contained in:
@@ -16,14 +16,14 @@
|
||||
// Button represents a single button of the capture widget, it can enable
|
||||
// multiple functionality.
|
||||
|
||||
CaptureToolButton::CaptureToolButton(const ButtonType t, QWidget* parent)
|
||||
CaptureToolButton::CaptureToolButton(const CaptureTool::Type t, QWidget* parent)
|
||||
: CaptureButton(parent)
|
||||
, m_buttonType(t)
|
||||
, m_tool(nullptr)
|
||||
, m_emergeAnimation(nullptr)
|
||||
{
|
||||
initButton();
|
||||
if (t == TYPE_SELECTIONINDICATOR) {
|
||||
if (t == CaptureTool::TYPE_SELECTIONINDICATOR) {
|
||||
QFont f = this->font();
|
||||
setFont(QFont(f.family(), 7, QFont::Bold));
|
||||
} else {
|
||||
@@ -62,8 +62,11 @@ void CaptureToolButton::initButton()
|
||||
QString tooltip = m_tool->description();
|
||||
QString shortcut =
|
||||
ConfigHandler().shortcut(QVariant::fromValue(m_buttonType).toString());
|
||||
if (!shortcut.isEmpty()) {
|
||||
tooltip += QString(" (%1)").arg(shortcut);
|
||||
if (m_buttonType == CaptureTool::TYPE_COPY) {
|
||||
tooltip += QStringLiteral(" (%1Left Double-Click)")
|
||||
.arg(shortcut.isEmpty() ? QString() : shortcut + " or ");
|
||||
} else if (!shortcut.isEmpty()) {
|
||||
tooltip += QStringLiteral(" (%1)").arg(shortcut);
|
||||
}
|
||||
setToolTip(tooltip);
|
||||
|
||||
@@ -81,7 +84,7 @@ void CaptureToolButton::updateIcon()
|
||||
setIconSize(size() * 0.6);
|
||||
}
|
||||
|
||||
QList<CaptureToolButton::ButtonType> CaptureToolButton::getIterableButtonTypes()
|
||||
const QList<CaptureTool::Type>& CaptureToolButton::getIterableButtonTypes()
|
||||
{
|
||||
return iterableButtonTypes;
|
||||
}
|
||||
@@ -105,8 +108,10 @@ void CaptureToolButton::animatedShow()
|
||||
if (!isVisible()) {
|
||||
show();
|
||||
m_emergeAnimation->start();
|
||||
connect(
|
||||
m_emergeAnimation, &QPropertyAnimation::finished, this, []() {});
|
||||
connect(m_emergeAnimation,
|
||||
&QPropertyAnimation::finished,
|
||||
this,
|
||||
[this]() { updateIcon(); });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,68 +129,60 @@ void CaptureToolButton::setColor(const QColor& c)
|
||||
|
||||
QColor CaptureToolButton::m_mainColor;
|
||||
|
||||
static std::map<CaptureToolButton::ButtonType, int> buttonTypeOrder
|
||||
static std::map<CaptureTool::Type, int> buttonTypeOrder
|
||||
{
|
||||
{ CaptureToolButton::TYPE_PENCIL, 0 },
|
||||
{ CaptureToolButton::TYPE_DRAWER, 1 },
|
||||
{ CaptureToolButton::TYPE_ARROW, 2 },
|
||||
{ CaptureToolButton::TYPE_SELECTION, 3 },
|
||||
{ CaptureToolButton::TYPE_RECTANGLE, 4 },
|
||||
{ CaptureToolButton::TYPE_CIRCLE, 5 },
|
||||
{ CaptureToolButton::TYPE_MARKER, 6 },
|
||||
{ CaptureToolButton::TYPE_TEXT, 7 },
|
||||
{ CaptureToolButton::TYPE_PIXELATE, 8 },
|
||||
{ CaptureToolButton::TYPE_INVERT, 9 },
|
||||
{ CaptureToolButton::TYPE_CIRCLECOUNT, 10 },
|
||||
{ CaptureToolButton::TYPE_SELECTIONINDICATOR, 11 },
|
||||
{ CaptureToolButton::TYPE_MOVESELECTION, 12 },
|
||||
{ CaptureToolButton::TYPE_UNDO, 13 },
|
||||
{ CaptureToolButton::TYPE_REDO, 14 },
|
||||
{ CaptureToolButton::TYPE_COPY, 15 },
|
||||
{ CaptureToolButton::TYPE_SAVE, 16 },
|
||||
{ CaptureToolButton::TYPE_IMAGEUPLOADER, 17 },
|
||||
{ CaptureTool::TYPE_PENCIL, 0 }, { CaptureTool::TYPE_DRAWER, 1 },
|
||||
{ CaptureTool::TYPE_ARROW, 2 }, { CaptureTool::TYPE_SELECTION, 3 },
|
||||
{ CaptureTool::TYPE_RECTANGLE, 4 }, { CaptureTool::TYPE_CIRCLE, 5 },
|
||||
{ CaptureTool::TYPE_MARKER, 6 }, { CaptureTool::TYPE_TEXT, 7 },
|
||||
{ CaptureTool::TYPE_PIXELATE, 8 }, { CaptureTool::TYPE_INVERT, 9 },
|
||||
{ CaptureTool::TYPE_CIRCLECOUNT, 10 },
|
||||
{ CaptureTool::TYPE_SELECTIONINDICATOR, 11 },
|
||||
{ CaptureTool::TYPE_MOVESELECTION, 12 }, { CaptureTool::TYPE_UNDO, 13 },
|
||||
{ CaptureTool::TYPE_REDO, 14 }, { CaptureTool::TYPE_COPY, 15 },
|
||||
{ CaptureTool::TYPE_SAVE, 16 }, { CaptureTool::TYPE_IMAGEUPLOADER, 17 },
|
||||
#if !defined(Q_OS_MACOS)
|
||||
{ CaptureToolButton::TYPE_OPEN_APP, 18 },
|
||||
{ CaptureToolButton::TYPE_EXIT, 19 }, { CaptureToolButton::TYPE_PIN, 20 },
|
||||
{ CaptureTool::TYPE_OPEN_APP, 18 }, { CaptureTool::TYPE_EXIT, 19 },
|
||||
{ CaptureTool::TYPE_PIN, 20 },
|
||||
#else
|
||||
{ CaptureToolButton::TYPE_EXIT, 18 }, { CaptureToolButton::TYPE_PIN, 19 },
|
||||
{ CaptureTool::TYPE_EXIT, 18 }, { CaptureTool::TYPE_PIN, 19 },
|
||||
#endif
|
||||
|
||||
{ CaptureToolButton::TYPE_SIZEINCREASE, 21 },
|
||||
{ CaptureToolButton::TYPE_SIZEDECREASE, 22 },
|
||||
{ CaptureTool::TYPE_SIZEINCREASE, 21 },
|
||||
{ CaptureTool::TYPE_SIZEDECREASE, 22 },
|
||||
};
|
||||
|
||||
int CaptureToolButton::getPriorityByButton(CaptureToolButton::ButtonType b)
|
||||
int CaptureToolButton::getPriorityByButton(CaptureTool::Type b)
|
||||
{
|
||||
auto it = buttonTypeOrder.find(b);
|
||||
return it == buttonTypeOrder.cend() ? (int)buttonTypeOrder.size()
|
||||
: it->second;
|
||||
}
|
||||
|
||||
QList<CaptureToolButton::ButtonType> CaptureToolButton::iterableButtonTypes = {
|
||||
CaptureToolButton::TYPE_PENCIL,
|
||||
CaptureToolButton::TYPE_DRAWER,
|
||||
CaptureToolButton::TYPE_ARROW,
|
||||
CaptureToolButton::TYPE_SELECTION,
|
||||
CaptureToolButton::TYPE_RECTANGLE,
|
||||
CaptureToolButton::TYPE_CIRCLE,
|
||||
CaptureToolButton::TYPE_MARKER,
|
||||
CaptureToolButton::TYPE_TEXT,
|
||||
CaptureToolButton::TYPE_PIXELATE,
|
||||
CaptureToolButton::TYPE_INVERT,
|
||||
CaptureToolButton::TYPE_SELECTIONINDICATOR,
|
||||
CaptureToolButton::TYPE_MOVESELECTION,
|
||||
CaptureToolButton::TYPE_UNDO,
|
||||
CaptureToolButton::TYPE_REDO,
|
||||
CaptureToolButton::TYPE_COPY,
|
||||
CaptureToolButton::TYPE_SAVE,
|
||||
CaptureToolButton::TYPE_EXIT,
|
||||
CaptureToolButton::TYPE_IMAGEUPLOADER,
|
||||
QList<CaptureTool::Type> CaptureToolButton::iterableButtonTypes = {
|
||||
CaptureTool::TYPE_PENCIL,
|
||||
CaptureTool::TYPE_DRAWER,
|
||||
CaptureTool::TYPE_ARROW,
|
||||
CaptureTool::TYPE_SELECTION,
|
||||
CaptureTool::TYPE_RECTANGLE,
|
||||
CaptureTool::TYPE_CIRCLE,
|
||||
CaptureTool::TYPE_MARKER,
|
||||
CaptureTool::TYPE_TEXT,
|
||||
CaptureTool::TYPE_PIXELATE,
|
||||
CaptureTool::TYPE_INVERT,
|
||||
CaptureTool::TYPE_SELECTIONINDICATOR,
|
||||
CaptureTool::TYPE_MOVESELECTION,
|
||||
CaptureTool::TYPE_UNDO,
|
||||
CaptureTool::TYPE_REDO,
|
||||
CaptureTool::TYPE_COPY,
|
||||
CaptureTool::TYPE_SAVE,
|
||||
CaptureTool::TYPE_EXIT,
|
||||
CaptureTool::TYPE_IMAGEUPLOADER,
|
||||
#if !defined(Q_OS_MACOS)
|
||||
CaptureToolButton::TYPE_OPEN_APP,
|
||||
CaptureTool::TYPE_OPEN_APP,
|
||||
#endif
|
||||
CaptureToolButton::TYPE_PIN,
|
||||
CaptureToolButton::TYPE_CIRCLECOUNT,
|
||||
CaptureToolButton::TYPE_SIZEINCREASE,
|
||||
CaptureToolButton::TYPE_SIZEDECREASE,
|
||||
CaptureTool::TYPE_PIN,
|
||||
CaptureTool::TYPE_CIRCLECOUNT,
|
||||
CaptureTool::TYPE_SIZEINCREASE,
|
||||
CaptureTool::TYPE_SIZEDECREASE,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user