diff options
author | Arno <am@disconnect.de> | 2012-04-28 15:29:35 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-04-28 15:29:35 +0200 |
commit | 3f2df0541a862d8e6a799b9502e6b3f7a0c5f884 (patch) | |
tree | 4451efc120da60b894a40c98391236fc5ae2096a | |
parent | 5bf304d22564666621c35919b2d9aea1aa5b4b5a (diff) | |
download | SheMov-3f2df0541a862d8e6a799b9502e6b3f7a0c5f884.tar.gz SheMov-3f2df0541a862d8e6a799b9502e6b3f7a0c5f884.tar.bz2 SheMov-3f2df0541a862d8e6a799b9502e6b3f7a0c5f884.zip |
Weed out PictureViewer in favor of PictureViewer2
Remove PictureViewer from everywhere and use PictureViewer2 instead.
-rw-r--r-- | filestreewidget.cpp | 4 | ||||
-rw-r--r-- | filestreewidget.h | 4 | ||||
-rw-r--r-- | filesystemwidget.cpp | 18 | ||||
-rw-r--r-- | filesystemwidget.h | 7 | ||||
-rw-r--r-- | newmoviewizard.cpp | 6 | ||||
-rw-r--r-- | newmoviewizard.h | 4 | ||||
-rw-r--r-- | pictureswidget.cpp | 2 | ||||
-rw-r--r-- | pictureviewer2.cpp | 44 | ||||
-rw-r--r-- | pictureviewer2.h | 3 | ||||
-rw-r--r-- | shemov.cpp | 47 | ||||
-rw-r--r-- | smglobals.cpp | 6 | ||||
-rw-r--r-- | smglobals.h | 6 |
12 files changed, 113 insertions, 38 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp index 2fedc33..2d36fdc 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -37,7 +37,7 @@ #include "filestreemodel.h" #include "seriestreemodel.h" #include "helper.h" -#include "pictureviewer.h" +#include "pictureviewer2.h" #include "filepropertiesdialog.h" #include "hoverwindow.h" #include "seriestreemodel.h" @@ -315,7 +315,7 @@ void FilesTreeWidget::itemDoubleClicked(const QModelIndex &index){ if(fi.exists()){ QString mimeType = Helper::mimeType(file); if(mimeType.startsWith("image")){ - mPictureViewer->showPic(file); + mPictureViewer->setFile(file); return; }else{ int dvdNo = index.data(FilesTreeModel::DvdNoRole).toInt(); diff --git a/filestreewidget.h b/filestreewidget.h index 54393dd..4a7e3f3 100644 --- a/filestreewidget.h +++ b/filestreewidget.h @@ -18,7 +18,7 @@ class FilesTreeView; class FilesTreeModel; class FilesTreeSortModel; class SeriesTreeModel; -class PictureViewer; +class PictureViewer2; class HoverWindow; class QContextMenuEvent; class QSpinBox; @@ -54,7 +54,7 @@ class FilesTreeWidget : public QWidget { FilesTreeModel *mModel; FilesTreeSortModel *mProxy; SeriesTreeModel *mSeriesModel; - PictureViewer *mPictureViewer; + PictureViewer2 *mPictureViewer; QModelIndexList mSelectedFiles; qint64 mSelectedSize; }; diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 1592d13..f8fc294 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -35,12 +35,12 @@ #include "shemoviconprovider.h" #include "filesystemfileproxy.h" #include "helper.h" -#include "pictureviewer.h" +#include "pictureviewer2.h" #include "smglobals.h" FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboardMode(None) { mModel = new FileSystemModel(this); - mModel->setRootPath("/"); + mModel->setRootPath("/"); mModel->setFilter(QDir::AllEntries | QDir::NoDot); mModel->setReadOnly(false); mIconProvider = new SheMovIconProvider; @@ -187,7 +187,10 @@ void FilesystemWidget::fileViewActivated(const QModelIndex &idx){ programArgs = data.second; } if(mt.toLower().startsWith("image")){ - mPicViewer->showPic(path); + if(!mPicViewer->isVisible()){ + mPicViewer->setVisible(true); + } + mPicViewer->setFile(path); return; } programArgs << path; @@ -409,6 +412,15 @@ void FilesystemWidget::markSeen(){ } } +void FilesystemWidget::selectAllPV(){ + QModelIndex idx = mDirView->currentIndex(); + if(idx.isValid()){ + QModelIndex real = mDirProxy->mapToSource(idx); + QString filePath = real.data(QFileSystemModel::FilePathRole).toString(); + mPicViewer->addFiles(filePath, true); + } +} + void FilesystemWidget::setWindowTitle(const QString &dir){ mWindowTitle = QString("%1 - %2").arg(qApp->applicationName()).arg(dir); emit windowTitle(mWindowTitle); diff --git a/filesystemwidget.h b/filesystemwidget.h index 8328f64..2cb486f 100644 --- a/filesystemwidget.h +++ b/filesystemwidget.h @@ -24,7 +24,7 @@ class QLineEdit; class QFileInfo; class QAction; class QVariant; -class PictureViewer; +class PictureViewer2; class QStringList; class FileSystemModel; class QSqlQuery; @@ -40,7 +40,7 @@ class FilesystemWidget : public QWidget { FilesystemFileProxy *fileProxy() { return mFileProxy; } FileSystemModel *dirModel() { return mModel; } const QString windowTitle() const { return mWindowTitle; } - PictureViewer *pictureViewer() { return mPicViewer; } + PictureViewer2 *pictureViewer() { return mPicViewer; } bool isMounted(); signals: @@ -64,6 +64,7 @@ class FilesystemWidget : public QWidget { void configChanged(); void dvdMount(); void markSeen(); + void selectAllPV(); private slots: void dirExpanded(const QModelIndex &idx); @@ -89,7 +90,7 @@ class FilesystemWidget : public QWidget { QString mWindowTitle; QString mTemplate; qint64 mSize; - PictureViewer *mPicViewer; + PictureViewer2 *mPicViewer; SheMovIconProvider *mIconProvider; QString mLastDir; int mClipboardMode; diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp index 8249a0c..9b6b67b 100644 --- a/newmoviewizard.cpp +++ b/newmoviewizard.cpp @@ -37,7 +37,7 @@ #include "seriesmetadatamodel.h" #include "filestreemodel.h" #include "helper.h" -#include "pictureviewer.h" +#include "pictureviewer2.h" NewMovieWizard::NewMovieWizard(QWidget *parent) : QWizard(parent){ mInfoPage = new MovieInfoPage; @@ -466,13 +466,13 @@ void MovieInfoPage::itemClicked(const QModelIndex &index){ switch(type){ case WizardTreeModel::Movie:{ QString framePath = SmGlobals::instance()->frameCache()->entryPath(index.data(WizardTreeModel::FullPathRole).toString(), QString()); - mPicViewer->showPic(framePath, false); + mPicViewer->setFile(framePath); break; } case WizardTreeModel::FrontCover: case WizardTreeModel::BackCover: case WizardTreeModel::GeneralCover: - mPicViewer->showPic(index.data(WizardTreeModel::FullPathRole).toString(), false); + mPicViewer->setFile(index.data(WizardTreeModel::FullPathRole).toString()); break; default: mPicViewer->setVisible(false); diff --git a/newmoviewizard.h b/newmoviewizard.h index 45f3bb7..3ae93a2 100644 --- a/newmoviewizard.h +++ b/newmoviewizard.h @@ -30,7 +30,7 @@ class SmTreeItem; class MovieInfoPage; class MovieMappingPage; class MovieMetadataPage; -class PictureViewer; +class PictureViewer2; class NewMovieWizard : public QWizard { Q_OBJECT @@ -95,7 +95,7 @@ class MovieInfoPage : public QWizardPage { WizardTreeModel *mFileModel; SmTreeItem *mMoviesItem; SmTreeItem *mCoversItem; - PictureViewer *mPicViewer; + PictureViewer2 *mPicViewer; }; class MovieMappingPage : public QWizardPage { diff --git a/pictureswidget.cpp b/pictureswidget.cpp index e26dc7f..68400af 100644 --- a/pictureswidget.cpp +++ b/pictureswidget.cpp @@ -45,7 +45,7 @@ PicturesWidget::PicturesWidget(QWidget *parent) : QWidget(parent), mWindowTitleB //misc mEditDialog = new MappingEditDialog(this); - mPicViewer = new PictureViewer2(this); + mPicViewer = SmGlobals::instance()->pictureViewer(); mPictureView->setPV(mPicViewer); //put it all togehter diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 8aef518..eee77af 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -20,6 +20,10 @@ #include <QSettings> #include <QTextDocument> #include <QTextCursor> +#include <QFileInfo> +#include <QDir> +#include <QFileInfo> +#include <QFileInfoList> #include "pictureviewer2.h" #include "pictureswidget.h" @@ -27,6 +31,7 @@ #include "mappingtreemodel.h" #include "smtreeitem.h" #include "configurationdialog.h" +#include "helper.h" PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mDefaultFile(":/picgone.png"), mFnItem(0), mMappingItem(0) { //behave like QDialog, but don't be one... @@ -78,11 +83,50 @@ void PictureViewer2::addFiles(const PicDataList &files, bool clear){ } } +void PictureViewer2::addFiles(const QString &dir, bool clear){ + QFileInfo fi(dir); + if(!fi.isDir()){ + return; + } + PicDataList pd; + QDir directory = QDir(dir); + QFileInfoList files = directory.entryInfoList(QDir::Files, QDir::Name); + + //foreach doesn't work here. Somehow it's casted to one single QFileInfo. + //took some time to figure it out! + for(int i = 0; i < files.size(); ++i){ + pd << picData(files.at(i).absoluteFilePath()); + } + addFiles(pd, clear); +} + void PictureViewer2::setFile(const PicData &file){ addFiles(PicDataList() << file, true); showFile(mFiles.at(mCurPos)); } +void PictureViewer2::setFile(const QString &fullPath){ + PicData pd = picData(fullPath); + setFile(pd); +} + +PicData PictureViewer2::picData(const QString &fullPath){ + QFileInfo fi(fullPath); + if(!fi.exists()){ + return PicData(); + } + PicData retval; + //fields defined by PicFilesModel::Fields. + retval << fi.fileName() << fi.size(); + retval << Helper::mimeType(fullPath); + retval << fi.absoluteFilePath(); + retval << -1 << QDateTime(); + retval << Helper::md5Sum(fullPath); + QLocale l; + retval << l.toString(fi.size()); + return retval; +} + QSize PictureViewer2::sizeHint() const{ return mMinimunSize; } diff --git a/pictureviewer2.h b/pictureviewer2.h index 4b5915d..95f4824 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -35,7 +35,10 @@ class PictureViewer2 : public QGraphicsView { enum AssocActions { SlideAction, HideAction }; explicit PictureViewer2(QWidget *parent = 0); void addFiles(const PicDataList &files, bool clear = true); + void addFiles(const QString &dir, bool clear = true); void setFile(const PicData &file); + void setFile(const QString &fullPath); + PicData picData(const QString &fullPath); virtual QSize sizeHint() const; public slots: @@ -56,6 +56,7 @@ #include "mappingtreewidget.h" #include "newpicsdialog.h" #include "pictureswidget.h" +#include "pictureviewer2.h" SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags), mOpenWithGroupFS(0), mOpenWithGroupAV(0) { //application icon @@ -176,6 +177,17 @@ void SheMov::tabChanged(int newTab){ mShowTreeGroup->setEnabled(newTab == 1); mPicActionGroup->setEnabled(newTab == 2); mFilterFavoritesA->setEnabled(newTab == 1); + mPVSelectAllA->disconnect(); + switch(newTab){ + case 0: + connect(mPVSelectAllA, SIGNAL(triggered()), mFSWidget, SLOT(selectAllPV())); + break; + case 2: + connect(mPVSelectAllA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(setPVAll())); + break; + default: + ;; + } } void SheMov::setFsFree(){ @@ -590,13 +602,16 @@ void SheMov::createActions(){ mPicWidget->picView()->addAction(pvSep1); // viewer actions + PictureViewer2 *picViewer = SmGlobals::instance()->pictureViewer(); mPVToggleA = new QAction(QIcon(":/dick_in_cage.png"), tr("Show/Hide Picture Viewer"), this); mPVToggleA->setCheckable(true); mPVToggleA->setData(PictureViewer2::HideAction); - connect(mPVToggleA, SIGNAL(toggled(bool)), mPicWidget, SLOT(showPicViewer(bool))); + connect(mPVToggleA, SIGNAL(toggled(bool)), picViewer, SLOT(setVisible(bool))); mPVToggleA->setChecked(false); mPicWidget->picView()->addAction(mPVToggleA); - mPicWidget->picView()->PV()->addAction(mPVToggleA); + picViewer->addAction(mPVToggleA); + + //add or replace pictures: pictureviewer QSignalMapper *PVAddMapper = new QSignalMapper(this); mPVAddA = new QAction(QIcon(":/used_tampon.png"), tr("Add selected"), this); connect(mPVAddA, SIGNAL(triggered()), PVAddMapper, SLOT(map())); @@ -607,40 +622,40 @@ void SheMov::createActions(){ PVAddMapper->setMapping(mPVReplaceA, true); mPicWidget->picView()->addAction(mPVReplaceA); connect(PVAddMapper, SIGNAL(mapped(int)), mPicWidget->picView(), SLOT(setPVData(int))); + + //select all from current, see tabChanged(int) mPVSelectAllA = new QAction(QIcon(":/blue_syringe.png"), tr("Select all pics"), this); - connect(mPVSelectAllA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(setPVAll())); - mPicWidget->picView()->addAction(mPVSelectAllA); - connect(mPVSelectAllA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(setPVAll())); - mPicWidget->picView()->addAction(mPVSelectAllA); - mPicWidget->picView()->PV()->addAction(mPVSelectAllA); + picViewer->addAction(mPVSelectAllA); + + //slide QAction *pvSep2 = new QAction(this); pvSep2->setSeparator(true); mPicWidget->picView()->addAction(pvSep2); mPVSlideA = new QAction(QIcon(":/chastity_belt_with_cuffs.png"), tr("Slide"), this); mPVSlideA->setCheckable(true); mPVSlideA->setData(PictureViewer2::SlideAction); - connect(mPVSlideA, SIGNAL(toggled(bool)), mPicWidget->picView()->PV(), SLOT(slide(bool))); + connect(mPVSlideA, SIGNAL(toggled(bool)), picViewer, SLOT(slide(bool))); connect(mPVSlideA, SIGNAL(toggled(bool)), this, SLOT(setSlide(bool))); - mPicWidget->picView()->addAction(mPVSlideA); QAction *pv2Sep1 = new QAction(this); pv2Sep1->setSeparator(true); - mPicWidget->picView()->PV()->addAction(pv2Sep1); - mPicWidget->picView()->PV()->addAction(mPVSlideA); + picViewer->addAction(pv2Sep1); + picViewer->addAction(mPVSlideA); + + //shuffle QAction *pvSep3 = new QAction(this); pvSep3->setSeparator(true); mPicWidget->picView()->addAction(pvSep3); mPVShuffleA = new QAction(QIcon(":/bizarre_amputee.png"), tr("Shuffle"), this); - connect(mPVShuffleA, SIGNAL(triggered()), mPicWidget->picView()->PV(), SLOT(shuffle())); - mPicWidget->picView()->PV()->addAction(mPVShuffleA); + connect(mPVShuffleA, SIGNAL(triggered()), picViewer, SLOT(shuffle())); + picViewer->addAction(mPVShuffleA); // refresh mPWRefreshA = new QAction(QIcon(":/huge_bra.png"), tr("Refresh"), this); mPicWidget->picView()->addAction(mPWRefreshA); connect(mPWRefreshA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(refresh())); - - mPicWidget->setPicViewerAction(mPVToggleA); - mPicWidget->picView()->PV()->initActions(); + picViewer->initActions(); + //don't add actions with checkable(true) unless you know what you're doing! mPicActionGroup = new QActionGroup(this); mPicActionGroup->addAction(mPWDeletePicFromA); diff --git a/smglobals.cpp b/smglobals.cpp index ee43055..58ecf84 100644 --- a/smglobals.cpp +++ b/smglobals.cpp @@ -27,7 +27,7 @@ #include "mappingtablemodel.h" #include "seriesmetadatamodel.h" #include "mappingtreemodel.h" -#include "pictureviewer.h" +#include "pictureviewer2.h" SmGlobals *SmGlobals::mInstance = 0; @@ -97,9 +97,9 @@ QAbstractItemModel *SmGlobals::model(const QString &which){ return mModels.contains(which) ? mModels.value(which) : 0; } -PictureViewer *SmGlobals::pictureViewer() { +PictureViewer2 *SmGlobals::pictureViewer() { if(!mPictureViewer){ - mPictureViewer = new PictureViewer; + mPictureViewer = new PictureViewer2; } return mPictureViewer; } diff --git a/smglobals.h b/smglobals.h index 1193522..99ecd07 100644 --- a/smglobals.h +++ b/smglobals.h @@ -13,7 +13,7 @@ #include <QPair> class QAbstractItemModel; -class PictureViewer; +class PictureViewer2; class QPixmap; class SmGlobals : public QObject { @@ -46,7 +46,7 @@ class SmGlobals : public QObject { ~SmGlobals(); static SmGlobals *instance(); QAbstractItemModel *model(const QString &which); - PictureViewer *pictureViewer(); + PictureViewer2 *pictureViewer(); FrameCache *frameCache(); QSize cursorSize(); const QHash<QString, QString> & icons() const { return mIcons; } @@ -58,7 +58,7 @@ class SmGlobals : public QObject { SmGlobals &operator=(const SmGlobals &other); static SmGlobals *mInstance; QHash<QString, QAbstractItemModel*> mModels; - PictureViewer *mPictureViewer; + PictureViewer2 *mPictureViewer; SmGlobals::FrameCache *mFrameCache; QSize mCursorSize; QHash<QString, QString> mIcons; |