1
0
Files
sarasacw-picture/app/mainwindow.h

114 lines
3.0 KiB
C
Raw Normal View History

2025-07-23 21:20:34 +08:00
// SPDX-FileCopyrightText: 2025 Gary Wang <git@blumia.net>
//
// SPDX-License-Identifier: MIT
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QParallelAnimationGroup>
#include <QPropertyAnimation>
#include <QPushButton>
QT_BEGIN_NAMESPACE
class QMenu;
class QVBoxLayout;
2025-07-23 21:20:34 +08:00
class QGraphicsView;
class QFileSystemWatcher;
QT_END_NAMESPACE
class ActionManager;
class PlaylistManager;
class GraphicsView;
class NavigatorView;
class BottomButtonGroup;
class MainWindow : public QWidget
2025-07-23 21:20:34 +08:00
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
void showFiles(const QStringList& files);
void showFiles(const QList<QUrl>& urls);
2025-07-23 21:20:34 +08:00
void initWindowSize();
void adjustWindowSizeBySceneRect();
void clearGallery();
void galleryPrev();
void galleryNext();
void galleryCurrent(bool fromFileWatcher);
2025-07-23 21:20:34 +08:00
static QStringList supportedImageFormats();
protected slots:
void showEvent(QShowEvent *event) override;
void mouseDoubleClickEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
void contextMenuEvent(QContextMenuEvent *event) override;
void dragEnterEvent(QDragEnterEvent *event) override;
void dragMoveEvent(QDragMoveEvent *event) override;
void dropEvent(QDropEvent *event) override;
void centerWindow();
void closeWindow();
void updateWidgetsPosition();
void toggleAvoidResetTransform();
void toggleFullscreen();
void toggleMaximize();
protected:
QSize sizeHint() const override;
private slots:
void on_actionCopyPixmap_triggered();
void on_actionCopyFilePath_triggered();
void on_actionPrevPicture_triggered();
void on_actionNextPicture_triggered();
2025-07-23 21:20:34 +08:00
void on_actionActualSize_triggered();
void on_actionFitToScreen_triggered();
void on_actionFitByWidth_triggered();
void on_actionFitByHeight_triggered();
2025-07-23 21:20:34 +08:00
void on_actionZoomIn_triggered();
void on_actionZoomOut_triggered();
void on_actionFlipHorizontal_triggered();
void on_actionFlipVertical_triggered();
2025-07-23 21:20:34 +08:00
void on_actionRotateClockwise_triggered();
void on_actionRotateCounterClockwise_triggered();
void on_actionToggleAvoidResetTransform_triggered();
void on_actionToggleCheckerboard_triggered();
2025-07-23 21:20:34 +08:00
void on_actionTogglePauseAnimation_triggered();
void on_actionAnimationNextFrame_triggered();
void on_actionTrash_triggered();
void on_actionLocateInFileManager_triggered();
void on_actionProperties_triggered();
2025-07-23 21:20:34 +08:00
void on_actionSettings_triggered();
void on_actionHelp_triggered();
private:
bool updateFileWatcher(const QString & basePath = QString());
void updateActionState();
2025-07-23 21:20:34 +08:00
private:
ActionManager *m_am;
PlaylistManager *m_pm;
GraphicsView *m_gv;
NavigatorView *m_nav;
2025-07-23 21:20:34 +08:00
QMenu *m_menu;
QMenu *m_subMenuCopy;
QMenu *m_subMenuTransform;
QVBoxLayout * m_centralLayout = nullptr;
2025-07-23 21:20:34 +08:00
QFileSystemWatcher *m_fileSystemWatcher;
BottomButtonGroup *m_bottomButtonGroup;
};
#endif // MAINWINDOW_H