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