diff options
-rw-r--r-- | filewidget.cpp | 57 | ||||
-rw-r--r-- | filewidget.h | 10 | ||||
-rw-r--r-- | shemovcleaner.cpp | 10 | ||||
-rw-r--r-- | shemovcleaner.h | 3 |
4 files changed, 70 insertions, 10 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index edcec8a..df97b3a 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -15,12 +15,23 @@ #include <QFont> #include <QSqlDatabase> #include <QSqlQuery> +#include <QSettings> +#include <QHeaderView> +#include <QApplication> +#include <QCursor> #include "filewidget.h" +#include "filesorter.h" #include "helper.h" FileWidget::FileWidget(QWidget *parent) : QWidget(parent) { setupGui(); + gatherData(); +} + +FileWidget::~FileWidget(){ + writeHeaderData(); + writeSettings(); } void FileWidget::setupGui(){ @@ -30,6 +41,7 @@ void FileWidget::setupGui(){ fsCompleter->setModel(dirModel); fsCompleter->setCompletionMode(QCompleter::PopupCompletion); mDir->setCompleter(fsCompleter); + connect(mDir, SIGNAL(returnPressed()), this, SLOT(gatherData())); mSelDir = new QPushButton(tr("Browse...")); connect(mSelDir, SIGNAL(clicked()), this, SLOT(selectDir())); QLabel *dirL = new QLabel(tr("&Directory")); @@ -56,7 +68,10 @@ void FileWidget::setupGui(){ mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection); mModel = new QStandardItemModel; - mFileView->setModel(mModel); + mProxy = new FileSorter; + mProxy->setSourceModel(mModel); + mFileView->setModel(mProxy); + readSettings(); QSqlDatabase mDb = QSqlDatabase::database("shemovdb"); if(!mDb.isOpen()){ @@ -71,9 +86,6 @@ void FileWidget::setupGui(){ mainLayout->addLayout(topL); mainLayout->addWidget(mFileView); setLayout(mainLayout); - - gatherData(); - } void FileWidget::selectDir(){ @@ -92,6 +104,7 @@ void FileWidget::gatherData(){ QBrush greenBrush(Qt::darkGreen); QMimeDatabase db; + qApp->setOverrideCursor(Qt::BusyCursor); foreach(QFileInfo fi, fl){ QMimeType mime = db.mimeTypeForFile(fi); @@ -100,30 +113,32 @@ void FileWidget::gatherData(){ i2->setEditable(false); QStandardItem *i4; if(mime.name().startsWith("video")){ - i1 = new QStandardItem(QIcon(":/huge_bra.png"), QString()); QString md5 = Helper::md5Sum(fi.absoluteFilePath()); i4 = new QStandardItem(md5); i4->setFont(QFont("courier new")); int haveFile = md5Count(md5); if(haveFile){ + i1 = new QStandardItem(QIcon(":/huge_bra.png"), QString()); + i1->setData(Present); i2->setForeground(greenBrush); }else{ + i1 = new QStandardItem(QIcon(":/chastity_belt.png"), QString()); + i1->setData(NotPresent); i2->setForeground(redBrush); } }else{ i1 = new QStandardItem(QIcon(":/gaping_ass.png"), QString()); + i1->setData(NoVideo); i4 = new QStandardItem(tr("n/a")); i4->setFont(QFont("courier new")); } i1->setEditable(false); - QStandardItem *i3 = new QStandardItem(mime.name()); i3->setEditable(false); root->appendRow(QList<QStandardItem*>() << i1 << i2 << i3 << i4); } - mFileView->resizeColumnToContents(0); - mFileView->resizeColumnToContents(1); - mFileView->resizeColumnToContents(2); + readHeaderData(); + qApp->restoreOverrideCursor(); } int FileWidget::md5Count(const QString &md5) { @@ -142,6 +157,30 @@ int FileWidget::md5Count(const QString &md5) { return retval; } +void FileWidget::readHeaderData(){ + QSettings s; + QByteArray headers = s.value("video/fileheaders").toByteArray(); + if(!headers.isEmpty()){ + mFileView->header()->restoreState(headers); + } +} + +void FileWidget::writeHeaderData(){ + QSettings s; + s.setValue("video/fileheaders", mFileView->header()->saveState()); +} + +void FileWidget::readSettings(){ + QSettings s; + QString dir = s.value("video/searchdir", QDir::toNativeSeparators(QDir::homePath())).toString(); + mDir->setText(dir); +} + +void FileWidget::writeSettings(){ + QSettings s; + s.setValue("video/searchdir", mDir->text()); +} + void FileWidget::searchFile(){ } diff --git a/filewidget.h b/filewidget.h index 2880d36..b00d742 100644 --- a/filewidget.h +++ b/filewidget.h @@ -9,26 +9,34 @@ class QLineEdit; class QPushButton; class QStandardItemModel; class QTreeView; +class FileSorter; class FileWidget : public QWidget { Q_OBJECT public: + enum FileAttrs { NotPresent = 0, Present = 1, NoVideo = 2 }; explicit FileWidget(QWidget *parent = 0); + ~FileWidget(); private slots: + void gatherData(); void selectDir(); void searchFile(); private: void setupGui(); - void gatherData(); int md5Count(const QString &md5); + void readHeaderData(); + void writeHeaderData(); + void readSettings(); + void writeSettings(); QLineEdit *mDir; QPushButton *mSelDir; QLineEdit *mSearchFile; QPushButton *mSearch; QStandardItemModel *mModel; QTreeView *mFileView; + FileSorter *mProxy; QSqlDatabase mDb; QSqlQuery mQOrigin; QSqlQuery mQFiles; diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp index 59653ae..ac60fb8 100644 --- a/shemovcleaner.cpp +++ b/shemovcleaner.cpp @@ -10,6 +10,7 @@ #include <QSqlDatabase> #include <QMessageBox> #include <QTreeView> +#include <QSettings> #include "shemovcleaner.h" #include "torrentwidget.h" @@ -35,6 +36,9 @@ ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(p createActions(); connect(mTorrentTab, SIGNAL(statusMessage(QString)), this, SLOT(statusBarMessage(QString))); connect(mTorrentTab, SIGNAL(selectionCountChanged(QString)), this, SLOT(setSelectionCount(QString))); + + QSettings s; + restoreGeometry(s.value("geometry").toByteArray()); } void ShemovCleaner::statusBarMessage(const QString &msg){ @@ -53,6 +57,12 @@ void ShemovCleaner::configure(){ } } +void ShemovCleaner::closeEvent(QCloseEvent *e){ + QSettings s; + s.setValue("geometry", saveGeometry()); + QMainWindow::closeEvent(e); +} + void ShemovCleaner::createStatusBar(){ QLabel *l1 = new QLabel(tr("Sel.")); mSelected = new QLabel("000/000"); diff --git a/shemovcleaner.h b/shemovcleaner.h index a518ae2..e21dbe4 100644 --- a/shemovcleaner.h +++ b/shemovcleaner.h @@ -19,6 +19,9 @@ class ShemovCleaner : public QMainWindow { void setSelectionCount(const QString &msg); void configure(); + protected: + virtual void closeEvent(QCloseEvent *e); + private: void createStatusBar(); void createActions(); |