summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-03-24 15:24:12 +0100
committerArno <am@disconnect.de>2012-03-24 15:24:12 +0100
commitc425bb0c2b8f8d1fc2884ced9979eb39ee522846 (patch)
treeaac0aab88c3fcd19cd2e5998aa00edd51764e52f
parent13ce3cb8d433499eb81a4fc750d7d90027ea4a62 (diff)
downloadSheMov-c425bb0c2b8f8d1fc2884ced9979eb39ee522846.tar.gz
SheMov-c425bb0c2b8f8d1fc2884ced9979eb39ee522846.tar.bz2
SheMov-c425bb0c2b8f8d1fc2884ced9979eb39ee522846.zip
Made FileInfoItem configurable
Create copious options for FileInfoItem, reintroducing the Pictures tab in ConfigurationDialog. Also fixed a long standing bug in SeriesTreeWidget: don't static_cast() an event. It'll succeed even when called from a destructor.
-rw-r--r--configurationdialog.cpp43
-rw-r--r--configurationdialog.h7
-rw-r--r--pictureviewer2.cpp42
-rw-r--r--pictureviewer2.h3
-rw-r--r--seriestreewidget.cpp2
5 files changed, 92 insertions, 5 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp
index b858a06..d05bc91 100644
--- a/configurationdialog.cpp
+++ b/configurationdialog.cpp
@@ -172,6 +172,24 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S
movieWidget->setLayout(movieWidgetLayout);
mTab->addTab(movieWidget, tr("Movies"));
+ //picture viewer
+ QGroupBox *picInfoBox = new QGroupBox(tr("Picture info item"));
+ mPositionBox = new QComboBox;
+ createPositionMap();
+ fillPositions(mPositionBox);
+ mPositionBox->removeItem(mPositionBox->findData(SideBySide));
+ QFormLayout *pvInfoL = new QFormLayout;
+ pvInfoL->addRow(tr("Picture info position"), mPositionBox);
+ mShowInfoItem = new QCheckBox(tr("Show info item"));
+ connect(mShowInfoItem, SIGNAL(toggled(bool)), mPositionBox, SLOT(setEnabled(bool)));
+ pvInfoL->addRow(tr("Show info item"), mShowInfoItem);
+ picInfoBox->setLayout(pvInfoL);
+ QWidget *picWidget = new QWidget;
+ QVBoxLayout *picLayout = new QVBoxLayout;
+ picLayout->addWidget(picInfoBox);
+ picWidget->setLayout(picLayout);
+ mTab->addTab(picWidget, tr("Pictures"));
+
//database tab
QFormLayout *dbFormL = new QFormLayout;
mDatabaseHost = new QLineEdit;
@@ -364,6 +382,11 @@ void ConfigurationDialog::readSettings(){
mWindowsDrive->setText(s.value("paths/windowsdrive").toString());
mStripPath->setText(s.value("paths/strippath").toString());
+ //read pictures
+ mShowInfoItem->setChecked(s.value("ui/showinfoitem", true).toBool());
+ mPositionBox->setCurrentIndex(mPositionBox->findData(s.value("ui/infoposition", TopLeft).toInt()));
+ mPositionBox->setEnabled(mShowInfoItem->checkState());
+
//read database
mDatabaseHost->setText(s.value("database/hostname").toString());
mDatabaseName->setText(s.value("database/dbname").toString());
@@ -434,6 +457,11 @@ void ConfigurationDialog::writeSettings(){
s.setValue("ui/iconizecovers", (mIconizeCovers->checkState() == Qt::Checked));
s.setValue("ui/cursoroffset", mCursorOffset->value());
+ //write pictures
+ s.setValue("ui/showinfoitem", (mShowInfoItem->checkState() == Qt::Checked));
+ QString curPos = mPositionBox->currentText();
+ s.setValue("ui/infoposition", mPositionMap.value(curPos));
+
//write database
s.setValue("database/hostname", mDatabaseHost->text());
s.setValue("database/dbname", mDatabaseName->text());
@@ -538,3 +566,18 @@ void ConfigurationDialog::setColor(QWidget *label){
pm.fill(curColor);
curLabel->setPixmap(pm);
}
+
+void ConfigurationDialog::createPositionMap(){
+ mPositionMap.insert(tr("Top left"), TopLeft);
+ mPositionMap.insert(tr("Top right"), TopRight);
+ mPositionMap.insert(tr("Bottom left"), BottomLeft);
+ mPositionMap.insert(tr("Bottom right"), BottomRigth);
+ mPositionMap.insert(tr("Side by side"), SideBySide);
+ mPositionMap.insert(tr("Freely moveable"), Moveable);;
+}
+
+void ConfigurationDialog::fillPositions(QComboBox *cb){
+ for(QMap<QString, int>::const_iterator it = mPositionMap.constBegin(); it != mPositionMap.constEnd(); ++it){
+ cb->addItem(it.key(), it.value());
+ }
+}
diff --git a/configurationdialog.h b/configurationdialog.h
index 7867374..3d83bcd 100644
--- a/configurationdialog.h
+++ b/configurationdialog.h
@@ -9,6 +9,7 @@
#define CONFIGURATIONDIALOG_H
#include <QHash>
+#include <QMap>
#include "smdialog.h"
@@ -26,6 +27,7 @@ class ProgramConfigurator;
class ConfigurationDialog : public SmDialog {
Q_OBJECT
public:
+ enum Position { TopLeft = 0, TopRight = 1, BottomLeft = 2, BottomRigth = 3, SideBySide = 4, Moveable = 5 };
ConfigurationDialog(QWidget *parent = 0, Qt::WindowFlags f = 0);
~ConfigurationDialog() {}
@@ -44,6 +46,8 @@ class ConfigurationDialog : public SmDialog {
bool checkDvdPath();
void mountError(const QString &error);
void setColor(QWidget *label);
+ void createPositionMap();
+ void fillPositions(QComboBox *cb);
QPushButton *mOk;
QPushButton *mCancel;
QTabWidget *mTab;
@@ -62,6 +66,7 @@ class ConfigurationDialog : public SmDialog {
QLineEdit *mStripPath;
QLineEdit *mGrabFrameFrom;
QComboBox *mIconForFolder;
+ QComboBox *mPositionBox;
QCheckBox *mHoverPics;
QCheckBox *mHoverArchive;
QCheckBox *mHoverMovies;
@@ -89,7 +94,9 @@ class ConfigurationDialog : public SmDialog {
QPushButton *mPVBgButton;
QCheckBox *mAlternateColors;
QCheckBox *mPVGradient;
+ QCheckBox *mShowInfoItem;
QHash<QWidget*, QColor> mColors;
+ QMap<QString, int> mPositionMap;
QStandardItemModel *mIconModel;
};
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index 8c6d831..f397b57 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -27,6 +27,7 @@
#include "smglobals.h"
#include "mappingtreemodel.h"
#include "smtreeitem.h"
+#include "configurationdialog.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...
@@ -118,6 +119,8 @@ void PictureViewer2::readSettings(){
mUseGradient = s.value("ui/pvgradient").toBool();
QVariant t = s.value("ui/pvbgcolor");
mBgColor = t.value<QColor>();
+ mShowInfoItem = s.value("ui/showinfoitem").toBool();
+ mConfigPos = s.value("ui/infoposition").toInt();
mInfoPos = s.value("ui/pvinfopos", QPointF(20, 20)).toPointF();
}
@@ -205,8 +208,15 @@ void PictureViewer2::showFile(const PicData &file){
mScene->addItem(mCur);
mCur->setPos(cX, cY);
setWindowTitle(constructWindowTitle());
- //TODO: configure!
- constructInfoItem(file, pixmap.size());
+ if(mShowInfoItem){
+ constructInfoItem(file, pixmap.size());
+ }else{
+ if(mFnItem){
+ mScene->removeItem(mFnItem);
+ delete mFnItem;
+ mFnItem = 0;
+ }
+ }
constructMappingItem(file);
}
@@ -217,7 +227,7 @@ void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize){
delete mFnItem;
}
mFnItem = new PictureViewer2Item(data, mFiles.size(), picSize);
- mFnItem->setPos(mInfoPos);
+ mFnItem->setPos(getPos(mFnItem->boundingRect()));
mScene->addItem(mFnItem);
}
@@ -301,6 +311,30 @@ void PictureViewer2::treeToStringRecursive(const SmTreeItem *parent, QTextCursor
}
}
+QPointF PictureViewer2::getPos(const QRectF &boundingRect) const{
+ QSizeF curSize = size();
+ mFnItem->setFlags(0);
+ if(mConfigPos == ConfigurationDialog::TopLeft){
+ return QPointF(5, 5);
+ }
+ int rightOffset = curSize.width() - 15 - boundingRect.width();
+ int bottomOffset = curSize.height() - 15 - boundingRect.height();
+ if(mConfigPos == ConfigurationDialog::TopRight){
+ return QPointF(rightOffset, 5);
+ }
+ if(mConfigPos == ConfigurationDialog::BottomLeft){
+ return QPointF(5, bottomOffset);
+ }
+ if(mConfigPos == ConfigurationDialog::BottomRigth){
+ return QPointF(rightOffset, bottomOffset);
+ }
+ if(mConfigPos == ConfigurationDialog::Moveable){
+ mFnItem->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
+ return mInfoPos;
+ }
+ return QPointF(5, 5);
+}
+
QString PictureViewer2::constructWindowTitle() const {
QString retval = QString(tr("PicViewer 2 - [%1]")).arg(mFiles.at(mCurPos).at(PicFilesModel::FileName).toString());
return retval;
@@ -318,7 +352,7 @@ 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);
+ //setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
setZValue(1);
}
diff --git a/pictureviewer2.h b/pictureviewer2.h
index d31780e..47e0292 100644
--- a/pictureviewer2.h
+++ b/pictureviewer2.h
@@ -62,17 +62,20 @@ 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;
QString constructWindowTitle() const;
PicDataList mFiles;
QGraphicsScene *mScene;
QSize mMinimunSize;
QGraphicsPixmapItem *mCur;
int mCurPos;
+ int mConfigPos;
QTimer *mSlideTimer;
const QString mDefaultFile;
PictureViewer2Item *mFnItem;
PictureViewer2Item *mMappingItem;
bool mUseGradient;
+ bool mShowInfoItem;
QColor mBgColor;
QPointF mInfoPos;
QPointF mMappingPos;
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index d6c216d..1f96a11 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -426,7 +426,7 @@ void SeriesTreeView::contextMenuEvent(QContextMenuEvent *e){
}
bool SeriesTreeView::event(QEvent *e){
- QHoverEvent *hEvent = static_cast<QHoverEvent*>(e);
+ QHoverEvent *hEvent = dynamic_cast<QHoverEvent*>(e);
if(!hEvent){
return QTreeView::event(e);
}