Files
Sourcetrail/src/lib_gui/qt/window/QtMainWindow.h
T

210 lines
3.9 KiB
C++

#ifndef QT_MAIN_WINDOW_H
#define QT_MAIN_WINDOW_H
#include <memory>
#include <utility>
#include <vector>
#include <QMainWindow>
#include "QtWindowStack.h"
#include "QtWindowsTaskbarButton.h"
#include "SearchMatch.h"
class Bookmark;
class MessageBase;
class QDockWidget;
class View;
class QtViewToggle: public QWidget
{
Q_OBJECT
public:
QtViewToggle(View* view, QWidget* parent = nullptr);
void clear();
public slots:
void toggledByAction();
void toggledByUI();
private:
View* m_view;
};
class MouseReleaseFilter: public QObject
{
Q_OBJECT
public:
MouseReleaseFilter(QObject* parent);
protected:
bool eventFilter(QObject* obj, QEvent* event);
private:
size_t m_backButton;
size_t m_forwardButton;
};
class QtMainWindow: public QMainWindow
{
Q_OBJECT
public:
QtMainWindow();
~QtMainWindow();
void addView(View* view);
void overrideView(View* view);
void removeView(View* view);
void showView(View* view);
void hideView(View* view);
View* findFloatingView(const std::string& name) const;
void loadLayout();
void saveLayout();
void loadDockWidgetLayout();
void loadWindow(bool showStartWindow);
void updateHistoryMenu(std::shared_ptr<MessageBase> message);
void clearHistoryMenu();
void updateBookmarksMenu(const std::vector<std::shared_ptr<Bookmark>>& bookmarks);
void setContentEnabled(bool enabled);
void refreshStyle();
void setWindowsTaskbarProgress(float progress);
void hideWindowsTaskbarProgress();
signals:
void showScreenSearch();
void hideScreenSearch();
void hideIndexingDialog();
protected:
virtual void showEvent(QShowEvent* event) override;
virtual void keyPressEvent(QKeyEvent* event) override;
virtual void contextMenuEvent(QContextMenuEvent* event) override;
virtual void closeEvent(QCloseEvent* event) override;
virtual void resizeEvent(QResizeEvent* event) override;
virtual bool focusNextPrevChild(bool next) override;
public slots:
void about();
void openSettings();
void showChangelog();
void showBugtracker();
void showDocumentation();
void showKeyboardShortcuts();
void showErrorHelpMessage();
void showLicenses();
void showDataFolder();
void showLogFolder();
void openTab();
void closeTab();
void nextTab();
void previousTab();
void showStartScreen();
void hideStartScreen();
void newProject();
void newProjectFromCDB(const FilePath& filePath);
void openProject();
void editProject();
void closeProject();
void find();
void findFulltext();
void findOnScreen();
void codeReferencePrevious();
void codeReferenceNext();
void codeLocalReferencePrevious();
void codeLocalReferenceNext();
void customTrail();
void overview();
void closeWindow();
void refresh();
void forceRefresh();
void undo();
void redo();
void zoomIn();
void zoomOut();
void resetZoom();
void resetWindowLayout();
void openRecentProject();
void updateRecentProjectsMenu();
void toggleView(View* view, bool fromMenu);
void saveAsImage();
private slots:
void toggleShowDockWidgetTitleBars();
void showBookmarkCreator();
void showBookmarkBrowser();
void openHistoryAction();
void activateBookmarkAction();
private:
struct DockWidget
{
QDockWidget* widget;
View* view;
QAction* action;
QtViewToggle* toggle;
};
void setupEditMenu();
void setupProjectMenu();
void setupViewMenu();
void setupHistoryMenu();
void setupBookmarksMenu();
void setupHelpMenu();
DockWidget* getDockWidgetForView(View* view);
void setShowDockWidgetTitleBars(bool showTitleBars);
template <typename T>
T* createWindow();
std::vector<DockWidget> m_dockWidgets;
QMenu* m_viewMenu;
QAction* m_viewSeparator;
QMenu* m_historyMenu;
std::vector<std::shared_ptr<MessageBase>> m_history;
QMenu* m_bookmarksMenu;
std::vector<std::shared_ptr<Bookmark>> m_bookmarks;
QMenu* m_recentProjectsMenu;
QAction* m_showTitleBarsAction;
bool m_showDockWidgetTitleBars;
QtWindowStack m_windowStack;
QtWindowsTaskbarButton m_windowsTaskbarButton;
};
#endif // QT_MAIN_WINDOW_H