diff options
author | Arno <am@disconnect.de> | 2012-03-08 10:19:16 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-03-08 10:19:16 +0100 |
commit | 8aae1eea458695a19a7ff36bdffbe59c9e7d4cf2 (patch) | |
tree | 0454478e9d345e7a5f07ea238c098293a9920524 | |
parent | ea30d012b7777a2aea1c5e957a7d7566eebef391 (diff) | |
download | SheMov-8aae1eea458695a19a7ff36bdffbe59c9e7d4cf2.tar.gz SheMov-8aae1eea458695a19a7ff36bdffbe59c9e7d4cf2.tar.bz2 SheMov-8aae1eea458695a19a7ff36bdffbe59c9e7d4cf2.zip |
Make PictureViewer useful
-Implement add and replace files
-use QList<QVariant> (typedef'd) for shoveling data around
-more code shuffling
-new artwork
-rw-r--r-- | clean_tampon.png | bin | 0 -> 698 bytes | |||
-rw-r--r-- | pictureswidget.cpp | 29 | ||||
-rw-r--r-- | pictureswidget.h | 5 | ||||
-rw-r--r-- | pictureviewer2.cpp | 20 | ||||
-rw-r--r-- | pictureviewer2.h | 14 | ||||
-rw-r--r-- | shemov.cpp | 72 | ||||
-rw-r--r-- | shemov.h | 12 | ||||
-rw-r--r-- | shemov.qrc | 2 | ||||
-rw-r--r-- | smglobals.cpp | 2 | ||||
-rw-r--r-- | used_tampon.png | bin | 0 -> 757 bytes |
10 files changed, 115 insertions, 41 deletions
diff --git a/clean_tampon.png b/clean_tampon.png Binary files differnew file mode 100644 index 0000000..db10e8b --- /dev/null +++ b/clean_tampon.png diff --git a/pictureswidget.cpp b/pictureswidget.cpp index 2d56571..ac44229 100644 --- a/pictureswidget.cpp +++ b/pictureswidget.cpp @@ -46,6 +46,7 @@ PicturesWidget::PicturesWidget(QWidget *parent) : QWidget(parent), mWindowTitleB //misc mEditDialog = new MappingEditDialog(this); mPicViewer = new PictureViewer2(this); + mPictureView->setPV(mPicViewer); //put it all togehter QHBoxLayout *mainLayout = new QHBoxLayout; @@ -91,10 +92,12 @@ void PicturesWidget::constructWindowTitle(){ } void PicturesWidget::showInPicViewer(const QModelIndex &idx){ - if(!idx.isValid()){ + QModelIndex real = mPictureView->proxy()->mapToSource(idx); + if(!real.isValid()){ return; } - mPicViewer->setFile(idx.data(PicFilesModel::FullPathRole).toString()); + PicData pData = mPictureView->filesModel()->dataList(real); + mPicViewer->setFile(pData); if(mPicViewerA){ mPicViewerA->setChecked(true); } @@ -157,6 +160,16 @@ void PictureView::refresh(){ mModel->populate(); } +void PictureView::setPVData(int replace){ + QModelIndexList sel = selectionModel()->selectedRows(); + PicDataList pics; + foreach(QModelIndex i, sel){ + QModelIndex real = mProxy->mapToSource(i); + pics << mModel->dataList(real); + } + mPV->addFiles(pics, replace); +} + void PictureView::hideEvent(QHideEvent *){ QByteArray pvHeader = header()->saveState(); QSettings s; @@ -300,6 +313,18 @@ QVariant PicFilesModel::data(const QModelIndex &index, int role) const { return SmTreeModel::data(index, role); } +QList<QVariant> PicFilesModel::dataList(const QModelIndex &idx) const{ + QList<QVariant> retval; + if(!idx.isValid()){ + return retval; + } + SmTreeItem *item = itemAt(idx); + for(int i = 0; i < NumFields; ++i){ + retval << item->data(i); + } + return retval; +} + void PicFilesModel::removeFiles(const QList<QPersistentModelIndex> &files){ foreach(QPersistentModelIndex pi, files){ mDeleteFileQ->bindValue(":id", pi.data(IdRole)); diff --git a/pictureswidget.h b/pictureswidget.h index fd0b5ac..f473140 100644 --- a/pictureswidget.h +++ b/pictureswidget.h @@ -62,11 +62,14 @@ class PictureView : public QTreeView { explicit PictureView(QWidget *parent = 0); QList<int> fileMappings() { return mFilesMappings; } PicFilesModel *filesModel() { return mModel; } + QSortFilterProxyModel *proxy() { return mProxy; } + void setPV(PictureViewer2 *pv) { mPV = pv; } public slots: void mappingChanged(int mapping); void deletePics(); void refresh(); + void setPVData(int replace = false); protected: virtual void hideEvent(QHideEvent *); @@ -87,6 +90,7 @@ class PictureView : public QTreeView { PicFilesModel *mModel; int mCursorOffset; QList<int> mFilesMappings; + PictureViewer2 *mPV; }; class PicFilesModel : public SmTreeModel { @@ -102,6 +106,7 @@ class PicFilesModel : public SmTreeModel { //some data Qt::ItemFlags flags(const QModelIndex &) const { return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } QVariant data(const QModelIndex &index, int role) const; + QList<QVariant> dataList(const QModelIndex &idx) const; void removeFiles(const QList<QPersistentModelIndex> &files); bool changeMappings(const QList<int> &fileIds, const QList<int> &mappingIds); diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index c126c2c..3bcc404 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -13,13 +13,19 @@ #include <QWheelEvent> #include "pictureviewer2.h" +#include "pictureswidget.h" PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mDefaultFile(":/picgone.png") { //behave like QDialog, but don't be one... setWindowFlags(QFlags<Qt::WindowType>(0x1|0x2|0x1000|0x2000|0x10000|0x8000000)); //initial file list - mFiles = QStringList() << mDefaultFile; + PicData initialData; + for(int i = 0; i < PicFilesModel::NumFields; ++i){ + initialData << QVariant(); + } + initialData[PicFilesModel::FullPath] = mDefaultFile; + mFiles << initialData; //setup gui mScene = new QGraphicsScene(this); @@ -33,22 +39,22 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) showFile(mFiles.at(mCurPos)); } -void PictureViewer2::addFiles(const QStringList &files, bool clear){ +void PictureViewer2::addFiles(const PicDataList &files, bool clear){ if(clear){ mFiles.clear(); mFiles = files; mCurPos = 0; return; } - foreach(const QString &f, files){ + foreach(const PicData &f, files){ if(!mFiles.contains(f)){ mFiles.append(f); } } } -void PictureViewer2::setFile(const QString &file){ - addFiles(QStringList() << file, true); +void PictureViewer2::setFile(const PicData &file){ + addFiles(PicDataList() << file, true); showFile(mFiles.at(mCurPos)); } @@ -81,8 +87,8 @@ void PictureViewer2::wheelEvent(QWheelEvent *event){ } } -void PictureViewer2::showFile(const QString file){ - QPixmap pixmap(file); +void PictureViewer2::showFile(const PicData &file){ + QPixmap pixmap(file.at(PicFilesModel::FullPath).toString()); if(pixmap.isNull()){ return; } diff --git a/pictureviewer2.h b/pictureviewer2.h index 6c9035a..21e6454 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -9,18 +9,22 @@ #define PICTUREVIEWER2_H #include <QGraphicsView> -#include <QString> +#include <QList> +#include <QVariant> class QGraphicsScene; class QGraphicsPixmapItem; class QWheelEvent; +typedef QList<QVariant> PicData; +typedef QList<QList<QVariant> > PicDataList; + class PictureViewer2 : public QGraphicsView { Q_OBJECT public: explicit PictureViewer2(QWidget *parent = 0); - void addFiles(const QStringList &files, bool clear = true); - void setFile(const QString &file); + void addFiles(const PicDataList &files, bool clear = true); + void setFile(const PicData &file); virtual QSize sizeHint() const; public slots: @@ -31,13 +35,13 @@ class PictureViewer2 : public QGraphicsView { void wheelEvent(QWheelEvent *event); private slots: - void showFile(const QString file); + void showFile(const PicData &file); private: void setupDialog(); void setCurPalette(const QPixmap &pic); void position(); - QStringList mFiles; + PicDataList mFiles; QGraphicsScene *mScene; QSize mMinimunSize; QGraphicsPixmapItem *mCur; @@ -602,26 +602,50 @@ void SheMov::createActions(){ connect(mSuggestFileA, SIGNAL(triggered()), mATree->filesWidget(), SLOT(suggest())); mShowTreeGroup->addAction(mSuggestFileA); - //picture widget actions - mDeletePicFromA = new QAction(QIcon(":/huge_balls_pierced.png"), tr("Delete..."), this); - mPicWidget->picView()->addAction(mDeletePicFromA); - connect(mDeletePicFromA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(deletePics())); - mEditPicsMappingsA = new QAction(QIcon(":/squirting_nipple.png"), tr("Edit mappings..."), this); - mPicWidget->picView()->addAction(mEditPicsMappingsA); - connect(mEditPicsMappingsA, SIGNAL(triggered()), mPicWidget->picView(), SIGNAL(editPicsMappings())); - mRefreshPicsA = new QAction(QIcon(":/huge_bra.png"), tr("Refresh"), this); - mPicWidget->picView()->addAction(mRefreshPicsA); - connect(mRefreshPicsA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(refresh())); - mTogglePicV2A = new QAction(QIcon(":/dick_in_cage.png"), tr("Show/Hide Picture Viewer"), this); - mTogglePicV2A->setCheckable(true); - connect(mTogglePicV2A, SIGNAL(toggled(bool)), mPicWidget, SLOT(showPicViewer(bool))); - mTogglePicV2A->setChecked(false); - mPicWidget->setPicViewerAction(mTogglePicV2A); + //picture widget + // delete + edit + mPWDeletePicFromA = new QAction(QIcon(":/huge_balls_pierced.png"), tr("Delete..."), this); + mPicWidget->picView()->addAction(mPWDeletePicFromA); + connect(mPWDeletePicFromA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(deletePics())); + mPWEditPicMappingsA = new QAction(QIcon(":/squirting_nipple.png"), tr("Edit mappings..."), this); + mPicWidget->picView()->addAction(mPWEditPicMappingsA); + connect(mPWEditPicMappingsA, SIGNAL(triggered()), mPicWidget->picView(), SIGNAL(editPicsMappings())); + QAction *pvSep1 = new QAction(this); + pvSep1->setSeparator(true); + mPicWidget->picView()->addAction(pvSep1); + + // viewer actions + mPVToggleA = new QAction(QIcon(":/dick_in_cage.png"), tr("Show/Hide Picture Viewer"), this); + mPVToggleA->setCheckable(true); + connect(mPVToggleA, SIGNAL(toggled(bool)), mPicWidget, SLOT(showPicViewer(bool))); + mPVToggleA->setChecked(false); + mPicWidget->picView()->addAction(mPVToggleA); + QSignalMapper *PVAddMapper = new QSignalMapper(this); + mPVAddA = new QAction(QIcon(":/used_tampon.png"), tr("Add selected"), this); + connect(mPVAddA, SIGNAL(triggered()), PVAddMapper, SLOT(map())); + PVAddMapper->setMapping(mPVAddA, false); + mPicWidget->picView()->addAction(mPVAddA); + mPVReplaceA = new QAction(QIcon(":/clean_tampon.png"), tr("Replace with selected"), this); + connect(mPVReplaceA, SIGNAL(triggered()), PVAddMapper, SLOT(map())); + PVAddMapper->setMapping(mPVReplaceA, true); + mPicWidget->picView()->addAction(mPVReplaceA); + connect(PVAddMapper, SIGNAL(mapped(int)), mPicWidget->picView(), SLOT(setPVData(int))); + QAction *pvSep2 = new QAction(this); + pvSep2->setSeparator(true); + mPicWidget->picView()->addAction(pvSep2); + + // 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); //don't add actions with checkable(true) unless you know what you're doing! mPicActionGroup = new QActionGroup(this); - mPicActionGroup->addAction(mDeletePicFromA); - mPicActionGroup->addAction(mEditPicsMappingsA); - mPicActionGroup->addAction(mRefreshPicsA); + mPicActionGroup->addAction(mPWDeletePicFromA); + mPicActionGroup->addAction(mPWEditPicMappingsA); + mPicActionGroup->addAction(mPWRefreshA); // misc mOpenWithMapperFS = new QSignalMapper(this); @@ -695,8 +719,8 @@ void SheMov::createMenus(){ //Pictures edit menu mEditPicMenu = new QMenu(tr("&Edit"), this); - mEditPicMenu->addAction(mDeletePicFromA); - mEditPicMenu->addAction(mEditPicsMappingsA); + mEditPicMenu->addAction(mPWDeletePicFromA); + mEditPicMenu->addAction(mPWEditPicMappingsA); mEditPicMenuA = menuBar()->addMenu(mEditPicMenu); //TreeView view menu @@ -739,9 +763,11 @@ void SheMov::createMenus(){ //Pictures view menu mPicViewMenu = new QMenu(tr("&View"), this); - mPicViewMenu->addAction(mTogglePicV2A); + mPicViewMenu->addAction(mPVToggleA); + mPicViewMenu->addAction(mPVAddA); + mPicViewMenu->addAction(mPVReplaceA); mPicViewMenu->addSeparator(); - mPicViewMenu->addAction(mRefreshPicsA); + mPicViewMenu->addAction(mPWRefreshA); mViewPicMenuA = menuBar()->addMenu(mPicViewMenu); QMenu *helpMenu = new QMenu(tr("&Help"), this); @@ -921,7 +947,7 @@ void SheMov::createToolBar(){ toolBar->addAction(mFilterFavoritesA); toolBar->addSeparator(); toolBar->addActions(mPicActionGroup->actions()); - toolBar->addAction(mTogglePicV2A); + toolBar->addAction(mPVToggleA); toolBar->addSeparator(); toolBar->addAction(mHoverPicsA); toolBar->addAction(mHoverArchiveA); @@ -167,10 +167,14 @@ class SheMov : public QMainWindow { QActionGroup *mEditGroup; //PictureWidget Actions - QAction *mDeletePicFromA; - QAction *mEditPicsMappingsA; - QAction *mRefreshPicsA; - QAction *mTogglePicV2A; + //PW = mPicWidget + //PV = pictureViewer + QAction *mPWDeletePicFromA; + QAction *mPWEditPicMappingsA; + QAction *mPWRefreshA; + QAction *mPVToggleA; + QAction *mPVAddA; + QAction *mPVReplaceA; QActionGroup *mPicActionGroup; //EndActions @@ -35,5 +35,7 @@ <file>squirting_nipple.png</file> <file>picgone.png</file> <file>dick_in_cage.png</file> + <file>clean_tampon.png</file> + <file>used_tampon.png</file> </qresource> </RCC> diff --git a/smglobals.cpp b/smglobals.cpp index 4a73d0b..54f352d 100644 --- a/smglobals.cpp +++ b/smglobals.cpp @@ -150,6 +150,8 @@ SmGlobals::SmGlobals() : mPictureViewer(0), mFrameCache(0){ mIcons.insert("Huge bra", ":/huge_bra.png"); mIcons.insert("Squirting nipple", ":/squirting_nipple.png"); mIcons.insert("Dick in a cage", ":/dick_in_cage.png"); + mIcons.insert("Used tampon", ":/used_tampon.png"); + mIcons.insert("Clean tampon", ":/clean_tampon.png"); mDvdSize = Q_INT64_C(4707319808) - 20 * 1024 *1024; } diff --git a/used_tampon.png b/used_tampon.png Binary files differnew file mode 100644 index 0000000..73c318f --- /dev/null +++ b/used_tampon.png |