-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmainwindow.h
More file actions
108 lines (93 loc) · 3.82 KB
/
mainwindow.h
File metadata and controls
108 lines (93 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
// Copyright 2023 by Linwood Ferguson, licensed under GNU GPLv3
#include <QMainWindow>
#include "docpagelabel.h"
#include "piconstants.h"
class midiPlayerV2;
class PDFDocument;
class TipOverlay;
class ourSettings;
class docPageLabel;
class musicLibrary;
class aboutWidget;
class settingsWidget;
class docPageLabel;
class QHBoxLayout;
class QVBoxLayout;
class QPushButton;
class playLists;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
~MainWindow();
// Dynamic layouts and labels for visible pages, defined at max, but vary
int pagesNowAcross;
int pagesNowDown;
ourSettings* ourSettingsPtr;
int screenWidth, screenHeight; // size derived from real window, or possibly settings file.
private:
PDFDocument* PDF;
enum runningModes {libraryMode, playMode, aboutMode, settingsMode};
runningModes nowMode; // Note playMode is either playing=true or playing=false as submode
bool playing; // Submode for playMode, indicates if we are reviewing or playing
int leftmostPage; // Page number (reference 1) of leftmost page
// Window contents persistent widgets
QWidget* outerLayoutWidget; // outer widget set as central widget in window to hold layout
QVBoxLayout* outerLayout;
QWidget* menuLayoutWidget; // Used if any menu at all present
QHBoxLayout* menuLayout;
QWidget* mainMenuLayoutWidget; // Used for menu options that are always present (if any menu present)
QHBoxLayout* mainMenuLayout;
QPushButton* libraryButton;
QPushButton* settingsButton;
QPushButton* aboutButton;
QPushButton* exitButton;
QWidget* playerMenuLayoutWidget; // Used for manu options shown during play-review mode
QHBoxLayout* playerMenuLayout;
QPushButton* playButton;
QPushButton* firstButton;
QPushButton* nextButton;
QPushButton* prevButton;
QPushButton* lastButton;
QPushButton* oneUpButton;
QPushButton* twoUpButton;
QPushButton* fourByTwoButton;
QPushButton* playMidiButton;
QPushButton* playListButton;
QWidget* generalLayoutWidget; // This is the main body under the menu and holds everything except play mode items
QHBoxLayout* generalLayout;
QLabel* logoLabel;
musicLibrary* libraryTable;
aboutWidget* aboutBox;
settingsWidget* settingsUI;
docPageLabel* visiblePages[MUSICALPI_MAXROWS * MUSICALPI_MAXCOLUMNS]; // used for play mode panes; layout is ignored for these and explicitly positioned
TipOverlay* overlay; // fits (briefly) over the whole window when play-playing mode starts.
midiPlayerV2* mp; // This widget is a free floating window
playLists* pl;
int loadPagePendingNumber[MUSICALPI_MAXCOLUMNS * MUSICALPI_MAXROWS]; // 0 indicates none pending
docPageLabel::docTransition loadPagePendingTransition[MUSICALPI_MAXCOLUMNS * MUSICALPI_MAXROWS];
int pageBorderWidth;
void setLibraryMode();
void setPlayMode(bool playing, int pagesToShowAcross, int pagesToShowDown);
void navigateTo(int leftPage);
void setAboutMode();
void setSettingsMode();
void setupCoreWidgets();
void HideEverything();
void playingNextPage();
void playingPrevPage();
void deletePDF();
void checkQueueVsCache();
void mouseReleaseEvent(QMouseEvent *event);
void resizeEvent(QResizeEvent *event);
void sizeLogo();
void keyPressEvent(QKeyEvent* e);
void doMidiPlayer();
void doPlayLists();
private slots:
void startPlayMode(QString,QString);
};
#endif // MAINWINDOW_H