Mercurial > projects > qtd
comparison examples/draganddrop/dropsite/droparea.d @ 372:a032df77b6ab
Simple debug helper. Unittests. Meta-object for polymorphic non-QObjects
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Thu, 08 Jul 2010 17:19:05 +0300 |
parents | 7a3c43424dca |
children |
comparison
equal
deleted
inserted
replaced
370:7fd4b69378bf | 372:a032df77b6ab |
---|---|
44 import qt.gui.QLabel; | 44 import qt.gui.QLabel; |
45 | 45 |
46 class DropArea : public QLabel | 46 class DropArea : public QLabel |
47 { | 47 { |
48 public: | 48 public: |
49 this(QWidget parent = null) | 49 this(QWidget parent = null) |
50 { | 50 { |
51 super(parent); | 51 super(parent); |
52 | 52 |
53 setMinimumSize(200, 200); | 53 setMinimumSize(200, 200); |
54 setFrameStyle(QFrame.Sunken | QFrame.StyledPanel); | 54 setFrameStyle(QFrame.Sunken | QFrame.StyledPanel); |
55 setAlignment(Qt.AlignCenter); | 55 setAlignment(Qt.AlignCenter); |
56 setAcceptDrops(true); | 56 setAcceptDrops(true); |
57 setAutoFillBackground(true); | 57 setAutoFillBackground(true); |
58 clearArea(); | 58 clearArea(); |
59 } | 59 } |
60 | |
61 void slot_clearArea() | |
62 { | |
63 setText(tr("<drop content>")); | |
64 setBackgroundRole(QPalette.Dark); | |
65 | 60 |
66 changed(null); | 61 void slot_clearArea() |
67 } | 62 { |
63 setText(tr("<drop content>")); | |
64 setBackgroundRole(QPalette.Dark); | |
68 | 65 |
69 final void signal_changed(QMimeData); | 66 changed(null); |
70 | 67 } |
68 | |
69 final void signal_changed(QMimeData); | |
70 | |
71 protected: | 71 protected: |
72 void dragEnterEvent(QDragEnterEvent event) | 72 void dragEnterEvent(QDragEnterEvent event) |
73 { | 73 { |
74 setText(tr("<drop content>")); | 74 setText(tr("<drop content>")); |
75 setBackgroundRole(QPalette.Highlight); | 75 setBackgroundRole(QPalette.Highlight); |
76 | 76 |
77 event.acceptProposedAction(); | 77 event.acceptProposedAction(); |
78 changed(event.mimeData); | 78 changed(event.mimeData); |
79 } | 79 } |
80 | |
81 void dragMoveEvent(QDragMoveEvent event) | |
82 { | |
83 event.acceptProposedAction(); | |
84 } | |
85 | |
86 void dragLeaveEvent(QDragLeaveEvent event) | |
87 { | |
88 clearArea(); | |
89 event.accept(); | |
90 } | |
91 | |
92 void dropEvent(QDropEvent event) | |
93 { | |
94 QMimeData mimeData = event.mimeData(); | |
95 | 80 |
96 if (mimeData.hasImage()) { | 81 void dragMoveEvent(QDragMoveEvent event) |
97 setPixmap(new QPixmap(mimeData.imageData)); | 82 { |
98 } else if (mimeData.hasHtml()) { | 83 event.acceptProposedAction(); |
99 setText(mimeData.html()); | 84 } |
100 setTextFormat(Qt.RichText); | |
101 } else if (mimeData.hasText()) { | |
102 setText(mimeData.text()); | |
103 setTextFormat(Qt.PlainText); | |
104 } else if (mimeData.hasUrls()) { | |
105 auto urlList = mimeData.urls(); | |
106 string text; | |
107 for (int i = 0; i < urlList.length && i < 32; ++i) { | |
108 text ~= urlList[i].path() ~ "\n"; | |
109 } | |
110 setText(text); | |
111 } else { | |
112 setText(tr("Cannot display data")); | |
113 } | |
114 | 85 |
115 setBackgroundRole(QPalette.Dark); | 86 void dragLeaveEvent(QDragLeaveEvent event) |
116 event.acceptProposedAction(); | 87 { |
117 } | 88 clearArea(); |
89 event.accept(); | |
90 } | |
91 | |
92 void dropEvent(QDropEvent event) | |
93 { | |
94 QMimeData mimeData = event.mimeData(); | |
95 | |
96 if (mimeData.hasImage()) { | |
97 setPixmap(new QPixmap(mimeData.imageData)); | |
98 } else if (mimeData.hasHtml()) { | |
99 setText(mimeData.html()); | |
100 setTextFormat(Qt.RichText); | |
101 } else if (mimeData.hasText()) { | |
102 setText(mimeData.text()); | |
103 setTextFormat(Qt.PlainText); | |
104 } else if (mimeData.hasUrls()) { | |
105 auto urlList = mimeData.urls(); | |
106 string text; | |
107 for (int i = 0; i < urlList.length && i < 32; ++i) { | |
108 text ~= urlList[i].path() ~ "\n"; | |
109 } | |
110 setText(text); | |
111 } else { | |
112 setText(tr("Cannot display data")); | |
113 } | |
114 | |
115 setBackgroundRole(QPalette.Dark); | |
116 event.acceptProposedAction(); | |
117 } | |
118 | 118 |
119 private: | 119 private: |
120 QLabel label; | 120 QLabel label; |
121 | 121 |
122 mixin Q_OBJECT; | 122 mixin Q_OBJECT; |
123 } | 123 } |
124 | 124 |