feat: Shift+Click to use color-inverted checkerboard
This commit is contained in:
parent
aecc3cf163
commit
b146150528
@ -26,6 +26,7 @@ void ActionManager::setupAction(MainWindow *mainWindow)
|
||||
CREATE_NEW_ACTION(mainWindow, actionCopyPixmap);
|
||||
CREATE_NEW_ACTION(mainWindow, actionCopyFilePath);
|
||||
CREATE_NEW_ACTION(mainWindow, actionPaste);
|
||||
CREATE_NEW_ACTION(mainWindow, actionToggleCheckerboard);
|
||||
CREATE_NEW_ACTION(mainWindow, actionToggleStayOnTop);
|
||||
CREATE_NEW_ACTION(mainWindow, actionToggleProtectMode);
|
||||
CREATE_NEW_ACTION(mainWindow, actionSettings);
|
||||
@ -47,6 +48,7 @@ void ActionManager::retranslateUi(MainWindow *mainWindow)
|
||||
actionCopyPixmap->setText(QCoreApplication::translate("MainWindow", "Copy P&ixmap", nullptr));
|
||||
actionCopyFilePath->setText(QCoreApplication::translate("MainWindow", "Copy &File Path", nullptr));
|
||||
actionPaste->setText(QCoreApplication::translate("MainWindow", "&Paste", nullptr));
|
||||
actionToggleCheckerboard->setText(QCoreApplication::translate("MainWindow", "Toggle Checkerboard", nullptr));
|
||||
actionToggleStayOnTop->setText(QCoreApplication::translate("MainWindow", "Stay on top", nullptr));
|
||||
actionToggleProtectMode->setText(QCoreApplication::translate("MainWindow", "Protected mode", nullptr));
|
||||
actionSettings->setText(QCoreApplication::translate("MainWindow", "Configure...", nullptr));
|
||||
|
@ -21,6 +21,7 @@ public:
|
||||
QAction *actionCopyPixmap;
|
||||
QAction *actionCopyFilePath;
|
||||
QAction *actionPaste;
|
||||
QAction *actionToggleCheckerboard;
|
||||
QAction *actionToggleStayOnTop;
|
||||
QAction *actionToggleProtectMode;
|
||||
QAction *actionSettings;
|
||||
|
@ -158,9 +158,9 @@ void GraphicsView::checkAndDoFitInView(bool markItOnAnyway)
|
||||
}
|
||||
}
|
||||
|
||||
void GraphicsView::toggleCheckerboard()
|
||||
void GraphicsView::toggleCheckerboard(bool invertCheckerboardColor)
|
||||
{
|
||||
setCheckerboardEnabled(!m_checkerboardEnabled);
|
||||
setCheckerboardEnabled(!m_checkerboardEnabled, invertCheckerboardColor);
|
||||
}
|
||||
|
||||
void GraphicsView::mousePressEvent(QMouseEvent *event)
|
||||
@ -294,17 +294,19 @@ bool GraphicsView::shouldIgnoreMousePressMoveEvent(const QMouseEvent *event) con
|
||||
return false;
|
||||
}
|
||||
|
||||
void GraphicsView::setCheckerboardEnabled(bool enabled)
|
||||
void GraphicsView::setCheckerboardEnabled(bool enabled, bool invertColor)
|
||||
{
|
||||
m_checkerboardEnabled = enabled;
|
||||
m_isLastCheckerboardColorInverted = invertColor;
|
||||
if (m_checkerboardEnabled) {
|
||||
// Prepare background check-board pattern
|
||||
QPixmap tilePixmap(0x20, 0x20);
|
||||
tilePixmap.fill(QColor(35, 35, 35, 170));
|
||||
tilePixmap.fill(invertColor ? QColor(220, 220, 220, 170) : QColor(35, 35, 35, 170));
|
||||
QPainter tilePainter(&tilePixmap);
|
||||
QColor color(45, 45, 45, 170);
|
||||
tilePainter.fillRect(0, 0, 0x10, 0x10, color);
|
||||
tilePainter.fillRect(0x10, 0x10, 0x10, 0x10, color);
|
||||
constexpr QColor color(45, 45, 45, 170);
|
||||
constexpr QColor invertedColor(210, 210, 210, 170);
|
||||
tilePainter.fillRect(0, 0, 0x10, 0x10, invertColor ? invertedColor : color);
|
||||
tilePainter.fillRect(0x10, 0x10, 0x10, 0x10, invertColor ? invertedColor : color);
|
||||
tilePainter.end();
|
||||
|
||||
setBackgroundBrush(tilePixmap);
|
||||
|
@ -38,7 +38,7 @@ signals:
|
||||
void requestGallery(const QString &filePath);
|
||||
|
||||
public slots:
|
||||
void toggleCheckerboard();
|
||||
void toggleCheckerboard(bool invertCheckerboardColor = false);
|
||||
|
||||
private:
|
||||
void mousePressEvent(QMouseEvent * event) override;
|
||||
@ -53,13 +53,14 @@ private:
|
||||
|
||||
bool isThingSmallerThanWindowWith(const QTransform &transform) const;
|
||||
bool shouldIgnoreMousePressMoveEvent(const QMouseEvent *event) const;
|
||||
void setCheckerboardEnabled(bool enabled);
|
||||
void setCheckerboardEnabled(bool enabled, bool invertColor = false);
|
||||
void applyTransformationModeByScaleFactor();
|
||||
|
||||
void resetWithScaleAndRotate(qreal scaleFactor, qreal rotateAngle);
|
||||
|
||||
bool m_enableFitInView = false;
|
||||
bool m_checkerboardEnabled = false;
|
||||
bool m_isLastCheckerboardColorInverted = false;
|
||||
qreal m_rotateAngle = 0;
|
||||
};
|
||||
|
||||
|
@ -117,7 +117,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
connect(m_bottomButtonGroup, &BottomButtonGroup::zoomOutBtnClicked,
|
||||
this, &MainWindow::on_actionZoomOut_triggered);
|
||||
connect(m_bottomButtonGroup, &BottomButtonGroup::toggleCheckerboardBtnClicked,
|
||||
this, [ = ](){ m_graphicsView->toggleCheckerboard(); });
|
||||
this, &MainWindow::toggleCheckerboard);
|
||||
connect(m_bottomButtonGroup, &BottomButtonGroup::rotateRightBtnClicked,
|
||||
this, [ = ](){
|
||||
m_graphicsView->resetScale();
|
||||
@ -470,6 +470,11 @@ void MainWindow::updateWidgetsPosition()
|
||||
m_gv->move(width() - m_gv->width(), height() - m_gv->height());
|
||||
}
|
||||
|
||||
void MainWindow::toggleCheckerboard()
|
||||
{
|
||||
m_graphicsView->toggleCheckerboard(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier));
|
||||
}
|
||||
|
||||
void MainWindow::toggleProtectedMode()
|
||||
{
|
||||
m_protectedMode = !m_protectedMode;
|
||||
@ -595,6 +600,11 @@ void MainWindow::on_actionPaste_triggered()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionToggleCheckerboard_triggered()
|
||||
{
|
||||
m_graphicsView->toggleCheckerboard();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionToggleStayOnTop_triggered()
|
||||
{
|
||||
toggleStayOnTop();
|
||||
|
@ -50,6 +50,7 @@ protected slots:
|
||||
void centerWindow();
|
||||
void closeWindow();
|
||||
void updateWidgetsPosition();
|
||||
void toggleCheckerboard();
|
||||
void toggleProtectedMode();
|
||||
void toggleStayOnTop();
|
||||
bool stayOnTop();
|
||||
@ -67,6 +68,7 @@ private slots:
|
||||
void on_actionCopyPixmap_triggered();
|
||||
void on_actionCopyFilePath_triggered();
|
||||
void on_actionPaste_triggered();
|
||||
void on_actionToggleCheckerboard_triggered();
|
||||
void on_actionToggleStayOnTop_triggered();
|
||||
void on_actionToggleProtectMode_triggered();
|
||||
void on_actionSettings_triggered();
|
||||
|
Loading…
Reference in New Issue
Block a user