Skip to content

Commit

Permalink
refactor CaptureButton and use CSS for side panel button
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexP11223 authored and borgmanJeremy committed Sep 13, 2020
1 parent 3514345 commit fa9ec7a
Show file tree
Hide file tree
Showing 21 changed files with 412 additions and 324 deletions.
16 changes: 8 additions & 8 deletions src/config/buttonlistview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ void
ButtonListView::initButtonList()
{
ToolFactory factory;
auto listTypes = CaptureButton::getIterableButtonTypes();
auto listTypes = CaptureToolButton::getIterableButtonTypes();

for (const CaptureButton::ButtonType t : listTypes) {
for (const CaptureToolButton::ButtonType t : listTypes) {
CaptureTool* tool = factory.CreateTool(t);

// add element to the local map
Expand All @@ -64,14 +64,14 @@ ButtonListView::initButtonList()
void
ButtonListView::updateActiveButtons(QListWidgetItem* item)
{
CaptureButton::ButtonType bType = m_buttonTypeByName[item->text()];
CaptureToolButton::ButtonType bType = m_buttonTypeByName[item->text()];
if (item->checkState() == Qt::Checked) {
m_listButtons.append(bType);
// TODO refactor so we don't need external sorts
using bt = CaptureButton::ButtonType;
using bt = CaptureToolButton::ButtonType;
std::sort(m_listButtons.begin(), m_listButtons.end(), [](bt a, bt b) {
return CaptureButton::getPriorityByButton(a) <
CaptureButton::getPriorityByButton(b);
return CaptureToolButton::getPriorityByButton(a) <
CaptureToolButton::getPriorityByButton(b);
});
} else {
m_listButtons.remove(m_listButtons.indexOf(bType));
Expand Down Expand Up @@ -104,10 +104,10 @@ void
ButtonListView::updateComponents()
{
m_listButtons = ConfigHandler().getButtons();
auto listTypes = CaptureButton::getIterableButtonTypes();
auto listTypes = CaptureToolButton::getIterableButtonTypes();
for (int i = 0; i < this->count(); ++i) {
QListWidgetItem* item = this->item(i);
auto elem = static_cast<CaptureButton::ButtonType>(listTypes.at(i));
auto elem = static_cast<CaptureToolButton::ButtonType>(listTypes.at(i));
if (m_listButtons.contains(elem)) {
item->setCheckState(Qt::Checked);
} else {
Expand Down
6 changes: 3 additions & 3 deletions src/config/buttonlistview.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

#pragma once

#include "src/widgets/capture/capturebutton.h"
#include "src/widgets/capture/capturetoolbutton.h"
#include <QListWidget>

class ButtonListView : public QListWidget
Expand All @@ -36,8 +36,8 @@ private slots:
void initButtonList();

private:
QVector<CaptureButton::ButtonType> m_listButtons;
QMap<QString, CaptureButton::ButtonType> m_buttonTypeByName;
QVector<CaptureToolButton::ButtonType> m_listButtons;
QMap<QString, CaptureToolButton::ButtonType> m_buttonTypeByName;

void updateActiveButtons(QListWidgetItem*);
};
2 changes: 1 addition & 1 deletion src/config/configwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include "src/utils/confighandler.h"
#include "src/utils/globalvalues.h"
#include "src/utils/pathinfo.h"
#include "src/widgets/capture/capturebutton.h"
#include "src/widgets/capture/capturetoolbutton.h"
#include <QFileSystemWatcher>
#include <QIcon>
#include <QKeyEvent>
Expand Down
10 changes: 5 additions & 5 deletions src/config/uicoloreditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ UIcolorEditor::initButtons()
QGroupBox* frame = new QGroupBox();
frame->setFixedSize(frameSize, frameSize);

m_buttonMainColor = new CaptureButton(m_buttonIconType, frame);
m_buttonMainColor = new CaptureToolButton(m_buttonIconType, frame);
m_buttonMainColor->move(m_buttonMainColor->x() + extraSize / 2,
m_buttonMainColor->y() + extraSize / 2);
QHBoxLayout* h1 = new QHBoxLayout();
Expand All @@ -134,7 +134,7 @@ UIcolorEditor::initButtons()
" mode of the main color."));

QGroupBox* frame2 = new QGroupBox();
m_buttonContrast = new CaptureButton(m_buttonIconType, frame2);
m_buttonContrast = new CaptureToolButton(m_buttonIconType, frame2);
m_buttonContrast->move(m_buttonContrast->x() + extraSize / 2,
m_buttonContrast->y() + extraSize / 2);

Expand All @@ -150,11 +150,11 @@ UIcolorEditor::initButtons()
" mode of the contrast color."));

connect(m_buttonMainColor,
&CaptureButton::pressedButton,
&CaptureToolButton::pressedButton,
this,
&UIcolorEditor::changeLastButton);
connect(m_buttonContrast,
&CaptureButton::pressedButton,
&CaptureToolButton::pressedButton,
this,
&UIcolorEditor::changeLastButton);
// clicking the labels changes the button too
Expand All @@ -169,7 +169,7 @@ UIcolorEditor::initButtons()

// visual update for the selected button
void
UIcolorEditor::changeLastButton(CaptureButton* b)
UIcolorEditor::changeLastButton(CaptureToolButton* b)
{
if (m_lastButtonPressed != b) {
m_lastButtonPressed = b;
Expand Down
16 changes: 8 additions & 8 deletions src/config/uicoloreditor.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
#pragma once

#include "color_wheel.hpp"
#include "src/widgets/capture/capturebutton.h"
#include "src/widgets/capture/capturetoolbutton.h"
#include <QGroupBox>

class QVBoxLayout;
class QHBoxLayout;
class CaptureButton;
class CaptureToolButton;
class ClickableLabel;

class UIcolorEditor : public QGroupBox
Expand All @@ -38,19 +38,19 @@ public slots:
private slots:
void updateUIcolor();
void updateLocalColor(const QColor);
void changeLastButton(CaptureButton*);
void changeLastButton(CaptureToolButton*);

private:
QColor m_uiColor, m_contrastColor;
CaptureButton* m_buttonMainColor;
CaptureToolButton* m_buttonMainColor;
ClickableLabel* m_labelMain;
CaptureButton* m_buttonContrast;
CaptureToolButton* m_buttonContrast;
ClickableLabel* m_labelContrast;
CaptureButton* m_lastButtonPressed;
CaptureToolButton* m_lastButtonPressed;
color_widgets::ColorWheel* m_colorWheel;

static const CaptureButton::ButtonType m_buttonIconType =
CaptureButton::TYPE_CIRCLE;
static const CaptureToolButton::ButtonType m_buttonIconType =
CaptureToolButton::TYPE_CIRCLE;

QHBoxLayout* m_hLayout;
QVBoxLayout* m_vLayout;
Expand Down
2 changes: 1 addition & 1 deletion src/core/controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#include "src/utils/confighandler.h"
#include "src/utils/screengrabber.h"
#include "src/utils/systemnotification.h"
#include "src/widgets/capture/capturebutton.h"
#include "src/widgets/capture/capturetoolbutton.h"
#include "src/widgets/capture/capturewidget.h"
#include "src/widgets/capturelauncher.h"
#include "src/widgets/infowindow.h"
Expand Down
42 changes: 21 additions & 21 deletions src/tools/toolfactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,68 +42,68 @@ ToolFactory::ToolFactory(QObject* parent)
{}

CaptureTool*
ToolFactory::CreateTool(CaptureButton::ButtonType t, QObject* parent)
ToolFactory::CreateTool(CaptureToolButton::ButtonType t, QObject* parent)
{
CaptureTool* tool;
switch (t) {
case CaptureButton::TYPE_ARROW:
case CaptureToolButton::TYPE_ARROW:
tool = new ArrowTool(parent);
break;
case CaptureButton::TYPE_CIRCLE:
case CaptureToolButton::TYPE_CIRCLE:
tool = new CircleTool(parent);
break;
case CaptureButton::TYPE_COPY:
case CaptureToolButton::TYPE_COPY:
tool = new CopyTool(parent);
break;
case CaptureButton::TYPE_EXIT:
case CaptureToolButton::TYPE_EXIT:
tool = new ExitTool(parent);
break;
case CaptureButton::TYPE_IMAGEUPLOADER:
case CaptureToolButton::TYPE_IMAGEUPLOADER:
tool = new ImgurUploaderTool(parent);
break;
case CaptureButton::TYPE_DRAWER:
case CaptureToolButton::TYPE_DRAWER:
tool = new LineTool(parent);
break;
case CaptureButton::TYPE_MARKER:
case CaptureToolButton::TYPE_MARKER:
tool = new MarkerTool(parent);
break;
case CaptureButton::TYPE_MOVESELECTION:
case CaptureToolButton::TYPE_MOVESELECTION:
tool = new MoveTool(parent);
break;
case CaptureButton::TYPE_PENCIL:
case CaptureToolButton::TYPE_PENCIL:
tool = new PencilTool(parent);
break;
case CaptureButton::TYPE_RECTANGLE:
case CaptureToolButton::TYPE_RECTANGLE:
tool = new RectangleTool(parent);
break;
case CaptureButton::TYPE_SAVE:
case CaptureToolButton::TYPE_SAVE:
tool = new SaveTool(parent);
break;
case CaptureButton::TYPE_SELECTION:
case CaptureToolButton::TYPE_SELECTION:
tool = new SelectionTool(parent);
break;
case CaptureButton::TYPE_SELECTIONINDICATOR:
case CaptureToolButton::TYPE_SELECTIONINDICATOR:
tool = new SizeIndicatorTool(parent);
break;
case CaptureButton::TYPE_UNDO:
case CaptureToolButton::TYPE_UNDO:
tool = new UndoTool(parent);
break;
case CaptureButton::TYPE_REDO:
case CaptureToolButton::TYPE_REDO:
tool = new RedoTool(parent);
break;
case CaptureButton::TYPE_OPEN_APP:
case CaptureToolButton::TYPE_OPEN_APP:
tool = new AppLauncher(parent);
break;
case CaptureButton::TYPE_PIXELATE:
case CaptureToolButton::TYPE_PIXELATE:
tool = new PixelateTool(parent);
break;
case CaptureButton::TYPE_PIN:
case CaptureToolButton::TYPE_PIN:
tool = new PinTool(parent);
break;
case CaptureButton::TYPE_TEXT:
case CaptureToolButton::TYPE_TEXT:
tool = new TextTool(parent);
break;
case CaptureButton::TYPE_CIRCLECOUNT:
case CaptureToolButton::TYPE_CIRCLECOUNT:
tool = new CircleCountTool(parent);
break;

Expand Down
4 changes: 2 additions & 2 deletions src/tools/toolfactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#pragma once

#include "src/tools/capturetool.h"
#include "src/widgets/capture/capturebutton.h"
#include "src/widgets/capture/capturetoolbutton.h"
#include <QObject>

class CaptureTool;
Expand All @@ -33,6 +33,6 @@ class ToolFactory : public QObject
ToolFactory(const ToolFactory&) = delete;
ToolFactory& operator=(const ToolFactory&) = delete;

CaptureTool* CreateTool(CaptureButton::ButtonType t,
CaptureTool* CreateTool(CaptureToolButton::ButtonType t,
QObject* parent = nullptr);
};
52 changes: 28 additions & 24 deletions src/utils/confighandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ ConfigHandler::ConfigHandler()
m_settings.setDefaultFormat(QSettings::IniFormat);
}

QVector<CaptureButton::ButtonType>
QVector<CaptureToolButton::ButtonType>
ConfigHandler::getButtons()
{
QVector<CaptureButton::ButtonType> buttons;
QVector<CaptureToolButton::ButtonType> buttons;
if (m_settings.contains(QStringLiteral("buttons"))) {
// TODO: remove toList in v1.0
QVector<int> buttonsInt = m_settings.value(QStringLiteral("buttons"))
Expand All @@ -43,29 +43,33 @@ ConfigHandler::getButtons()
buttons = fromIntToButton(buttonsInt);
} else {
// Default tools
buttons << CaptureButton::TYPE_PENCIL << CaptureButton::TYPE_DRAWER
<< CaptureButton::TYPE_ARROW << CaptureButton::TYPE_SELECTION
<< CaptureButton::TYPE_RECTANGLE << CaptureButton::TYPE_CIRCLE
<< CaptureButton::TYPE_MARKER << CaptureButton::TYPE_PIXELATE
<< CaptureButton::TYPE_SELECTIONINDICATOR
<< CaptureButton::TYPE_MOVESELECTION << CaptureButton::TYPE_UNDO
<< CaptureButton::TYPE_REDO << CaptureButton::TYPE_COPY
<< CaptureButton::TYPE_SAVE << CaptureButton::TYPE_EXIT
<< CaptureButton::TYPE_IMAGEUPLOADER << CaptureButton::TYPE_OPEN_APP
<< CaptureButton::TYPE_PIN << CaptureButton::TYPE_TEXT
<< CaptureButton::TYPE_CIRCLECOUNT;
buttons << CaptureToolButton::TYPE_PENCIL << CaptureToolButton::TYPE_DRAWER
<< CaptureToolButton::TYPE_ARROW
<< CaptureToolButton::TYPE_SELECTION
<< CaptureToolButton::TYPE_RECTANGLE
<< CaptureToolButton::TYPE_CIRCLE << CaptureToolButton::TYPE_MARKER
<< CaptureToolButton::TYPE_PIXELATE
<< CaptureToolButton::TYPE_SELECTIONINDICATOR
<< CaptureToolButton::TYPE_MOVESELECTION
<< CaptureToolButton::TYPE_UNDO << CaptureToolButton::TYPE_REDO
<< CaptureToolButton::TYPE_COPY << CaptureToolButton::TYPE_SAVE
<< CaptureToolButton::TYPE_EXIT
<< CaptureToolButton::TYPE_IMAGEUPLOADER
<< CaptureToolButton::TYPE_OPEN_APP << CaptureToolButton::TYPE_PIN
<< CaptureToolButton::TYPE_TEXT
<< CaptureToolButton::TYPE_CIRCLECOUNT;
}

using bt = CaptureButton::ButtonType;
using bt = CaptureToolButton::ButtonType;
std::sort(buttons.begin(), buttons.end(), [](bt a, bt b) {
return CaptureButton::getPriorityByButton(a) <
CaptureButton::getPriorityByButton(b);
return CaptureToolButton::getPriorityByButton(a) <
CaptureToolButton::getPriorityByButton(b);
});
return buttons;
}

void
ConfigHandler::setButtons(const QVector<CaptureButton::ButtonType>& buttons)
ConfigHandler::setButtons(const QVector<CaptureToolButton::ButtonType>& buttons)
{
QVector<int> l = fromButtonToInt(buttons);
normalizeButtons(l);
Expand Down Expand Up @@ -438,8 +442,8 @@ void
ConfigHandler::setAllTheButtons()
{
QVector<int> buttons;
auto listTypes = CaptureButton::getIterableButtonTypes();
for (const CaptureButton::ButtonType t : listTypes) {
auto listTypes = CaptureToolButton::getIterableButtonTypes();
for (const CaptureToolButton::ButtonType t : listTypes) {
buttons << static_cast<int>(t);
}
// TODO: remove toList in v1.0
Expand All @@ -456,7 +460,7 @@ ConfigHandler::configFilePath() const
bool
ConfigHandler::normalizeButtons(QVector<int>& buttons)
{
auto listTypes = CaptureButton::getIterableButtonTypes();
auto listTypes = CaptureToolButton::getIterableButtonTypes();
QVector<int> listTypesInt;
for (auto i : listTypes)
listTypesInt << static_cast<int>(i);
Expand All @@ -471,17 +475,17 @@ ConfigHandler::normalizeButtons(QVector<int>& buttons)
return hasChanged;
}

QVector<CaptureButton::ButtonType>
QVector<CaptureToolButton::ButtonType>
ConfigHandler::fromIntToButton(const QVector<int>& l)
{
QVector<CaptureButton::ButtonType> buttons;
QVector<CaptureToolButton::ButtonType> buttons;
for (auto const i : l)
buttons << static_cast<CaptureButton::ButtonType>(i);
buttons << static_cast<CaptureToolButton::ButtonType>(i);
return buttons;
}

QVector<int>
ConfigHandler::fromButtonToInt(const QVector<CaptureButton::ButtonType>& l)
ConfigHandler::fromButtonToInt(const QVector<CaptureToolButton::ButtonType>& l)
{
QVector<int> buttons;
for (auto const i : l)
Expand Down
Loading

0 comments on commit fa9ec7a

Please sign in to comment.