From c277eca79a3fbdbfe07d940369d687bafb84eef6 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 14 Sep 2013 07:00:38 +0200 Subject: Code cleanup Fix FileView + FilesystemWidget. * Get rid of useless qobject_casts * Remove hover over movies and directories * Fix shortcut for (de-)selecting files --- filesystemwidget.cpp | 5 ++--- fileview.cpp | 50 ++++++++++++-------------------------------------- fileview.h | 7 ++----- shemov.cpp | 2 ++ 4 files changed, 18 insertions(+), 46 deletions(-) diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index ea129ad..c2d3861 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -227,7 +227,6 @@ void FilesystemWidget::goBack(){ void FilesystemWidget::deleteFiles(){ TimerHandler h(mFileModel->refreshTimer()); - QSortFilterProxyModel *proxy = qobject_cast(mFileView->model()); QModelIndexList selected = mFileView->selectionModel()->selectedRows(); if(selected.isEmpty()){ return; @@ -237,8 +236,8 @@ void FilesystemWidget::deleteFiles(){ int retval = QMessageBox::question(this, tr("Question"), message, QMessageBox::Yes | QMessageBox::No); if(retval == QMessageBox::Yes){ foreach(QModelIndex idx, selected){ - QModelIndex real = proxy->mapToSource(idx); - deleteRecursive(mFileModel->fileInfo(real)); + QFileInfo fi(idx.data(SmDirModel::FullPathRole).toString()); + deleteRecursive(fi); } } } diff --git a/fileview.cpp b/fileview.cpp index 1fa370e..a9ed678 100644 --- a/fileview.cpp +++ b/fileview.cpp @@ -63,10 +63,8 @@ void FileView::markFiles(){ return; } QRegExp re(glob, Qt::CaseInsensitive, QRegExp::WildcardUnix); - FilesystemFileProxy *proxy = qobject_cast(model()); - SmDirModel *m = qobject_cast(proxy->sourceModel()); for(int i = 0; i < rowCount; ++i){ - QModelIndex cur = m->rootIndex().child(i, 0); + QModelIndex cur = mProxy->mapFromSource((mModel->rootIndex().child(i, 0))); if(cur.data(SmDirModel::NameRole).toString() == ".."){ continue; } @@ -89,17 +87,12 @@ void FileView::createFolder(){ if(!ok || folderName.isEmpty()){ return; } - QSortFilterProxyModel *proxy = qobject_cast(model()); - SmDirModel *model = qobject_cast(proxy->sourceModel()); - model->dir().mkdir(folderName); - model->refresh(); + mModel->dir().mkdir(folderName); } void FileView::readConfig(){ QSettings s; mHoverPics = s.value("ui/hoverpics", true).toBool(); - mHoverMovies = s.value("ui/hovermovies", true).toBool(); - mWhen = s.value("ui/grabframe", "00:00:00").toString(); mHoverWin->setWindowOpacity(s.value("ui/hoveropacity", 10).toFloat() / 10.0); mCursorOffset = s.value("ui/cursoroffset").toInt(); readHeaderConfig(); @@ -111,8 +104,7 @@ void FileView::writeConfig(){ void FileView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint){ SmTreeView::closeEditor(editor, hint); - QSortFilterProxyModel *proxy = qobject_cast(model()); - QModelIndex sourceIdx = proxy->mapToSource(currentIndex()); + QModelIndex sourceIdx = mProxy->mapToSource(currentIndex()); emit editorClosed(sourceIdx); mModel->refreshTimer()->start(); } @@ -163,6 +155,9 @@ bool FileView::event(QEvent *e){ if(!hEvent){ return exitHover(); } + if(e->type() == QEvent::HoverLeave){ + return exitHover(); + } QPoint hotSpot(hEvent->pos().x(), hEvent->pos().y() + mCursorOffset); QModelIndex curIdx = indexAt(hotSpot); HoverFileType ft = None; @@ -181,12 +176,7 @@ bool FileView::event(QEvent *e){ return exitHover(); } ft = Image; - }else if(mimeType.startsWith("video")){ - if(!mHoverMovies){ - return exitHover(); - } - ft = Movie; - }else{ + }else{ return exitHover(); } }else{ @@ -205,9 +195,7 @@ bool FileView::event(QEvent *e){ mHoverWin->setPos(); } return true; - }else if(e->type() == QEvent::HoverLeave){ - return exitHover(); - } + } return SmTreeView::event(e); } @@ -260,25 +248,11 @@ bool FileView::exitHover(bool exitVal){ void FileView::doHover(const QFileInfo &fi, int type){ QPixmap pm; - if(type == Movie){ - pm = SmGlobals::instance()->frameCache()->entry(fi.absoluteFilePath(), mWhen); - if(pm.isNull()){ - exitHover(); - return; - } - mHoverWin->setPixmap(pm, false); - mHoverWin->setCaption(fi.fileName()); - }else if(type == Image){ + if(type == Image){ pm.load(fi.absoluteFilePath()); mHoverWin->setPixmap(pm); mHoverWin->setCaption(fi.fileName()); - }else if(type == Dir){ - QList hoverList; - hoverList << fi.fileName(); - QDir curDir(fi.absoluteFilePath()); - hoverList << curDir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot, QDir::Name); - mHoverWin->setData(hoverList); - } - mHoverWin->setPos(); - mHoverWin->setVisible(true); + mHoverWin->setPos(); + mHoverWin->setVisible(true); + } } diff --git a/fileview.h b/fileview.h index aa9244c..65097bd 100644 --- a/fileview.h +++ b/fileview.h @@ -51,8 +51,8 @@ class FileView : public SmTreeView { void selectedFilesChanged(); void properties(); - protected slots: - virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); + protected slots: + virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); protected: virtual void contextMenuEvent(QContextMenuEvent *e); @@ -67,10 +67,7 @@ class FileView : public SmTreeView { QAction *mDeleteA; HoverWindow *mHoverWin; QModelIndex mCurHover; - bool mHoverDirs; - bool mHoverMovies; bool mHoverPics; - QString mWhen; qint16 mCursorOffset; QList mMd5Sums; FilesystemFileProxy *mProxy; diff --git a/shemov.cpp b/shemov.cpp index 86b54f6..9f81840 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -399,9 +399,11 @@ void SheMov::createActions(){ connect(mBackDirA, SIGNAL(triggered()), mFSWidget, SLOT(goBack())); mMarkFilesA = new QAction(tr("Select files..."), this); mMarkFilesA->setShortcut(tr("CTRL++")); + mMarkFilesA->setShortcut(QKeySequence(Qt::CTRL + Qt::KeypadModifier + Qt::Key_Plus)); connect(mMarkFilesA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(markFiles())); mUnmarkFilesA = new QAction(tr("Deselect all files"), this); mUnmarkFilesA->setShortcut(tr("CTRL+-")); + mUnmarkFilesA->setShortcut(QKeySequence(Qt::CTRL + Qt::KeypadModifier + Qt::Key_Minus)); connect(mUnmarkFilesA, SIGNAL(triggered()), mFSWidget->fileView(), SLOT(unmarkFiles())); mCreateFolderA = new QAction(tr("Create folder..."), this); mCreateFolderA->setShortcut(tr("CTRL+n")); -- cgit v1.2.3-70-g09d2