summaryrefslogtreecommitdiffstats
path: root/smdirmodel.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-04-03 07:52:56 +0200
committerArno <arno@disconnect.de>2018-04-03 07:52:56 +0200
commitbac6fe431150bb5706fe0fb349e753b8fe08c12e (patch)
tree2841c2c8c3e8e33321855a0635f4b8f0d6891b46 /smdirmodel.cpp
parent2213d00d25b6b3127e33a0df63cae54d29748d06 (diff)
downloadSheMov-bac6fe431150bb5706fe0fb349e753b8fe08c12e.tar.gz
SheMov-bac6fe431150bb5706fe0fb349e753b8fe08c12e.tar.bz2
SheMov-bac6fe431150bb5706fe0fb349e753b8fe08c12e.zip
Good riddance Filesystem Widget!
Get rid of FilesystemWidget and helper classes. The SmDirWatcher was useful, once, I guess, nice to implement it by foot, but with the current workflow it isn't needed any more.
Diffstat (limited to 'smdirmodel.cpp')
-rw-r--r--smdirmodel.cpp231
1 files changed, 0 insertions, 231 deletions
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
deleted file mode 100644
index b6bc853..0000000
--- a/smdirmodel.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version
- 2 of the License, or (at your option) any later version.
-*/
-
-#include <QDateTime>
-#include <QTimer>
-#include <QSettings>
-
-#include "smdirmodel.h"
-#include "smdirwatcher.h"
-#include "smtreeitem.h"
-#include "smglobals.h"
-#include "helper.h"
-
-SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mHeaders(headers), mExpensiveOps(true){
- mWatch = new SmDirWatcher(NumFields, this);
- connect(mWatch, SIGNAL(needRefresh()), this, SLOT(refresh()));
- mRunTimer = new QTimer(this);
- mRunTimer->setInterval(2000);
- connect(mRunTimer, SIGNAL(timeout()), mWatch, SLOT(start()));
- mRunTimer->start();
- mRefreshTimer = new QTimer(this);
- readSettings();
-
- connect(mWatch, SIGNAL(population(SmTreeItem*)), this, SLOT(populate(SmTreeItem*)));
- connect(mWatch, SIGNAL(newData(QList<QVariant>,int)), this, SLOT(dirEvent(QList<QVariant>,int)));
-}
-
-SmDirModel::~SmDirModel(){
- if(mWatch->isRunning()){
- mWatch->stop();
- }
- mWatch->deleteLater();
-}
-
-QVariant SmDirModel::data(const QModelIndex &index, int role) const{
- if(!index.isValid()){
- return QVariant();
- }
- SmTreeItem *i = itemAt(index);
- switch (role){
- case NameRole:
- return i->data(Name);
- case SizeRole:
- return i->data(Size);
- case TypeRole:
- return i->data(Type);
- case CreatedRole:
- return i->data(Created);
- case Md5sumRole:
- return i->data(Md5sum);
- case DurSizeRole:
- return i->data(DurSize);
- case BitrateRole:
- return i->data(Bitrate);
- case FullPathRole:
- return i->data(FullPath);
- case PresentRole:
- return i->data(Present);
- case Qt::DecorationRole: {
- if(index.column() == 0){
- QFileInfo fi(i->data(FullPath).toString());
- if(fi.isDir()){
- return mIcons.value("folder");
- }
- if(fi.isFile()){
- return mIcons.value("file");
- }
- }
- return QVariant();
- }
- case Qt::ForegroundRole:
- if(index.column() == 0){
- if((i->data(Present).toInt() == InFiles) || (i->data(Present).toInt() == InPictures)){
- return QVariant(QColor(Qt::darkGreen));
- }
- else if(i->data(Present).toInt() == InOrigin){
- return QVariant(QColor(Qt::darkRed));
- }else{
- return SmTreeModel::data(index, role);
- }
- }
- return SmTreeModel::data(index, role);
- default:
- return SmTreeModel::data(index, role);
- }
-}
-
-bool SmDirModel::setData(const QModelIndex &index, const QVariant &value, int role){
- if(!index.isValid()){
- return false;
- }
- if(role == Qt::EditRole && index.column() == Name){
- //this is a rename
- QString newName = value.toString();
- if(newName.contains(QDir::separator())){
- return false;
- }
- SmTreeItem *i = itemAt(index);
- QString old = i->data(FullPath).toString();
- QString dir = fileInfo(index).absolutePath();
- QString newPath = QString("%1/%2").arg(dir).arg(newName);
- QFile::rename(old, newPath);
- return true;
- }
- return SmTreeModel::setData(index, value, role);
-}
-
-bool SmDirModel::isDir(const QModelIndex &idx) const {
- if(!idx.isValid()){
- return false;
- }
- SmTreeItem *i = itemAt(idx);
- QFileInfo fi(i->data(FullPath).toString());
- return fi.isDir();
-}
-
-QDir SmDirModel::dir() const{
- return QDir(mCurrentDir);
-}
-
-QFileInfo SmDirModel::fileInfo(const QModelIndex &idx) const {
- if(!idx.isValid()){
- return QFileInfo();
- }
- SmTreeItem *i = itemAt(idx);
- return QFileInfo(i->data(FullPath).toString());
-}
-
-void SmDirModel::setDir(const QString &dir){
- mCurrentDir = dir;
- mWatch->setDir(mCurrentDir);
-}
-
-void SmDirModel::dirEvent(const QList<QVariant> &data, int e){
- if(e == SmDirWatcher::Added){
- /* for some reason SmTreeModel::addRow() doesn't work,
- * couldn't figure it out in 5 hours, so customize it
- * and reset the model... gatherAsync is done by
- * modelReset();
- */
- addFile(data);
- emit fsFreeChanged();
- return;
- }
- QModelIndex idx = find(data.at(Name), Name, rootIndex());
- if(!idx.isValid()){
- return;
- }
- if(e == SmDirWatcher::Deleted){
- removeRow(idx.row());
- }
- if(e == SmDirWatcher::CloseWrite){
- for(int i = 0; i < mHeaders.count(); ++i){
- QModelIndex c = index(idx.row(), i, QModelIndex());
- setData(c, data.at(i), Qt::EditRole);
- }
- }
- emit fsFreeChanged();
-}
-
-void SmDirModel::readSettings(){
- mIcons.insert("folder", SmGlobals::instance()->iconFor("folder"));
- mIcons.insert("file", SmGlobals::instance()->iconFor("file"));
- QSettings s;
- bool autorefresh = s.value("ui/autorefresh", false).toBool();
- if(autorefresh){
- mRefreshTimer->stop();
- mRefreshTimer->disconnect();
- int interval = s.value("ui/autorefreshvalue").toInt();
- interval *= 1000;
- mRefreshTimer->setInterval(interval);
- mRefreshTimer->start();
- connect(mRefreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
- }
- bool expensive = s.value("ui/expensiveops", true).toBool();
- mWatch->setExpensiveOps(expensive);
-}
-
-void SmDirModel::refresh(){
- setDir(mCurrentDir);
- emit fsFreeChanged();
-}
-
-void SmDirModel::populate(SmTreeItem *root){
- setRoot(root);
- emit needResize();
-}
-
-void SmDirModel::addFile(const QList<QVariant> &data){
- SmTreeItem *newItem = new SmTreeItem(data, root());
- int w = root()->childCount();
- int i = 0;
- while(i < root()->childCount()){
- if(newItem->data(Name).toString().toLower() < root()->child(i)->data(Name).toString().toLower()){
- w = i;
- break;
- }
- ++i;
- }
- beginResetModel();
- root()->insertChild(w, newItem);
- endResetModel();
- return;
-}
-
-TimerHandler::TimerHandler(QTimer *timer) : mTimer(timer) {
- mTimer->stop();
-}
-
-TimerHandler::~TimerHandler(){
- QSettings s;
- bool autoRefresh = s.value("ui/autorefresh", false).toBool();
- if(autoRefresh){
- mTimer->start();
- }
-}
-
-WatcherHandler::WatcherHandler(SmDirWatcher *watcher) : mWatcher(watcher){
- mWatcher->quit();
- mWatcher->wait();
- mWatcher->blockSignals(true);
-}
-
-WatcherHandler::~WatcherHandler(){
- mWatcher->blockSignals(false);
- mWatcher->start();
-}