From bac6fe431150bb5706fe0fb349e753b8fe08c12e Mon Sep 17 00:00:00 2001 From: Arno Date: Tue, 3 Apr 2018 07:52:56 +0200 Subject: 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. --- fileview.cpp | 278 ----------------------------------------------------------- 1 file changed, 278 deletions(-) delete mode 100644 fileview.cpp (limited to 'fileview.cpp') diff --git a/fileview.cpp b/fileview.cpp deleted file mode 100644 index 0d7d90c..0000000 --- a/fileview.cpp +++ /dev/null @@ -1,278 +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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fileview.h" -#include "hoverwindow.h" -#include "smglobals.h" -#include "filesystemfileproxy.h" -#include "filepropertiesdialog.h" -#include "smdirmodel.h" - -FileView::FileView(QWidget *parent) : SmTreeView("ui/fsheaderpos", parent), mDeleteA(0) { - setAttribute(Qt::WA_Hover); - setRootIsDecorated(false); - setEditTriggers(QAbstractItemView::NoEditTriggers); - mHoverWin = new HoverWindow(this); - QSize curSize = SmGlobals::instance()->cursorSize(); - mHoverWin->setHoverOffset(QPoint(curSize.width() + 30, 0)); -} - -void FileView::setModel(QAbstractItemModel *model){ - mProxy = qobject_cast(model); - mModel = qobject_cast(mProxy->sourceModel()); - SmTreeView::setModel(model); -} - -QStringList FileView::selectedItems(){ - QModelIndexList items = selectionModel()->selectedRows(SmDirModel::Name); - if(!items.isEmpty()){ - QStringList retval; - foreach(QModelIndex idx, items){ - retval << idx.data().toString(); - } - return retval; - } - return QStringList(); -} - -void FileView::markFiles(){ - bool ok; - QString title = QString(tr("%1 - %2")).arg(qApp->applicationName()).arg(tr("Mark files")); - QString glob = QInputDialog::getText(this, title, tr("Enter filename pattern"), QLineEdit::Normal, QString(), &ok); - if(!ok){ - return; - } - int rowCount = model()->rowCount(rootIndex()); - if(!rowCount || glob.isEmpty()){ - return; - } - QRegExp re(glob, Qt::CaseInsensitive, QRegExp::WildcardUnix); - for(int i = 0; i < rowCount; ++i){ - QModelIndex cur = mProxy->mapFromSource(mModel->index(i, 0, mModel->rootIndex())); - if(cur.data(SmDirModel::NameRole).toString() == ".."){ - continue; - } - if(re.indexIn(cur.data(SmDirModel::NameRole).toString()) != -1){ - selectionModel()->select(cur, QItemSelectionModel::Select | QItemSelectionModel::Rows); - } - } -} - -void FileView::unmarkFiles(){ - selectionModel()->clearSelection(); -} - -void FileView::createFolder(){ - bool ok; - QString folderName = QInputDialog::getText(this, tr("Create folder"), tr("Enter new folder name"), QLineEdit::Normal, QString(), &ok); - if(!ok){ - return; - } - if(!ok || folderName.isEmpty()){ - return; - } - mModel->dir().mkdir(folderName); -} - -void FileView::readConfig(){ - QSettings s; - mHoverPics = s.value("ui/hoverpics", true).toBool(); - mHoverWin->setWindowOpacity(s.value("ui/hoveropacity", 10).toFloat() / 10.0); - mCursorOffset = s.value("ui/cursoroffset").toInt(); - readHeaderConfig(); -} - -void FileView::writeConfig(){ - writeHeaderConfig(); -} - -void FileView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint){ - SmTreeView::closeEditor(editor, hint); - QModelIndex sourceIdx = mProxy->mapToSource(currentIndex()); - emit editorClosed(sourceIdx); - mModel->refreshTimer()->start(); -} - -void FileView::contextMenuEvent(QContextMenuEvent *e){ - mHoverWin->hide(); - QMenu contextMenu(this); - foreach(QAction *a, actions()){ - contextMenu.addAction(a); - } - contextMenu.exec(e->globalPos()); -} - -void FileView::keyPressEvent(QKeyEvent *e){ - if(!hasFocus()){ - SmTreeView::keyPressEvent(e); - return; - } - switch(e->key()){ - case Qt::Key_Backspace: - emit upDir(); - e->accept(); - break; - case Qt::Key_Enter: - case Qt::Key_Return: - emit enterPressed(currentIndex()); - e->accept(); - break; - case Qt::Key_Delete: - emit delFiles(); - e->accept(); - break; - default: - SmTreeView::keyPressEvent(e); - } -} - -void FileView::resizeEvent(QResizeEvent *e){ - if(e->size().width() != e->oldSize().width()){ - int width = e->size().width(); - int c1width = width / 2; // * 2; - setColumnWidth(0, c1width); - } -} - -bool FileView::event(QEvent *e){ - QHoverEvent *hEvent = static_cast(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; - QFileInfo curIdxInfo(curIdx.data(SmDirModel::FullPathRole).toString()); - if((e->type() == QEvent::HoverEnter) || (e->type() == QEvent::HoverMove)){ - if(!curIdx.isValid() || (!curIdx.column() == 0)){ - return exitHover(); - } - if(curIdx.data().toString() == ".."){ - return exitHover(); - } - if(curIdxInfo.isFile()){ - QString mimeType = Helper::mimeType(curIdxInfo.absoluteFilePath()); - if(mimeType.startsWith("image")){ - if(!mHoverPics){ - return exitHover(); - } - ft = Image; - }else{ - return exitHover(); - } - }else{ - return exitHover(); - } - } - if(e->type() == QEvent::HoverEnter){ - mCurHover = curIdx; - doHover(curIdxInfo, ft); - return true; - }else if(e->type() == QEvent::HoverMove){ - if(mCurHover != curIdx){ - mCurHover = curIdx; - doHover(curIdxInfo, ft); - }else{ - mHoverWin->setPos(); - } - return true; - } - return SmTreeView::event(e); -} - -void FileView::selectedFilesChanged(){ - QModelIndexList selected = selectionModel()->selectedRows(); - emit numSelected(selected.size()); - qint64 selSize = 0; - qint64 dur = 0; - foreach(QModelIndex i, selected){ - selSize += i.data(SmDirModel::SizeRole).toLongLong(); - dur += i.data(SmDirModel::DurSizeRole).toFloat(); - } - emit selectedSize(selSize); - emit selectedDuration(dur, false); -} - -void FileView::properties(){ - QModelIndexList selected = selectionModel()->selectedRows(); - if(selected.isEmpty()){ - return; - } - QString fp = selected.at(0).data(SmDirModel::FullPathRole).toString(); - FilePropertiesDialog fpd(fp, this); - fpd.exec(); -} - -void FileView::selectItem(const QString &item){ - QModelIndex start = mProxy->index(0, 0); - QModelIndexList items = mProxy->match(start, Qt::DisplayRole, item, 1, Qt::MatchExactly | Qt::MatchWrap); - if(!items.isEmpty()){ - selectionModel()->select(items.at(0), QItemSelectionModel::Rows | QItemSelectionModel::Select); - scrollTo(items.at(0)); - } -} - -void FileView::saveSelection(){ - mSelectedFiles.clear(); - QModelIndexList selected = selectionModel()->selectedRows(SmDirModel::Name); - foreach(QModelIndex i, selected){ - mSelectedFiles << i.data().toString(); - } -} - -void FileView::restoreSelection(){ - foreach(QString s, mSelectedFiles){ - QModelIndex i = mModel->find(s, SmDirModel::Name); - if(i.isValid()){ - QModelIndex r = mProxy->mapFromSource(i); - selectionModel()->select(r, QItemSelectionModel::Rows | QItemSelectionModel::Select); - } - } -} - -bool FileView::exitHover(bool exitVal){ - mHoverWin->setVisible(false); - mCurHover = QModelIndex(); - return exitVal; -} - -void FileView::doHover(const QFileInfo &fi, int type){ - QPixmap pm; - if(type == Image){ - pm.load(fi.absoluteFilePath()); - mHoverWin->setPixmap(pm); - mHoverWin->setCaption(fi.fileName()); - mHoverWin->setPos(); - mHoverWin->setVisible(true); - } -} -- cgit v1.2.3-70-g09d2