summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp57
1 files changed, 48 insertions, 9 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(){
}