aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src-qt5/desktop-utils/lumina-fm/MainUI.cpp25
-rw-r--r--src-qt5/desktop-utils/lumina-fm/MainUI.h9
-rw-r--r--src-qt5/desktop-utils/lumina-fm/OPWidget.cpp13
-rw-r--r--src-qt5/desktop-utils/lumina-fm/OPWidget.h2
-rw-r--r--src-qt5/desktop-utils/lumina-fm/TrayUI.cpp7
-rw-r--r--src-qt5/desktop-utils/lumina-fm/TrayUI.h3
6 files changed, 51 insertions, 8 deletions
diff --git a/src-qt5/desktop-utils/lumina-fm/MainUI.cpp b/src-qt5/desktop-utils/lumina-fm/MainUI.cpp
index 02533271..128c4cd5 100644
--- a/src-qt5/desktop-utils/lumina-fm/MainUI.cpp
+++ b/src-qt5/desktop-utils/lumina-fm/MainUI.cpp
@@ -20,7 +20,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){
//just to silence/fix some Qt connect warnings in QtConcurrent
//qRegisterMetaType< QVector<int> >("QVector<int>");
//qRegisterMetaType< QList<QPersistentModelIndex> >("QList<QPersistentModelIndex>");
-
+ waitingToClose = false;
ui->setupUi(this);
ui->menuGit->setVisible( GIT::isAvailable() );
@@ -106,6 +106,7 @@ QSize orig = settings->value("preferences/MainWindowSize", QSize()).toSize();
RebuildDeviceMenu();
//Make sure we start on the browser page
TRAY = new TrayUI(this);
+ connect(TRAY, SIGNAL(JobsFinished()), this, SLOT(TrayJobsFinished()) );
if(DEBUG){ qDebug() << " - Done with init"; }
}
@@ -187,7 +188,7 @@ void MainUI::OpenDirs(QStringList dirs){
//Double check that there is at least 1 dir loaded
//qDebug() << "OpenDirs:" << DWLIST.length() << dirs << invalid << tabBar->currentIndex();
if(DWLIST.isEmpty()){ OpenDirs(QStringList()); }
-
+ waitingToClose = false;
}
void MainUI::setupIcons(){
@@ -944,3 +945,23 @@ void MainUI::TabNameChanged(QString id, QString name){
}
}
}
+
+void MainUI::TrayJobsFinished(){
+ if(waitingToClose){ this->close(); }
+}
+
+//=============
+// PROTECTED
+//=============
+void MainUI::closeEvent(QCloseEvent *ev){
+ //See if the tray is active or not first
+ if(TRAY!=0){
+ if(TRAY->isVisible() && !waitingToClose){
+ this->hide();
+ ev->ignore();
+ waitingToClose = true;
+ return;
+ }
+ }
+ QMainWindow::closeEvent(ev); //continue normal close routine
+}
diff --git a/src-qt5/desktop-utils/lumina-fm/MainUI.h b/src-qt5/desktop-utils/lumina-fm/MainUI.h
index 0ed9c44b..2b4c0d7b 100644
--- a/src-qt5/desktop-utils/lumina-fm/MainUI.h
+++ b/src-qt5/desktop-utils/lumina-fm/MainUI.h
@@ -88,9 +88,10 @@ private:
MultimediaWidget *MW;
SlideshowWidget *SW;
TrayUI *TRAY;
+ bool waitingToClose;
- QSettings *settings;
- QShortcut *nextTabLShort, *nextTabRShort, *togglehiddenfilesShort, *focusDirWidgetShort;
+ QSettings *settings;
+ QShortcut *nextTabLShort, *nextTabRShort, *togglehiddenfilesShort, *focusDirWidgetShort;
//QCompleter *dirCompleter;
//Simplification Functions
@@ -169,6 +170,8 @@ private slots:
//file info in status bar
void DisplayStatusBar(QString);
+ void TrayJobsFinished();
+
signals:
void Si_AdaptStatusBar(QFileInfoList fileList, QString path, QString messageFolders, QString messageFiles);
@@ -179,6 +182,8 @@ protected:
QMainWindow::resizeEvent(ev); //just in case the window needs to see the event too
}
+ void closeEvent(QCloseEvent *ev);
+
};
#endif
diff --git a/src-qt5/desktop-utils/lumina-fm/OPWidget.cpp b/src-qt5/desktop-utils/lumina-fm/OPWidget.cpp
index 3e842b90..3638e2a8 100644
--- a/src-qt5/desktop-utils/lumina-fm/OPWidget.cpp
+++ b/src-qt5/desktop-utils/lumina-fm/OPWidget.cpp
@@ -7,16 +7,19 @@
#include "OPWidget.h"
#include "ui_OPWidget.h"
+#include "ScrollDialog.h"
+
OPWidget::OPWidget(QWidget *parent) : QWidget(parent), ui(new Ui::OPWidget()){
starttime = endtime = -1;
WA = new QWidgetAction(0);
WA->setDefaultWidget(this);
worker = 0;
workthread = 0;
+ dlg = 0;
//Now create the widget
ui->setupUi(this);
ui->tool_close->setIcon( LXDG::findIcon("dialog-close","view-close") );
- ui->tool_showerrors->setIcon(LXDG::findIcon("view-search",""));
+ ui->tool_showerrors->setIcon(LXDG::findIcon("dialog-warning",""));
//connect the widget buttons
connect(ui->tool_close, SIGNAL(clicked()), this, SLOT(closeWidget()) );
connect(ui->tool_showerrors, SIGNAL(clicked()), this, SLOT(showErrors()) );
@@ -26,6 +29,7 @@ OPWidget::~OPWidget(){
if(worker!=0){ worker->stopped = true; worker->deleteLater(); }
if(workthread!=0){ workthread->quit(); workthread->wait(); delete workthread; }
WA->deleteLater();
+ if(dlg!=0){ dlg->deleteLater(); }
}
QWidgetAction* OPWidget::widgetAction(){
@@ -87,7 +91,12 @@ void OPWidget::closeWidget(){
void OPWidget::showErrors(){
qDebug() << "Errors:" << Errors;
- //TODO
+ if(dlg==0){
+ dlg = new ScrollDialog(); //need this to persist outside this function
+ dlg->setWindowTitle(tr("File Operation Errors"));
+ dlg->setText( Errors.join("\n") );
+ }
+ dlg->showNormal();
}
void OPWidget::opFinished(QStringList errors){
diff --git a/src-qt5/desktop-utils/lumina-fm/OPWidget.h b/src-qt5/desktop-utils/lumina-fm/OPWidget.h
index 600df4b7..13fb3cb3 100644
--- a/src-qt5/desktop-utils/lumina-fm/OPWidget.h
+++ b/src-qt5/desktop-utils/lumina-fm/OPWidget.h
@@ -10,6 +10,7 @@
#define _LUMINA_FILE_MANAGER_FILE_OP_OPWIDGET_H
#include "FODialog.h"
+#include "ScrollDialog.h"
namespace Ui{
class OPWidget;
};
@@ -36,6 +37,7 @@ public slots:
private:
Ui::OPWidget *ui;
+ ScrollDialog *dlg;
//Main Objects
QWidgetAction *WA;
FOWorker *worker;
diff --git a/src-qt5/desktop-utils/lumina-fm/TrayUI.cpp b/src-qt5/desktop-utils/lumina-fm/TrayUI.cpp
index 8e796c68..f7034d54 100644
--- a/src-qt5/desktop-utils/lumina-fm/TrayUI.cpp
+++ b/src-qt5/desktop-utils/lumina-fm/TrayUI.cpp
@@ -12,6 +12,7 @@
TrayUI::TrayUI(QObject *parent) : QSystemTrayIcon(parent){
this->setContextMenu( new QMenu() );
this->setIcon(LXDG::findIcon("Insight-FileManager",""));
+ connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(TrayActivated()));
}
TrayUI::~TrayUI(){
@@ -38,6 +39,10 @@ void TrayUI::createOP( FILEOP type, QStringList oldF, QStringList newF){
QTimer::singleShot(0, OP, SLOT(startOperation()) );
}
+void TrayUI::TrayActivated(){
+ this->contextMenu()->popup( this->geometry().center() );
+}
+
//Operation Widget Responses
void TrayUI::OperationClosed(QString ID){
for(int i=0; i<OPS.length(); i++){
@@ -68,7 +73,7 @@ void TrayUI::OperationFinished(QString ID){
//qDebug() << " -- Errors:" << err << "Duration:" << OPS[i]->duration();
//Assemble the notification (if more than 1 second to perform operation)
if(OPS[i]->duration()>1){
- this->showMessage( tr("Finished"), err ? tr("Errors during operation. Click to view details") : tr("No Errors"), err ? QSystemTrayIcon::Warning : QSystemTrayIcon::Information);
+ this->showMessage( tr("Finished"), err ? tr("Errors during operation. Click to view details") : "", err ? QSystemTrayIcon::Warning : QSystemTrayIcon::Information);
}
//Close the widget if no errors
if(!err){ OperationClosed(ID); }
diff --git a/src-qt5/desktop-utils/lumina-fm/TrayUI.h b/src-qt5/desktop-utils/lumina-fm/TrayUI.h
index 38a99f7a..4210784a 100644
--- a/src-qt5/desktop-utils/lumina-fm/TrayUI.h
+++ b/src-qt5/desktop-utils/lumina-fm/TrayUI.h
@@ -31,7 +31,8 @@ private:
void createOP( FILEOP, QStringList oldF, QStringList newF);
private slots:
-
+ void TrayActivated();
+
//Operation Widget Responses
void OperationClosed(QString ID);
void OperationStarted(QString ID);
bgstack15