summaryrefslogtreecommitdiffstats
path: root/shemovcleaner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'shemovcleaner.cpp')
-rw-r--r--shemovcleaner.cpp47
1 files changed, 47 insertions, 0 deletions
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(){