diff options
author | Arno <am@disconnect.de> | 2012-03-24 17:21:49 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-03-24 17:21:49 +0100 |
commit | 3405dbb9a1b6601bf7c343d676a4abe4e5981a29 (patch) | |
tree | ac872d096e626d13e7270383ac7bf8b076bc72da | |
parent | c425bb0c2b8f8d1fc2884ced9979eb39ee522846 (diff) | |
download | SheMov-3405dbb9a1b6601bf7c343d676a4abe4e5981a29.tar.gz SheMov-3405dbb9a1b6601bf7c343d676a4abe4e5981a29.tar.bz2 SheMov-3405dbb9a1b6601bf7c343d676a4abe4e5981a29.zip |
Make Mapping widget configurable
Make mappingwidget behave according to settings. SideBySide doesn't work
yet, maybe it should be canned.
-rw-r--r-- | configurationdialog.cpp | 41 | ||||
-rw-r--r-- | configurationdialog.h | 4 | ||||
-rw-r--r-- | pictureviewer2.cpp | 50 | ||||
-rw-r--r-- | pictureviewer2.h | 7 |
4 files changed, 70 insertions, 32 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp index d05bc91..95e0f89 100644 --- a/configurationdialog.cpp +++ b/configurationdialog.cpp @@ -172,22 +172,37 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S movieWidget->setLayout(movieWidgetLayout); mTab->addTab(movieWidget, tr("Movies")); - //picture viewer + //picture viewer - info item QGroupBox *picInfoBox = new QGroupBox(tr("Picture info item")); - mPositionBox = new QComboBox; + mInfoPositionBox = new QComboBox; createPositionMap(); - fillPositions(mPositionBox); - mPositionBox->removeItem(mPositionBox->findData(SideBySide)); + fillPositions(mInfoPositionBox); + mInfoPositionBox->removeItem(mInfoPositionBox->findData(SideBySide)); QFormLayout *pvInfoL = new QFormLayout; - pvInfoL->addRow(tr("Picture info position"), mPositionBox); + pvInfoL->addRow(tr("Picture info position"), mInfoPositionBox); mShowInfoItem = new QCheckBox(tr("Show info item")); - connect(mShowInfoItem, SIGNAL(toggled(bool)), mPositionBox, SLOT(setEnabled(bool))); - pvInfoL->addRow(tr("Show info item"), mShowInfoItem); + connect(mShowInfoItem, SIGNAL(toggled(bool)), mInfoPositionBox, SLOT(setEnabled(bool))); + pvInfoL->addRow(QString(), mShowInfoItem); picInfoBox->setLayout(pvInfoL); + + //picture viewer - mapping item + QGroupBox *picMapBox = new QGroupBox(tr("Picture mappings")); + mMapPositionBox = new QComboBox; + fillPositions(mMapPositionBox); + QFormLayout *pvMapL = new QFormLayout; + pvMapL->addRow(tr("Picture mapping position"), mMapPositionBox); + mShowMapItem = new QCheckBox(tr("Show mapping item")); + connect(mShowMapItem, SIGNAL(toggled(bool)), mMapPositionBox, SLOT(setEnabled(bool))); + pvMapL->addRow(QString(), mShowMapItem); + picMapBox->setLayout(pvMapL); + + //picture viewer - layout QWidget *picWidget = new QWidget; QVBoxLayout *picLayout = new QVBoxLayout; picLayout->addWidget(picInfoBox); + picLayout->addWidget(picMapBox); picWidget->setLayout(picLayout); + picLayout->addStretch(); mTab->addTab(picWidget, tr("Pictures")); //database tab @@ -384,8 +399,11 @@ void ConfigurationDialog::readSettings(){ //read pictures mShowInfoItem->setChecked(s.value("ui/showinfoitem", true).toBool()); - mPositionBox->setCurrentIndex(mPositionBox->findData(s.value("ui/infoposition", TopLeft).toInt())); - mPositionBox->setEnabled(mShowInfoItem->checkState()); + mInfoPositionBox->setCurrentIndex(mInfoPositionBox->findData(s.value("ui/infoposition", TopLeft).toInt())); + mInfoPositionBox->setEnabled(mShowInfoItem->checkState()); + mShowMapItem->setChecked(s.value("ui/showmapitem", true).toBool()); + mMapPositionBox->setCurrentIndex(mMapPositionBox->findData(s.value("ui/mappingposition", TopRight).toInt())); + mMapPositionBox->setEnabled(mShowMapItem->checkState()); //read database mDatabaseHost->setText(s.value("database/hostname").toString()); @@ -459,8 +477,11 @@ void ConfigurationDialog::writeSettings(){ //write pictures s.setValue("ui/showinfoitem", (mShowInfoItem->checkState() == Qt::Checked)); - QString curPos = mPositionBox->currentText(); + QString curPos = mInfoPositionBox->currentText(); s.setValue("ui/infoposition", mPositionMap.value(curPos)); + s.setValue("ui/showmapitem", (mShowMapItem->checkState() == Qt::Checked)); + curPos = mMapPositionBox->currentText(); + s.setValue("ui/mappingposition", mPositionMap.value(curPos)); //write database s.setValue("database/hostname", mDatabaseHost->text()); diff --git a/configurationdialog.h b/configurationdialog.h index 3d83bcd..751cfb5 100644 --- a/configurationdialog.h +++ b/configurationdialog.h @@ -66,7 +66,8 @@ class ConfigurationDialog : public SmDialog { QLineEdit *mStripPath; QLineEdit *mGrabFrameFrom; QComboBox *mIconForFolder; - QComboBox *mPositionBox; + QComboBox *mInfoPositionBox; + QComboBox *mMapPositionBox; QCheckBox *mHoverPics; QCheckBox *mHoverArchive; QCheckBox *mHoverMovies; @@ -95,6 +96,7 @@ class ConfigurationDialog : public SmDialog { QCheckBox *mAlternateColors; QCheckBox *mPVGradient; QCheckBox *mShowInfoItem; + QCheckBox *mShowMapItem; QHash<QWidget*, QColor> mColors; QMap<QString, int> mPositionMap; QStandardItemModel *mIconModel; diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index f397b57..848fd00 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -120,8 +120,11 @@ void PictureViewer2::readSettings(){ QVariant t = s.value("ui/pvbgcolor"); mBgColor = t.value<QColor>(); mShowInfoItem = s.value("ui/showinfoitem").toBool(); - mConfigPos = s.value("ui/infoposition").toInt(); + mConfigInfoPos = s.value("ui/infoposition").toInt(); mInfoPos = s.value("ui/pvinfopos", QPointF(20, 20)).toPointF(); + mShowMapItem = s.value("ui/showmapitem").toBool(); + mConfigMapPos = s.value("ui/mappingposition").toInt(); + mMappingPos = s.value("ui/pvmappingpos", QPointF(20, 20)).toPointF(); } void PictureViewer2::writeSettings(){ @@ -217,7 +220,15 @@ void PictureViewer2::showFile(const PicData &file){ mFnItem = 0; } } - constructMappingItem(file); + if(mShowMapItem){ + constructMappingItem(file); + }else{ + if(mMappingItem){ + mScene->removeItem(mMappingItem); + delete mMappingItem; + mMappingItem = 0; + } + } } void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize){ @@ -227,7 +238,7 @@ void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize){ delete mFnItem; } mFnItem = new PictureViewer2Item(data, mFiles.size(), picSize); - mFnItem->setPos(getPos(mFnItem->boundingRect())); + mFnItem->setPos(getPos(mFnItem, mConfigInfoPos, mInfoPos)); mScene->addItem(mFnItem); } @@ -247,10 +258,12 @@ void PictureViewer2::constructMappingItem(const PicData &file){ } QTextDocument *mapString = treeToString(mappingTree); mMappingItem = new PictureViewer2Item(mapString); - if(mFnItem){ - QPointF fnRect = mFnItem->scenePos(); - QPointF myPos = QPointF(fnRect.x(), fnRect.y() + mFnItem->boundingRect().height() + 10); - mMappingItem->setPos(myPos); + if(mConfigMapPos != ConfigurationDialog::SideBySide){ + mMappingItem->setPos(getPos(mMappingItem, mConfigMapPos, mMappingPos)); + }else{ + if(!mShowInfoItem){ + return; + } } mScene->addItem(mMappingItem); } @@ -311,26 +324,26 @@ void PictureViewer2::treeToStringRecursive(const SmTreeItem *parent, QTextCursor } } -QPointF PictureViewer2::getPos(const QRectF &boundingRect) const{ +QPointF PictureViewer2::getPos(PictureViewer2Item *item, int pos, const QPointF &movPos){ QSizeF curSize = size(); - mFnItem->setFlags(0); - if(mConfigPos == ConfigurationDialog::TopLeft){ + item->setFlags(0); + if(pos == ConfigurationDialog::TopLeft){ return QPointF(5, 5); } - int rightOffset = curSize.width() - 15 - boundingRect.width(); - int bottomOffset = curSize.height() - 15 - boundingRect.height(); - if(mConfigPos == ConfigurationDialog::TopRight){ + int rightOffset = curSize.width() - 15 - item->boundingRect().width(); + int bottomOffset = curSize.height() - 15 - item->boundingRect().height(); + if(pos == ConfigurationDialog::TopRight){ return QPointF(rightOffset, 5); } - if(mConfigPos == ConfigurationDialog::BottomLeft){ + if(pos == ConfigurationDialog::BottomLeft){ return QPointF(5, bottomOffset); } - if(mConfigPos == ConfigurationDialog::BottomRigth){ + if(pos == ConfigurationDialog::BottomRigth){ return QPointF(rightOffset, bottomOffset); } - if(mConfigPos == ConfigurationDialog::Moveable){ - mFnItem->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable); - return mInfoPos; + if(pos == ConfigurationDialog::Moveable){ + item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable); + return movPos; } return QPointF(5, 5); } @@ -352,7 +365,6 @@ PictureViewer2Item::PictureViewer2Item(const PicData &data, const int numSelecte textList << data.at(PicFilesModel::MimeType).toString(); textList << QString(QObject::tr("%1 files selected")).arg(QString::number(numSelected)); mText = QStaticText(textList.join("<br/>")); - //setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable); setZValue(1); } diff --git a/pictureviewer2.h b/pictureviewer2.h index 47e0292..c776c53 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -22,6 +22,7 @@ class QTimer; class QTextDocument; class QTextCursor; class PictureViewer2Item; +class QGraphicsItem; class SmTreeItem; class MappingTreeModel; @@ -62,20 +63,22 @@ class PictureViewer2 : public QGraphicsView { void setGradient(const QPixmap &pic); QTextDocument *treeToString(const SmTreeItem *root) const; void treeToStringRecursive(const SmTreeItem *parent, QTextCursor *cursor) const; - QPointF getPos(const QRectF &boundingRect) const; + QPointF getPos(PictureViewer2Item *item, int pos, const QPointF &movPos); QString constructWindowTitle() const; PicDataList mFiles; QGraphicsScene *mScene; QSize mMinimunSize; QGraphicsPixmapItem *mCur; int mCurPos; - int mConfigPos; + int mConfigInfoPos; + int mConfigMapPos; QTimer *mSlideTimer; const QString mDefaultFile; PictureViewer2Item *mFnItem; PictureViewer2Item *mMappingItem; bool mUseGradient; bool mShowInfoItem; + bool mShowMapItem; QColor mBgColor; QPointF mInfoPos; QPointF mMappingPos; |