summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-04-28 15:29:35 +0200
committerArno <am@disconnect.de>2012-04-28 15:29:35 +0200
commit3f2df0541a862d8e6a799b9502e6b3f7a0c5f884 (patch)
tree4451efc120da60b894a40c98391236fc5ae2096a
parent5bf304d22564666621c35919b2d9aea1aa5b4b5a (diff)
downloadSheMov-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.cpp4
-rw-r--r--filestreewidget.h4
-rw-r--r--filesystemwidget.cpp18
-rw-r--r--filesystemwidget.h7
-rw-r--r--newmoviewizard.cpp6
-rw-r--r--newmoviewizard.h4
-rw-r--r--pictureswidget.cpp2
-rw-r--r--pictureviewer2.cpp44
-rw-r--r--pictureviewer2.h3
-rw-r--r--shemov.cpp47
-rw-r--r--smglobals.cpp6
-rw-r--r--smglobals.h6
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:
diff --git a/shemov.cpp b/shemov.cpp
index 894489f..a85c038 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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;