diff options
author | Arno <am@disconnect.de> | 2012-03-16 17:02:43 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-03-16 17:03:34 +0100 |
commit | 319abd8da8f1edbb626c470605a32f83687f3839 (patch) | |
tree | cdfe1bc173c02502647ad02f0dfced3bcd15ec85 | |
parent | 2f6d52fdea06ff45c9e03768e90eaac658cef487 (diff) | |
download | SheMov-319abd8da8f1edbb626c470605a32f83687f3839.tar.gz SheMov-319abd8da8f1edbb626c470605a32f83687f3839.tar.bz2 SheMov-319abd8da8f1edbb626c470605a32f83687f3839.zip |
Revamp filename item in PictureViewer2
Turn it into something completely different :)
Display filename, scaled size, file size, added date and mime type in
the upper left corner of the viewport.
Make it more visible. A pinkish background doesn't always work esp. with
a gradient background. Make it white with 80% alpha channel with a black
foreground.
-rw-r--r-- | pictureviewer2.cpp | 46 | ||||
-rw-r--r-- | pictureviewer2.h | 15 |
2 files changed, 34 insertions, 27 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(); } diff --git a/pictureviewer2.h b/pictureviewer2.h index a45c097..d5d80a4 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -12,13 +12,14 @@ #include <QList> #include <QVariant> #include <QGraphicsItem> +#include <QStaticText> class QGraphicsScene; class QGraphicsPixmapItem; class QWheelEvent; class QContextMenuEvent; class QTimer; -class PictureViewer2FilenameItem; +class PictureViewer2FileinfoItem; typedef QList<QVariant> PicData; typedef QList<QList<QVariant> > PicDataList; @@ -41,8 +42,8 @@ class PictureViewer2 : public QGraphicsView { virtual void contextMenuEvent(QContextMenuEvent *e); private slots: - void showFile(const PicData &file); - void constructFilenameItem(const QString &filename); + void showFile(const PicData &data); + void constructFilenameItem(const PicData &file, QSize picSize); private: void setupDialog(); @@ -55,17 +56,17 @@ class PictureViewer2 : public QGraphicsView { int mCurPos; QTimer *mSlideTimer; const QString mDefaultFile; - PictureViewer2FilenameItem *mFnItem; + PictureViewer2FileinfoItem *mFnItem; }; -class PictureViewer2FilenameItem : public QGraphicsItem { +class PictureViewer2FileinfoItem : public QGraphicsItem { public: - explicit PictureViewer2FilenameItem(const QString &fileName, QGraphicsItem *parent = 0); + explicit PictureViewer2FileinfoItem(const PicData &data, const QSize &picSize = QSize(), QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); private: - QString mFilename; + QStaticText mText; }; #endif // PICTUREVIEWER2_H |