From 9d3de3499af4a03177b9c0bb211da763e5dcbb2d Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 20 Oct 2012 04:36:10 +0200 Subject: Make PictureViewer2 size configurable Several bug fixes on the way: * set fixed size policy for PictureViewer2 -> makes resizing much easier * don't set Y-offset when showing a pic. The scene takes care of it * don't deliver SIGNAL configChanged() twice to PictureViewer2 * center Widget on current screen when calling Helper::centerWidget --- pictureviewer2.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'pictureviewer2.cpp') diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 609c796..2d6c1d9 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -40,6 +40,9 @@ 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... setWindowFlags(QFlags(0x1|0x2|0x1000|0x2000|0x10000|0x8000000)); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); //initial file list PicData initialData; @@ -60,14 +63,8 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) //setup gui mScene = new QGraphicsScene(this); setScene(mScene); - QDesktopWidget *dw = QApplication::desktop(); - QSize screenSize = dw->availableGeometry().size(); - //TODO: configure! - mMinimunSize = QSize(screenSize.width() - 100, screenSize.height() - 100); - setMinimumSize(mMinimunSize); - move(50, 50); - setVisible(false); readSettings(); + setVisible(false); mScene->setSceneRect(QRectF(0, 0, width() - 10, height() - 10)); showFile(mFiles.at(mCurPos)); } @@ -146,7 +143,7 @@ PicData PictureViewer2::picData(const QString &fullPath){ } QSize PictureViewer2::sizeHint() const{ - return mMinimunSize; + return mSize; } void PictureViewer2::next(){ @@ -184,6 +181,14 @@ void PictureViewer2::readSettings(){ mInfoPos = s.value("ui/pvinfopos", QPointF(20, 20)).toPointF(); mConfigMapPos = s.value("ui/mappingposition").toInt(); mMappingPos = s.value("ui/pvmappingpos", QPointF(20, 20)).toPointF(); + const QSize pvMinSize = SmGlobals::instance()->minPVSize(); + int pvWidth = s.value("ui/pvwidth", pvMinSize.width()).toInt(); + int pvHeight = s.value("ui/pvheight", pvMinSize.height()).toInt(); + mSize = QSize(pvWidth, pvHeight); + resize(mSize); + mScene->setSceneRect(QRectF(0, 0, width() - 10, height() - 10)); + showFile(mCurPicData); + Helper::centerWidget(this); } void PictureViewer2::writeSettings(){ @@ -265,6 +270,10 @@ void PictureViewer2::hideEvent(QHideEvent *){ } void PictureViewer2::showFile(const PicData &file){ + if(file.isEmpty()){ + return; + } + mCurPicData = file; QPixmap pixmap(file.at(PicFilesModel::FullPath).toString()); if(pixmap.isNull()){ return; @@ -284,9 +293,8 @@ void PictureViewer2::showFile(const PicData &file){ } mCur = new QGraphicsPixmapItem(pixmap); float cX = (width() / 2) - (pixmap.width() / 2); - float cY = height() / 2 - pixmap.height() / 2; mScene->addItem(mCur); - mCur->setPos(cX, cY); + mCur->setPos(cX, 0); setWindowTitle(constructWindowTitle()); if(mConfigInfoPos != ConfigurationDialog::NoDisplay){ constructInfoItem(file, pixmap.size()); -- cgit v1.2.3-70-g09d2