summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-09-03 04:49:51 +0200
committerArno <arno@disconnect.de>2016-09-03 04:49:51 +0200
commitf80c6c80da7530b43f15acd3b60b27ab6c629f3d (patch)
treef2ec93b7a894a941d8013388e23f0379833f58ff
parent86d3baf2c6c6ff3bb987dcd30cd606f0a45ef626 (diff)
downloadShemovCleaner-f80c6c80da7530b43f15acd3b60b27ab6c629f3d.tar.gz
ShemovCleaner-f80c6c80da7530b43f15acd3b60b27ab6c629f3d.tar.bz2
ShemovCleaner-f80c6c80da7530b43f15acd3b60b27ab6c629f3d.zip
FileWidget enhancements
* add distinct icons for files presenet or non present in DB and non- video files, make it sortable * read and save settings * save geometry of ShemovCleaner
-rw-r--r--filewidget.cpp57
-rw-r--r--filewidget.h10
-rw-r--r--shemovcleaner.cpp10
-rw-r--r--shemovcleaner.h3
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();