OSDN Git Service

9635264f0b5f7da8bce0594593b2c61350a50626
[gefu/Gefu.git] / simpleimageview.cpp
1 #include "common.h"
2 #include "simpleimageview.h"
3
4 #include <QDebug>
5 #include <QKeyEvent>
6 #include <QAction>
7 #include <QMenu>
8 #include <QSettings>
9
10 SimpleImageView::SimpleImageView(QWidget *parent) :
11     QGraphicsView(parent),
12     m_img(),
13     m_back(NULL)
14 {
15     setContextMenuPolicy(Qt::DefaultContextMenu);
16     m_back = new QAction(tr("戻る"), this);
17     m_back->setObjectName("back");
18
19     QList<QKeySequence> shortcuts;
20     shortcuts << QKeySequence("Return");
21     shortcuts << QKeySequence("Backspace");
22     m_back->setShortcuts(shortcuts);
23
24     connect(m_back, SIGNAL(triggered()), this, SLOT(back()));
25 }
26
27 bool SimpleImageView::setSource(const QString &path)
28 {
29     qDebug() << "SimpleImageView::setSource()";
30
31     m_img = QPixmap(path);
32
33     emit fileInfo(QString("%1x%2x%3bpp")
34                   .arg(m_img.width())
35                   .arg(m_img.height())
36                   .arg(m_img.depth()));
37
38     return !m_img.isNull();
39 }
40
41 void SimpleImageView::back()
42 {
43     emit viewFinished();
44 }
45
46 void SimpleImageView::paintEvent(QPaintEvent *)
47 {
48     qDebug() << "SimpleImageView::paintEvent();";
49
50     QPainter painter(viewport());
51     QPixmap scaledImg;
52
53     if (m_img.width() < viewport()->width() &&
54         m_img.height() < viewport()->height())
55     {
56         scaledImg = m_img;
57     }
58     else {
59         scaledImg = m_img.scaled(viewport()->size(),
60                                  Qt::KeepAspectRatio,
61                                  Qt::SmoothTransformation);
62     }
63
64     QSettings settings;
65     painter.setBrush(settings.value(IniKey_ViewColorBgNormal).value<QColor>());
66     painter.drawRect(viewport()->rect());
67     painter.drawPixmap(
68                 (viewport()->width() - scaledImg.width()) / 2,
69                 (viewport()->height() - scaledImg.height()) / 2,
70                 scaledImg);
71 }
72
73 void SimpleImageView::keyPressEvent(QKeyEvent *event)
74 {
75     qDebug() << "SimpleImageView::keyPressEvent();";
76
77     QString ksq = KeyEventToSequence(event);
78
79     if (ProcessShortcut(ksq, this)) {
80         event->accept();
81         return;
82     }
83
84     QGraphicsView::keyReleaseEvent(event);
85
86     // MainWindowへ
87     event->ignore();
88 }
89
90 void SimpleImageView::contextMenuEvent(QContextMenuEvent *event)
91 {
92     qDebug() << "SimpleImageView::contextMenuEvent();";
93
94     QMenu menu(this);
95     menu.addAction(m_back);
96     menu.exec(event->globalPos());
97 }