diff options
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 1f8f15b..cf24c0a 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -16,6 +16,7 @@ #include <QTimer> #include <QPainter> #include <QStyleOptionGraphicsItem> +#include <QDate> #include "pictureviewer2.h" #include "pictureswidget.h" @@ -135,19 +136,16 @@ void PictureViewer2::showFile(const PicData &file){ mScene->addItem(mCur); mCur->setPos(cX, cY); setWindowTitle(constructWindowTitle()); - constructFilenameItem(mFiles.at(mCurPos).at(PicFilesModel::FileName).toString()); + constructFilenameItem(file, pixmap.size()); } -void PictureViewer2::constructFilenameItem(const QString &filename){ +void PictureViewer2::constructFilenameItem(const PicData &data, QSize picSize){ if(mFnItem){ mScene->removeItem(mFnItem); delete mFnItem; } - mFnItem = new PictureViewer2FilenameItem(filename); - QSizeF itemSize = mFnItem->boundingRect().size(); - int thisWidth = size().width(); - int xPos = (thisWidth / 2) - (itemSize.width() / 2); - mFnItem->setPos(xPos, 0); + mFnItem = new PictureViewer2FileinfoItem(data, picSize); + mFnItem->setPos(10, 10); mScene->addItem(mFnItem); } @@ -168,34 +166,42 @@ QString PictureViewer2::constructWindowTitle() const { return retval; } -PictureViewer2FilenameItem::PictureViewer2FilenameItem(const QString &fileName, QGraphicsItem *parent) : QGraphicsItem(parent), mFilename(fileName) { - setZValue(1); +PictureViewer2FileinfoItem::PictureViewer2FileinfoItem(const PicData &data, const QSize &picSize, QGraphicsItem *parent) : QGraphicsItem(parent){ + QStringList textList; + //prevent QStaticText from wrapping filesnames with spaces + //we shouldn't allow this in the first place + textList << data.at(PicFilesModel::FileName).toString().replace(' ', '_'); + textList << QString("%1x%2").arg(QString::number(picSize.width())).arg(QString::number(picSize.height())); + QLocale l; + textList << QString("%1 bytes").arg(l.toString(data.at(PicFilesModel::Size).toInt())); + textList << l.toString(data.at(PicFilesModel::Added).toDate()); + textList << data.at(PicFilesModel::MimeType).toString(); + mText = QStaticText(textList.join("<br/>")); } -QRectF PictureViewer2FilenameItem::boundingRect() const { - QSize size = qApp->fontMetrics().size(Qt::TextSingleLine, mFilename); - size += QSize(2, 2); +QRectF PictureViewer2FileinfoItem::boundingRect() const { + QSizeF size = mText.size(); + size += QSize(10, 10); QRectF retval; retval.setWidth(size.width()); retval.setHeight(size.height()); return retval; } -void PictureViewer2FilenameItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){ +void PictureViewer2FileinfoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){ Q_UNUSED(option); Q_UNUSED(widget); painter->save(); - painter->setRenderHint(QPainter::Antialiasing, false); + painter->setRenderHint(QPainter::Antialiasing, true); painter->setRenderHint(QPainter::TextAntialiasing, true); - QColor bgColor = QColor(237, 12, 102); - bgColor.setAlpha(70); - QColor fgColor = QColor(209, 207, 232); + QColor bgColor = QColor(Qt::white); + bgColor.setAlpha(80); + QColor fgColor = QColor(Qt::black); QBrush brush(bgColor); painter->setPen(QColor(Qt::yellow)); painter->setBrush(brush); - painter->drawRect(boundingRect()); + painter->drawRoundedRect(boundingRect(), 15.0, 15.0); painter->setPen(QPen(fgColor)); - QPoint start(1, qApp->fontMetrics().ascent() + 1); - painter->drawText(start, mFilename); + painter->drawStaticText(5, 5, mText); painter->restore(); } |