summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-11-27 04:43:53 +0100
committerArno <arno@disconnect.de>2016-11-27 04:43:53 +0100
commitc034fce78687a7d65c61aa0348d09b4afea3648c (patch)
tree12053e7fb5e7e1cbae972ae3066f8b69d93d0c7b
parent5cde173217fd8cb1dbc21f3ac54f18e8234e709b (diff)
downloadShemovCleaner-c034fce78687a7d65c61aa0348d09b4afea3648c.tar.gz
ShemovCleaner-c034fce78687a7d65c61aa0348d09b4afea3648c.tar.bz2
ShemovCleaner-c034fce78687a7d65c61aa0348d09b4afea3648c.zip
Add free space widget to status bar
Red is used, green is free, obviously...
-rw-r--r--filewidget.cpp4
-rw-r--r--filewidget.h3
-rw-r--r--shemovcleaner.cpp47
-rw-r--r--shemovcleaner.h3
-rw-r--r--torrentwidget.cpp4
-rw-r--r--torrentwidget.h4
6 files changed, 62 insertions, 3 deletions
diff --git a/filewidget.cpp b/filewidget.cpp
index 4b22b77..966ad95 100644
--- a/filewidget.cpp
+++ b/filewidget.cpp
@@ -1,4 +1,3 @@
-#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QVBoxLayout>
@@ -443,6 +442,7 @@ void FileWidget::paste(){
}
gatherData();
qApp->restoreOverrideCursor();
+ emit freeSpaceChanged(mDir->text());
}
}
@@ -515,6 +515,7 @@ void FileWidget::cd(const QString &to){
mDir->setText(QDir::toNativeSeparators(newDir));
mLastDir = ld;
gatherData();
+ emit freeSpaceChanged(mDir->text());
}else{
QString msg = QString(tr("Could not cd to %1")).arg(to);
emit statusMessage(msg);
@@ -542,6 +543,7 @@ void FileWidget::deleteFiles(){
deleteRecursive(fi);
}
gatherData();
+ emit freeSpaceChanged(mDir->text());
}
}
diff --git a/filewidget.h b/filewidget.h
index ef18603..a886914 100644
--- a/filewidget.h
+++ b/filewidget.h
@@ -8,6 +8,7 @@
#include <QMenuBar>
#include <QToolBar>
#include <QFileInfo>
+#include <QLineEdit>
class QLineEdit;
class QStandardItemModel;
@@ -32,6 +33,7 @@ class FileWidget : public QWidget {
QTreeView *fileView() { return mFileView; }
QMenuBar *menuBar() { return mMenuBar; }
QToolBar *toolBar() { return mToolBar; }
+ const QString currentDir() const { return mDir->text(); }
void setProgressBar(QProgressBar *progressBar) { mProgressBar = progressBar; }
~FileWidget();
@@ -39,6 +41,7 @@ class FileWidget : public QWidget {
void statusMessage(const QString &msg);
void selectionCountChanged(const QString &msg);
void durationChanged(const QString &duration);
+ void freeSpaceChanged(const QString &dir);
public slots:
void fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp
index 171d689..80f2cd3 100644
--- a/shemovcleaner.cpp
+++ b/shemovcleaner.cpp
@@ -13,6 +13,8 @@
#include <QKeyEvent>
#include <QProgressBar>
#include <QCloseEvent>
+#include <QStorageInfo>
+#include <QPainter>
#include "shemovcleaner.h"
#include "torrentwidget.h"
@@ -53,9 +55,11 @@ ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(p
connect(mTorrentTab, SIGNAL(statusMessage(QString)), this, SLOT(statusBarMessage(QString)));
connect(mTorrentTab, SIGNAL(selectionCountChanged(QString)), this, SLOT(setSelectionCount(QString)));
+ connect(mTorrentTab, SIGNAL(freeSpaceChanged(QString)), this, SLOT(updateFreeSpace(QString)));
connect(mFileTab, SIGNAL(statusMessage(QString)), this, SLOT(statusBarMessage(QString)));
connect(mFileTab, SIGNAL(selectionCountChanged(QString)), this, SLOT(setSelectionCount(QString)));
connect(mFileTab, SIGNAL(durationChanged(QString)), this, SLOT(setDuration(QString)));
+ connect(mFileTab, SIGNAL(freeSpaceChanged(QString)), this, SLOT(updateFreeSpace(QString)));
connect(mTab, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)));
QMenu *helpMenu = new QMenu(tr("&Help"));
@@ -91,6 +95,34 @@ void ShemovCleaner::setDuration(const QString &msg){
mDuration->setText(msg);
}
+void ShemovCleaner::updateFreeSpace(const QString &path){
+ QStorageInfo si(path);
+ QString drive = si.rootPath();
+ if(drive.endsWith('/')){
+ drive.chop(1);
+ }
+ mDrive->setText(drive);
+ QString textFree = QString(tr("%1/%2GB free")).arg(QString::number(si.bytesFree() / 1024 / 1024 / 1024)).arg(QString::number(si.bytesTotal() / 1024 / 1024 / 1024));
+
+ int usedPercent = (si.bytesTotal() - si.bytesFree()) * 100 / si.bytesTotal();
+ int usedWidth = usedPercent * mFree->width() / 100;
+
+ QImage img(mFree->size(), QImage::Format_ARGB32);
+ img.fill(Qt::green);
+ QPainter p(&img);
+ p.setBrush(QBrush(Qt::red));
+ p.setPen(Qt::NoPen);
+ p.drawRect(QRect(0, 0, usedWidth, mFree->height()));
+
+ QFont f(qApp->font());
+ f.setBold(true);
+ p.setFont(f);
+ p.setPen(Qt::blue);
+ p.drawText(mFree->rect(), Qt::AlignCenter, textFree);
+
+ mFree->setPixmap(QPixmap::fromImage(img));
+}
+
void ShemovCleaner::setSelectionCount(const QString &msg){
mSelected->setText(msg);
}
@@ -106,10 +138,13 @@ void ShemovCleaner::configure(){
void ShemovCleaner::tabChanged(int idx){
if(idx == Torrents){
setDuration("00:00:00");
+ updateFreeSpace(mTorrentTab->currentDir());
}else if(idx == Videos){
mFileTab->fileView()->setFocus();
+ updateFreeSpace(mFileTab->currentDir());
}else if(idx == Actors){
mActorTab->actorView()->setFocus();
+ updateFreeSpace(mFileTab->currentDir());
}
}
@@ -136,11 +171,22 @@ void ShemovCleaner::createStatusBar(){
mProgressBar = new QProgressBar;
mProgressBar->setMaximumWidth(150);
mProgressBar->setMaximumHeight(10);
+ mDrive = new QLabel(tr("C:"));
+ mFree = new QLabel;
+ mFree->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+ mFree->setMaximumWidth(120);
+ mFree->setMinimumWidth(120);
+ QFont f(qApp->font());
+ f.setBold(true);
+ QFontMetrics fm(f);
+ mFree->setMaximumHeight(fm.height() + 6);
statusBar()->addPermanentWidget(mProgressBar);
statusBar()->addPermanentWidget(l1);
statusBar()->addPermanentWidget(mSelected);
statusBar()->addPermanentWidget(l2);
statusBar()->addPermanentWidget(mDuration);
+ statusBar()->addPermanentWidget(mDrive);
+ statusBar()->addPermanentWidget(mFree);
}
void ShemovCleaner::createGlobalActions(){
@@ -183,6 +229,7 @@ void ShemovCleaner::readSettings(){
QSettings s;
int curTab = s.value("startupTab").toInt();
mTab->setCurrentIndex(curTab);
+ tabChanged(curTab);
}
void ShemovCleaner::writeSettings(){
diff --git a/shemovcleaner.h b/shemovcleaner.h
index 32fafba..9cd7f76 100644
--- a/shemovcleaner.h
+++ b/shemovcleaner.h
@@ -21,6 +21,7 @@ class ShemovCleaner : public QMainWindow {
void statusBarMessage(const QString &msg);
void setSelectionCount(const QString &msg);
void setDuration(const QString &msg);
+ void updateFreeSpace(const QString &path);
void configure();
void tabChanged(int idx);
void aboutThisProgram();
@@ -37,6 +38,8 @@ class ShemovCleaner : public QMainWindow {
QAction *createSeparator();
QLabel *mSelected;
QLabel *mDuration;
+ QLabel *mDrive;
+ QLabel *mFree;
QProgressBar *mProgressBar;
QTabWidget *mTab;
TorrentWidget *mTorrentTab;
diff --git a/torrentwidget.cpp b/torrentwidget.cpp
index b101598..16e70e8 100644
--- a/torrentwidget.cpp
+++ b/torrentwidget.cpp
@@ -5,7 +5,6 @@
#include <QPushButton>
#include <QFileDialog>
#include <QDir>
-#include <QLineEdit>
#include <QTreeView>
#include <QStandardItemModel>
#include <QStandardItem>
@@ -240,6 +239,7 @@ void TorrentWidget::deleteFiles(){
QString msg = QString(tr("Successfully deleted %1 of %2 file(s)")).arg(QString::number(ctr)).arg(QString::number(sel.count()));
emit statusMessage(msg);
gatherData();
+ emit freeSpaceChanged(mDir->text());
}
}
@@ -272,6 +272,7 @@ void TorrentWidget::moveFiles(){
QString msg = QString(tr("Successfully moved %1 of %2 file(s)")).arg(QString::number(ctr)).arg(QString::number(sel.count()));
emit statusMessage(msg);
gatherData();
+ emit freeSpaceChanged(mDir->text());
}
}
@@ -362,6 +363,7 @@ void TorrentWidget::setDir(){
QSettings s;
s.setValue("dirs/torrentdir", mDir->text());
gatherData();
+ emit freeSpaceChanged(mDir->text());
}
void TorrentWidget::copyToClipboard(){
diff --git a/torrentwidget.h b/torrentwidget.h
index 2288e60..65c1161 100644
--- a/torrentwidget.h
+++ b/torrentwidget.h
@@ -5,9 +5,9 @@
#include <QItemSelection>
#include <QString>
#include <QContextMenuEvent>
+#include <QLineEdit>
class QPushButton;
-class QLineEdit;
class QTreeView;
class QStandardItemModel;
class QLabel;
@@ -30,11 +30,13 @@ class TorrentWidget : public QWidget {
TorrentDisplay *torrentDisplay() { return mTorrentDisplay; }
QTreeView *torrentFileView() { return mFileView; }
void setProgressBar(QProgressBar *progressBar) { mProgressBar = progressBar; }
+ const QString currentDir() const { return mDir->text(); }
~TorrentWidget();
signals:
void statusMessage(const QString &msg);
void selectionCountChanged(const QString &msg);
+ void freeSpaceChanged(const QString &dir);
public slots:
void selectDir();