]> git.sur5r.net Git - minitube/blob - src/MainWindow.h
Imported Upstream version 1.9
[minitube] / src / MainWindow.h
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include <QtGui>
5 #include <phonon/audiooutput.h>
6 #include <phonon/volumeslider.h>
7 #include <phonon/mediaobject.h>
8 #include <phonon/seekslider.h>
9 #include "View.h"
10 #include "SearchView.h"
11 #include "MediaView.h"
12 #include "AboutView.h"
13 #include "downloadview.h"
14
15 class SearchLineEdit;
16 class UpdateChecker;
17
18 class MainWindow : public QMainWindow {
19
20     Q_OBJECT
21
22 public:
23     static MainWindow* instance();
24     MainWindow();
25     ~MainWindow();
26     Phonon::SeekSlider* getSeekSlider() { return seekSlider; }
27     void readSettings();
28     void writeSettings();
29     static void printHelp();
30
31 public slots:
32     void showMedia(SearchParams *params);
33     void restore();
34     void messageReceived(const QString &message);
35     void quit();
36     void startToolbarSearch(QString query);
37
38 protected:
39     void changeEvent(QEvent *);
40     void closeEvent(QCloseEvent *);
41     bool eventFilter(QObject *obj, QEvent *event);
42     void dragEnterEvent(QDragEnterEvent *event);
43     void dropEvent(QDropEvent *event);
44     void resizeEvent(QResizeEvent *);
45
46 private slots:
47     void checkForUpdate();
48     void gotNewVersion(QString version);
49     void goBack();
50     void showSearch();
51     void visitSite();
52     void donate();
53     void reportIssue();
54     void about();
55     void fullscreen();
56     void updateUIForFullscreen();
57     void compactView(bool enable);
58     void stop();
59     void stateChanged(Phonon::State newState, Phonon::State oldState);
60     void searchFocus();
61     void tick(qint64 time);
62     void totalTimeChanged(qint64 time);
63     void setDefinitionMode(QString definitionName);
64     void toggleDefinitionMode();
65     void clearRecentKeywords();
66
67     // volume shortcuts
68     void volumeUp();
69     void volumeDown();
70     void volumeMute();
71     void volumeChanged(qreal newVolume);
72     void volumeMutedChanged(bool muted);
73
74     // fullscreen toolbar
75     void showFullscreenToolbar(bool show);
76     void showFullscreenPlaylist(bool show);
77
78     void setManualPlay(bool enabled);
79     void updateDownloadMessage(QString);
80     void downloadsFinished();
81     void toggleDownloads(bool show);
82
83     void floatOnTop(bool);
84     void showActionInStatusBar(QAction*, bool show);
85     void showStopAfterThisInStatusBar(bool show);
86
87     void hideMouse();
88
89 private:
90     void initPhonon();
91     void createActions();
92     void createMenus();
93     void createToolBars();
94     void createStatusBar();
95     void showWidget(QWidget*);
96     static QString formatTime(qint64 time);
97     bool confirmQuit();
98
99     UpdateChecker *updateChecker;
100
101     // view mechanism
102     QStackedWidget *views;
103     QStack<QWidget*> *history;
104
105     // view widgets
106     SearchView *searchView;
107     MediaView *mediaView;
108     QWidget *aboutView;
109     QWidget *downloadView;
110
111     // actions
112     QAction *addGadgetAct;
113     QAction *backAct;
114     QAction *quitAct;
115     QAction *siteAct;
116     QAction *donateAct;
117     QAction *aboutAct;
118     QAction *searchFocusAct;
119
120     // media actions
121     QAction *skipBackwardAct;
122     QAction *skipAct;
123     QAction *pauseAct;
124     QAction *stopAct;
125     QAction *fullscreenAct;
126     QAction *compactViewAct;
127     QAction *webPageAct;
128     QAction *copyPageAct;
129     QAction *copyLinkAct;
130     QAction *volumeUpAct;
131     QAction *volumeDownAct;
132     QAction *volumeMuteAct;
133     QAction *findVideoPartsAct;
134
135     // playlist actions
136     QAction *removeAct;
137     QAction *moveDownAct;
138     QAction *moveUpAct;
139     QAction *fetchMoreAct;
140     QAction *clearAct;
141
142     // menus
143     QMenu *fileMenu;
144     QMenu *viewMenu;
145     QMenu *playlistMenu;
146     QMenu *helpMenu;
147
148     // toolbar
149     QToolBar *mainToolBar;
150     SearchLineEdit *toolbarSearch;
151     QToolBar *statusToolBar;
152
153     // phonon
154     Phonon::SeekSlider *seekSlider;
155     Phonon::VolumeSlider *volumeSlider;
156     Phonon::MediaObject *mediaObject;
157     Phonon::AudioOutput *audioOutput;
158     QLabel *currentTime;
159     QLabel *totalTime;
160
161     bool m_fullscreen;
162     bool m_maximized;
163
164     QTimer *mouseTimer;
165
166 };
167
168 #endif