summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--blue_syringe.pngbin0 -> 789 bytes
-rw-r--r--catheter_with_bag.pngbin0 -> 711 bytes
-rw-r--r--chastity_belt_with_cuffs.pngbin0 -> 960 bytes
-rw-r--r--pictureswidget.cpp24
-rw-r--r--pictureswidget.h4
-rw-r--r--pictureviewer2.cpp33
-rw-r--r--pictureviewer2.h7
-rw-r--r--shemov.cpp15
-rw-r--r--shemov.h2
-rw-r--r--shemov.qrc3
10 files changed, 83 insertions, 5 deletions
diff --git a/blue_syringe.png b/blue_syringe.png
new file mode 100644
index 0000000..ac3110a
--- /dev/null
+++ b/blue_syringe.png
Binary files differ
diff --git a/catheter_with_bag.png b/catheter_with_bag.png
new file mode 100644
index 0000000..9179408
--- /dev/null
+++ b/catheter_with_bag.png
Binary files differ
diff --git a/chastity_belt_with_cuffs.png b/chastity_belt_with_cuffs.png
new file mode 100644
index 0000000..c59e953
--- /dev/null
+++ b/chastity_belt_with_cuffs.png
Binary files differ
diff --git a/pictureswidget.cpp b/pictureswidget.cpp
index ac44229..8492dd2 100644
--- a/pictureswidget.cpp
+++ b/pictureswidget.cpp
@@ -170,6 +170,11 @@ void PictureView::setPVData(int replace){
mPV->addFiles(pics, replace);
}
+void PictureView::setPVAll(){
+ PicDataList data = mModel->allFiles();
+ mPV->addFiles(data, true);
+}
+
void PictureView::hideEvent(QHideEvent *){
QByteArray pvHeader = header()->saveState();
QSettings s;
@@ -253,6 +258,8 @@ PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTr
mDeleteMappingsQ->prepare("DELETE FROM pics_mappings WHERE ipics_id = :id");
mAddMappingsQ = new QSqlQuery(mDb);
mAddMappingsQ->prepare("INSERT INTO pics_mappings(ipics_id, imapping_id) VALUES(:pid, :id)");
+ mAllFilesQ = new QSqlQuery(mDb);
+ mAllFilesQ->prepare("SELECT pics.tfilename, pics.isize, pics.tformat, pics.dtadded, pics.cmd5sum, pics.ipicsid FROM pics");
}
QList<int> PicFilesModel::mappingIds(const QList<QVariant> &fileIds){
@@ -325,6 +332,23 @@ QList<QVariant> PicFilesModel::dataList(const QModelIndex &idx) const{
return retval;
}
+QList<QList<QVariant> > PicFilesModel::allFiles() const {
+ QList<QList<QVariant> > retval;
+ if(!mAllFilesQ->exec()){
+ return retval;
+ }
+ while(mAllFilesQ->next()){
+ QList<QVariant> data;
+ data << mAllFilesQ->value(0) << mAllFilesQ->value(1) << mAllFilesQ->value(2); // Filename, size and Mime type
+ data << Helper::createArchivePath(mAllFilesQ->value(0).toString(), mAllFilesQ->value(4).toString()); // full path;
+ data << mAllFilesQ->value(5) << mAllFilesQ->value(3) << mAllFilesQ->value(4); //Id, added and md5
+ QLocale l;
+ data << l.toString(mAllFilesQ->value(1).toInt());
+ retval << data;
+ }
+ 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 f473140..3f2c41f 100644
--- a/pictureswidget.h
+++ b/pictureswidget.h
@@ -64,12 +64,14 @@ class PictureView : public QTreeView {
PicFilesModel *filesModel() { return mModel; }
QSortFilterProxyModel *proxy() { return mProxy; }
void setPV(PictureViewer2 *pv) { mPV = pv; }
+ PictureViewer2 *PV() { return mPV; }
public slots:
void mappingChanged(int mapping);
void deletePics();
void refresh();
void setPVData(int replace = false);
+ void setPVAll();
protected:
virtual void hideEvent(QHideEvent *);
@@ -107,6 +109,7 @@ class PicFilesModel : public SmTreeModel {
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;
+ QList<QList<QVariant> > allFiles() const;
void removeFiles(const QList<QPersistentModelIndex> &files);
bool changeMappings(const QList<int> &fileIds, const QList<int> &mappingIds);
@@ -120,6 +123,7 @@ class PicFilesModel : public SmTreeModel {
QSqlQuery *mCurMappingIdsQ;
QSqlQuery *mDeleteMappingsQ;
QSqlQuery *mAddMappingsQ;
+ QSqlQuery *mAllFilesQ;
QString mCurMappingIdsQS;
int mMappingId;
QList<int> mCurMappingsIds;
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index 3bcc404..1b797d3 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -11,6 +11,9 @@
#include <QGraphicsPixmapItem>
#include <QImage>
#include <QWheelEvent>
+#include <QContextMenuEvent>
+#include <QMenu>
+#include <QTimer>
#include "pictureviewer2.h"
#include "pictureswidget.h"
@@ -27,6 +30,10 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0)
initialData[PicFilesModel::FullPath] = mDefaultFile;
mFiles << initialData;
+ //picture show
+ mSlideTimer = new QTimer(this);
+ connect(mSlideTimer, SIGNAL(timeout()), this, SLOT(next()));
+
//setup gui
mScene = new QGraphicsScene(this);
setScene(mScene);
@@ -64,20 +71,30 @@ QSize PictureViewer2::sizeHint() const{
void PictureViewer2::next(){
if(mCurPos + 1 >= mFiles.size()){
- return;
+ mCurPos = 0;
+ }else{
+ ++mCurPos;
}
- ++mCurPos;
showFile(mFiles.at(mCurPos));
}
void PictureViewer2::previous(){
if(mCurPos - 1 < 0){
- return;
+ mCurPos = mFiles.size() - 1;
+ }else{
+ --mCurPos;
}
- --mCurPos;
showFile(mFiles.at(mCurPos));
}
+void PictureViewer2::slide(){
+ if(mSlideTimer->isActive()){
+ mSlideTimer->stop();
+ }else{
+ mSlideTimer->start(5000);
+ }
+}
+
void PictureViewer2::wheelEvent(QWheelEvent *event){
int steps = event->delta() / 8 / 15;
if(steps < 0){
@@ -87,6 +104,14 @@ void PictureViewer2::wheelEvent(QWheelEvent *event){
}
}
+void PictureViewer2::contextMenuEvent(QContextMenuEvent *e){
+ QMenu ctxMenu;
+ foreach(QAction *a, actions()){
+ ctxMenu.addAction(a);
+ }
+ ctxMenu.exec(e->globalPos());
+}
+
void PictureViewer2::showFile(const PicData &file){
QPixmap pixmap(file.at(PicFilesModel::FullPath).toString());
if(pixmap.isNull()){
diff --git a/pictureviewer2.h b/pictureviewer2.h
index 21e6454..9610da1 100644
--- a/pictureviewer2.h
+++ b/pictureviewer2.h
@@ -15,6 +15,8 @@
class QGraphicsScene;
class QGraphicsPixmapItem;
class QWheelEvent;
+class QContextMenuEvent;
+class QTimer;
typedef QList<QVariant> PicData;
typedef QList<QList<QVariant> > PicDataList;
@@ -30,9 +32,11 @@ class PictureViewer2 : public QGraphicsView {
public slots:
void next();
void previous();
+ void slide();
protected:
- void wheelEvent(QWheelEvent *event);
+ virtual void wheelEvent(QWheelEvent *event);
+ virtual void contextMenuEvent(QContextMenuEvent *e);
private slots:
void showFile(const PicData &file);
@@ -46,6 +50,7 @@ class PictureViewer2 : public QGraphicsView {
QSize mMinimunSize;
QGraphicsPixmapItem *mCur;
int mCurPos;
+ QTimer *mSlideTimer;
const QString mDefaultFile;
};
diff --git a/shemov.cpp b/shemov.cpp
index fb8f75f..9f261c2 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -620,6 +620,7 @@ void SheMov::createActions(){
connect(mPVToggleA, SIGNAL(toggled(bool)), mPicWidget, SLOT(showPicViewer(bool)));
mPVToggleA->setChecked(false);
mPicWidget->picView()->addAction(mPVToggleA);
+ mPicWidget->picView()->PV()->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()));
@@ -630,9 +631,23 @@ void SheMov::createActions(){
PVAddMapper->setMapping(mPVReplaceA, true);
mPicWidget->picView()->addAction(mPVReplaceA);
connect(PVAddMapper, SIGNAL(mapped(int)), mPicWidget->picView(), SLOT(setPVData(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);
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);
+ connect(mPVSlideA, SIGNAL(triggered()), mPicWidget->picView()->PV(), SLOT(slide()));
+ mPicWidget->picView()->addAction(mPVSlideA);
+ mPicWidget->picView()->PV()->addAction(mPVSlideA);
+ QAction *pvSep3 = new QAction(this);
+ pvSep3->setSeparator(true);
+ mPicWidget->picView()->addAction(pvSep3);
// refresh
mPWRefreshA = new QAction(QIcon(":/huge_bra.png"), tr("Refresh"), this);
diff --git a/shemov.h b/shemov.h
index a80b341..df74000 100644
--- a/shemov.h
+++ b/shemov.h
@@ -175,6 +175,8 @@ class SheMov : public QMainWindow {
QAction *mPVToggleA;
QAction *mPVAddA;
QAction *mPVReplaceA;
+ QAction *mPVSelectAllA;
+ QAction *mPVSlideA;
QActionGroup *mPicActionGroup;
//EndActions
diff --git a/shemov.qrc b/shemov.qrc
index 8939624..372b871 100644
--- a/shemov.qrc
+++ b/shemov.qrc
@@ -37,5 +37,8 @@
<file>dick_in_cage.png</file>
<file>clean_tampon.png</file>
<file>used_tampon.png</file>
+ <file>chastity_belt_with_cuffs.png</file>
+ <file>catheter_with_bag.png</file>
+ <file>blue_syringe.png</file>
</qresource>
</RCC>