OSDN Git Service

Ver0.26
[gefu/Gefu.git] / thumbnailview.cpp
1 #include "mainwindow.h"
2 #include "thumbnaildelegate.h"
3 #include "thumbnailview.h"
4
5 #include <QApplication>
6 #include <QDebug>
7 #include <QDrag>
8 #include <QMimeData>
9 #include <QMouseEvent>
10
11 ///////////////////////////////////////////////////////////////////////////////
12 /// \brief ThumbnailView::ThumbnailView
13 /// \param parent   親ウィジェット
14 ///
15 /// コンストラクタ
16 ///
17 ThumbnailView::ThumbnailView(QWidget *parent) :
18     QListView(parent),
19     m_p(this)
20 {
21     setItemDelegate(new ThumbnailDelegate(this));
22     setSpacing(12);
23 }
24
25 ///////////////////////////////////////////////////////////////////////////////
26 /// \brief ThumbnailView::initialize
27 /// \param w    メインウィンドウオブジェクト
28 ///
29 /// 初期化処理を行います。
30 ///
31 void ThumbnailView::initialize(MainWindow *w)
32 {
33     qDebug() << "ThumbnailView::initialize()";
34
35     connect(this, SIGNAL(doubleClicked(QModelIndex)), w, SLOT(onOpen(QModelIndex)));
36     connect(&m_p, SIGNAL(copyItems(QStringList,QString)), w, SLOT(copyItems(QStringList,QString)));
37     connect(&m_p, SIGNAL(moveItems(QStringList,QString)), w, SLOT(moveItems(QStringList,QString)));
38
39     installEventFilter(w);
40     viewport()->installEventFilter(&m_p);
41     viewport()->installEventFilter(w);
42 }
43
44 ///////////////////////////////////////////////////////////////////////////////
45 /// \brief ThumbnailView::onScaleDown
46 ///
47 /// サムネイルサイズを小さくします。
48 ///
49 void ThumbnailView::onScaleDown()
50 {
51     qDebug() << "ThumbnailView::onScaleDown()";
52
53     static_cast<ThumbnailDelegate*>(itemDelegate())->scaleDown();
54     folderModel()->clearPixmapCache();
55 }
56
57 ///////////////////////////////////////////////////////////////////////////////
58 /// \brief ThumbnailView::onScaleUp
59 ///
60 /// サムネイルサイズを大きくします。
61 ///
62 void ThumbnailView::onScaleUp()
63 {
64     qDebug() << "ThumbnailView::onScaleUp()";
65
66     static_cast<ThumbnailDelegate*>(itemDelegate())->scaleUp();
67     folderModel()->clearPixmapCache();
68 }
69
70 ///////////////////////////////////////////////////////////////////////////////
71 /// \brief ThumbnailView::setModel
72 /// \param model    モデル
73 ///
74 /// モデルを設定します。
75 ///
76 void ThumbnailView::setModel(QAbstractItemModel *model)
77 {
78     if (this->model()) {
79         this->model()->disconnect(this);
80     }
81
82     QListView::setModel(model);
83
84     if (this->model()) {
85         connect(this->model(), SIGNAL(modelAboutToBeReset()), &m_p, SLOT(model_PreReset()));
86         connect(this->model(), SIGNAL(modelReset()), &m_p, SLOT(model_PostReset()));
87     }
88 }
89
90 ///////////////////////////////////////////////////////////////////////////////
91 /// \brief ThumbnailView::setVisible
92 /// \param visible  表示(true)/非表示(false)
93 ///
94 /// サムネイルサイズを初期化します。
95 ///
96 void ThumbnailView::setVisible(bool visible)
97 {
98     if (visible) {
99         static_cast<ThumbnailDelegate*>(itemDelegate())->resetScale();
100         folderModel()->clearPixmapCache();
101     }
102
103     QListView::setVisible(visible);
104 }