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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
|
//===========================================
// Lumina-DE source code
// Copyright (c) 2014, Ken Moore
// Available under the 3-clause BSD license
// See the LICENSE file for full details
//===========================================
// This is the main interface for the Lumina File Manager (Insight)
//===========================================
#ifndef _LUMINA_FILE_MANAGER_UI_H
#define _LUMINA_FILE_MANAGER_UI_H
// Qt includes
#include <QMainWindow>
#include <QTabBar>
#include <QLineEdit>
#include <QFileSystemModel>
#include <QStringList>
#include <QDebug>
#include <QAction>
#include <QProcess>
#include <QSettings>
#include <QInputDialog>
#include <QMessageBox>
#include <QDir>
#include <QTimer>
#include <QDateTime>
#include <QShortcut>
#include <QCompleter>
#include <QClipboard>
#include <QMimeData>
#include <QTreeWidgetItem>
#include <QListWidgetItem>
#include <QRadioButton>
#include <QWidgetAction>
#include <QImageReader>
#include <QScrollBar>
#include <QFileDialog>
#include <QResizeEvent>
#include <QDesktopWidget>
#include <QThread>
#include <QUrl>
#include <QThread>
//Multimedia Widgets
#include <QVideoWidget>
#include <QMediaPlayer>
// libLumina includes
#include <LuminaXDG.h>
#include <LuminaOS.h>
// Local includes
#include "FODialog.h" //file operation dialog
#include "BMMDialog.h" //bookmark manager dialog
#include "MimeIconProvider.h" //icon provider for the view widgets
#include "BackgroundWorker.h"
#include "DDFileSystemModel.h"
#include "DirData.h"
#include "widgets/MultimediaWidget.h"
#include "widgets/SlideshowWidget.h"
namespace Ui{
class MainUI;
};
class MainUI : public QMainWindow{
Q_OBJECT
public:
MainUI();
~MainUI();
void OpenDirs(QStringList); //called from the main.cpp after initialization
public slots:
void setupIcons(); //used during initialization
private:
Ui::MainUI *ui;
QThread *workThread;
BackgroundWorker *worker;
//Internal non-ui widgets
QTabBar *tabBar;
QLineEdit *currentDir;
DDFileSystemModel *fsmod;
QFileSystemModel *snapmod;
//QFileSystemWatcher *fswatcher;
MimeIconProvider *iconProv;
QMenu *contextMenu;
QRadioButton *radio_view_details, *radio_view_list, *radio_view_icons;
QWidgetAction *detWA, *listWA, *icoWA;
QString favdir;
//Phonon Widgets for the multimedia player
QMediaPlayer *mediaObj;
QVideoWidget *videoDisplay;
QSlider *playerSlider;
QString playerTTime; //total time - to prevent recalculation every tick
//Internal variables
QStringList snapDirs; //internal saved variable for the discovered zfs snapshot dirs
QString CItem; //the item that was right-clicked (for the context menu)
//QStringList imgFilter, multiFilter; //image/multimedia filters
QSettings *settings;
QShortcut *nextTabLShort, *nextTabRShort, *closeTabShort, *copyFilesShort, *cutFilesShort, *pasteFilesShort, *deleteFilesShort;
QCompleter *dirCompleter;
bool isUserWritable, keepFocus;
QTimer *syncTimer;
//Simplification Functions
void setupConnections(); //used during initialization
void loadSettings(); //used during initialization
void RebuildBookmarksMenu();
void RebuildDeviceMenu();
bool checkUserPerms();
QString msToText(qint64 ms);
//Common functions for browser info/usage
QString getCurrentDir();
void setCurrentDir(QString);
QFileInfoList getSelectedItems();
//QModelIndexList getVisibleItems();
private slots:
void slotSingleInstance(QStringList in){
this->show();
this->raise();
this->OpenDirs(in);
}
void slotStartSyncTimer();
//General button check functions (started in a seperate thread!)
void AvailableMultimediaFiles(QStringList files);
void AvailableBackups(QString basedir, QStringList snapdirs);
void AvailablePictures(QStringList files);
//General page switching
void goToMultimediaPage();
void goToRestorePage();
void goToSlideshowPage();
void goToBrowserPage();
//Menu Actions
void on_actionNew_Tab_triggered();
void on_actionSearch_triggered();
void on_actionClose_triggered();
void on_actionView_Hidden_Files_triggered();
void on_actionShow_Action_Buttons_triggered();
void on_actionShow_Thumbnails_triggered();
void goToBookmark(QAction*);
void goToDevice(QAction*);
void viewModeChanged(bool);
//Toolbar Actions
void on_actionBack_triggered();
void on_actionUpDir_triggered();
void on_actionHome_triggered();
void on_actionBookMark_triggered();
//Browser Functions
void startEditDir(QWidget *old, QWidget *now);
void goToDirectory(); //go to a manually typed in directory
void reloadDirectory(); //Update the widget with the dir contents
void currentDirectoryLoaded(); //The file system model re-loaded the directory
void on_tool_addToDir_clicked();
void on_tool_addNewFile_clicked();
void tabChanged(int tab);
void tabClosed(int tab = -1);
void prevTab();
void nextTab();
void ItemRun( const QModelIndex&);
//void ItemRun(QTreeWidgetItem *item);
//void ItemRun(QListWidgetItem *item);
void OpenContextMenu(const QPoint&);
void ItemSelectionChanged();
//Slideshow Functions
void showNewPicture();
void firstPicture();
void prevPicture();
void nextPicture();
void lastPicture();
void removePicture();
void rotatePictureLeft();
void rotatePictureRight();
//ZFS Restore Functions
void snapshotLoaded();
void showSnapshot();
void nextSnapshot();
void prevSnapshot();
void restoreItems();
//Multimedia Player Functions
void playerStart();
void playerError();
void playerStop();
void playerPause();
void playerNext();
void playerPrevious();
void playerFinished(); //automatically called by the media object
void playerStatusChanged(QMediaPlayer::MediaStatus stat); //automatically called
void playerStateChanged(QMediaPlayer::State newstate); //automatically called by the media object
void playerVideoAvailable(bool showVideo); //automatically called by the media object
void playerDurationChanged(qint64);
void playerTimeChanged(qint64 ctime); //automatically called by the media object
void playerSliderMoved(int);
void playerSliderHeld();
void playerSliderChanged();
void playerFileChanged();
//Context Menu Actions
void OpenItem(); //run "lumina-open" on it
void OpenItemWith(); //run "lumina-open -select" on it
//void OpenDir(); //open the dir in a new tab
void RemoveItem(); //Remove the item permanently
// - single item actions
void RenameItem();
void FavoriteItem();
// - full selection actions
void ViewPropertiesItem();
void openTerminal();
void CutItems();
void CopyItems();
void PasteItems();
void ChecksumItems();
//file info in status bar
void DisplayStatusBar(QString);
signals:
void DirChanged(QString path);
void Si_AdaptStatusBar(QFileInfoList fileList, QString path, QString messageFolders, QString messageFiles);
protected:
void resizeEvent(QResizeEvent*);
};
#endif
|