diff options
Diffstat (limited to 'shemovcleaner.cpp')
-rw-r--r-- | shemovcleaner.cpp | 47 |
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(){ |