aboutsummaryrefslogtreecommitdiff
path: root/lumina-fm/MainUI.cpp
diff options
context:
space:
mode:
authorwilliam <william.os4y@gmail.com>2015-03-25 22:57:32 +0100
committerwilliam <william.os4y@gmail.com>2015-03-25 22:57:32 +0100
commit553105d997c3a29e9983ef1f1995d9593273de55 (patch)
tree9404a1b1fac4d20ecdfc169b2c16c922d3295cb2 /lumina-fm/MainUI.cpp
parentupdate FileSystemCapacity for Linux, Freebsd and DragonflyBSD (diff)
downloadlumina-553105d997c3a29e9983ef1f1995d9593273de55.tar.gz
lumina-553105d997c3a29e9983ef1f1995d9593273de55.tar.bz2
lumina-553105d997c3a29e9983ef1f1995d9593273de55.zip
display some filesystem's information on the statusbar in a thread safe manier
Diffstat (limited to 'lumina-fm/MainUI.cpp')
-rw-r--r--lumina-fm/MainUI.cpp46
1 files changed, 15 insertions, 31 deletions
diff --git a/lumina-fm/MainUI.cpp b/lumina-fm/MainUI.cpp
index 1f5a65d0..59cb09bf 100644
--- a/lumina-fm/MainUI.cpp
+++ b/lumina-fm/MainUI.cpp
@@ -12,6 +12,8 @@
#define DEBUG 0
MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){
+ //for Signal/slot we must register the Typedef of QFileInfoList
+ qRegisterMetaType<QFileInfoList>("QFileInfoList");
ui->setupUi(this);
if(DEBUG){ qDebug() << "Initilization:"; }
//Be careful about the QSettings setup, it must match the lumina-desktop setup
@@ -214,6 +216,10 @@ void MainUI::setupConnections(){
connect(worker, SIGNAL(ImagesAvailable(QStringList)), this, SLOT(AvailablePictures(QStringList)) );
connect(worker, SIGNAL(MultimediaAvailable(QStringList)), this, SLOT(AvailableMultimediaFiles(QStringList)) );
connect(worker, SIGNAL(SnapshotsAvailable(QString, QStringList)), this, SLOT(AvailableBackups(QString, QStringList)) );
+
+ //Background worker class for statusbar
+ connect(this, SIGNAL(Si_AdaptStatusBar(QFileInfoList, QString, QString)), worker, SLOT(createStatusBarMsg(QFileInfoList, QString, QString)) );
+ connect(worker, SIGNAL(Si_DisplayStatusBar(QString)), this, SLOT(DisplayStatusBar(QString)) );
//Action buttons on browser page
connect(ui->tool_act_run, SIGNAL(clicked()), this, SLOT(OpenItem()) );
@@ -396,27 +402,6 @@ QString MainUI::getCurrentDir(){
return currentDir->whatsThis();
}
-QString MainUI::ItemsInstatusBar(QFileInfoList fileList, QString message){
- int i = 0;
- qreal totalSizes = 0;
- foreach (QFileInfo fileInfo, fileList )
- {
- if (fileInfo.isFile()) totalSizes += fileInfo.size();
- i += 1;
- }
- if (i==0) return "";
- QString strSize = QString(tr("%1: %2")).arg(message).arg(i);
- if (i>0 and totalSizes>1024*1024*1024)
- strSize += QString(tr(", size: %1 Gb")).arg(totalSizes/1024/1024/1024, 0,'f', 2);
- else if (i>0 and totalSizes>1024*1024)
- strSize += QString(tr(", size: %1 Mb")).arg(totalSizes/1024/1024, 0,'f',2);
- else if (i>0 and totalSizes>1024)
- strSize += QString(tr(", size: %1 Kb")).arg(totalSizes/1024, 0, 'f' , 2);
- else
- if (totalSizes > 0) { strSize += QString(tr(", size: %1 b")).arg(totalSizes, 0, 'f' , 2);}
- return strSize;
-}
-
void MainUI::setCurrentDir(QString dir){
if(dir.isEmpty()){ return; }
if(syncTimer->isActive()){ syncTimer->stop(); } //already loading the info
@@ -465,19 +450,12 @@ void MainUI::setCurrentDir(QString dir){
ui->tool_goToImages->setVisible(false);
//if(olddir!=rawdir){
emit DirChanged(rawdir); //This will be automatically run when a new dir is loaded
+ emit Si_AdaptStatusBar(fsmod->rootDirectory().entryInfoList(), rawdir, tr("Items"));
//}
if(isUserWritable){ ui->label_dir_stats->setText(""); }
else{ ui->label_dir_stats->setText(tr("Limited Access Directory"));
}
- //collect some statistics of dir and display them in statusbar
- QFileInfoList fileList = fsmod->rootDirectory().entryInfoList();
- QString msgStatusBar = ItemsInstatusBar(fileList, tr("Items"));
- QString capacity = LOS::FileSystemCapacity(dir) ;
- if (msgStatusBar.isEmpty()) msgStatusBar += tr("Capacity: ") + capacity;
- else msgStatusBar += tr(", Capacity: ") + capacity;
- if (!msgStatusBar.isEmpty()) ui->statusbar->showMessage(msgStatusBar);
-
ui->tool_addToDir->setVisible(isUserWritable);
ui->tool_addNewFile->setVisible(isUserWritable);
ui->actionUpDir->setEnabled(dir!="/");
@@ -570,6 +548,11 @@ void MainUI::AvailableBackups(QString basedir, QStringList snapdirs){
ui->tool_goToRestore->setVisible(!snapDirs.isEmpty());
}
+void MainUI::DisplayStatusBar(QString msg){
+ qDebug() << "in main thread:" << msg;
+ ui->statusbar->showMessage(msg);
+}
+
void MainUI::AvailablePictures(QStringList pics){
if(!pics.isEmpty()){
QString citem = ui->combo_image_name->currentText();
@@ -990,8 +973,9 @@ void MainUI::OpenContextMenu(const QPoint &pt){
void MainUI::ItemSelectionChanged(){
//Enable/disable the action buttons
QFileInfoList sel = getSelectedItems();
- QString msgStatusBar = ItemsInstatusBar(sel, tr("Items selected"));
- if (!msgStatusBar.isEmpty()) ui->statusbar->showMessage(msgStatusBar);
+ //display info related to files selected.
+ //TO CHECK: impact if filesystem is very slow
+ if (sel.size()>0) worker->createStatusBarMsg(sel, "", tr("Items selected"));
ui->tool_act_run->setEnabled(sel.length()==1);
ui->tool_act_runwith->setEnabled(sel.length()==1);
bgstack15