OSDN Git Service

スレッド処理を整理
[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 void ThumbnailView::scaleDown()
45 {
46     qDebug() << "ThumbnailView::scaleDown()";
47
48     static_cast<ThumbnailDelegate*>(itemDelegate())->scaleDown();
49     folderModel()->clearPixmapCache();
50 }
51
52 void ThumbnailView::scaleUp()
53 {
54     qDebug() << "ThumbnailView::scaleUp()";
55
56     static_cast<ThumbnailDelegate*>(itemDelegate())->scaleUp();
57     folderModel()->clearPixmapCache();
58 }
59
60 void ThumbnailView::setModel(QAbstractItemModel *model)
61 {
62     if (this->model()) {
63         this->model()->disconnect(this);
64     }
65
66     QListView::setModel(model);
67
68     if (this->model()) {
69         connect(this->model(), SIGNAL(modelAboutToBeReset()), &m_p, SLOT(model_PreReset()));
70         connect(this->model(), SIGNAL(modelReset()), &m_p, SLOT(model_PostReset()));
71     }
72 }
73
74 void ThumbnailView::setVisible(bool visible)
75 {
76     if (visible) {
77         static_cast<ThumbnailDelegate*>(itemDelegate())->resetScale();
78         folderModel()->clearPixmapCache();
79     }
80
81     QListView::setVisible(visible);
82 }