annotate examples/draganddrop/dropsite/dropsitewindow_d1.d @ 282:256ab6cb8e85

Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
author eldar
date Fri, 16 Oct 2009 02:43:59 +0000
parents 06e7d3219464
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
216
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
1 /****************************************************************************
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
2 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
4 ** Contact: Qt Software Information (qt-info@nokia.com)
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
5 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
6 ** This file is part of the examples of the Qt Toolkit.
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
7 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
8 ** $QT_BEGIN_LICENSE:LGPL$
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
9 ** Commercial Usage
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
10 ** Licensees holding valid Qt Commercial licenses may use this file in
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
11 ** accordance with the Qt Commercial License Agreement provided with the
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
12 ** Software or, alternatively, in accordance with the terms contained in
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
13 ** a written agreement between you and Nokia.
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
14 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
15 ** GNU Lesser General Public License Usage
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
17 ** General Public License version 2.1 as published by the Free Software
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
19 ** packaging of this file. Please review the following information to
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
22 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
23 ** In addition, as a special exception, Nokia gives you certain
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
24 ** additional rights. These rights are described in the Nokia Qt LGPL
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
26 ** package.
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
27 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
28 ** GNU General Public License Usage
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
29 ** Alternatively, this file may be used under the terms of the GNU
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
30 ** General Public License version 3.0 as published by the Free Software
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
31 ** Foundation and appearing in the file LICENSE.GPL included in the
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
32 ** packaging of this file. Please review the following information to
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
33 ** ensure the GNU General Public License version 3.0 requirements will be
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
34 ** met: http://www.gnu.org/copyleft/gpl.html.
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
35 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
36 ** If you are unsure which license is appropriate for your use, please
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
37 ** contact the sales department at qt-sales@nokia.com.
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
38 ** $QT_END_LICENSE$
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
39 **
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
40 ****************************************************************************/
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
41
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
42 module dropsitewindow_d1;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
43
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
44 import tango.text.Util;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
45 import tango.text.Ascii;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
46 import tango.text.convert.Format;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
47
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
48 import qt.gui.QWidget;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
49 import qt.gui.QLabel;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
50 import qt.gui.QTableWidget;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
51 import qt.gui.QPushButton;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
52 import qt.gui.QVBoxLayout;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
53 import qt.gui.QDialogButtonBox;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
54
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
55 import droparea;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
56
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
57
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
58 class DropSiteWindow : public QWidget
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
59 {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
60 public:
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
61
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
62 this()
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
63 {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
64 abstractLabel = new QLabel(tr("This example accepts drags from other "
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
65 "applications and displays the MIME types "
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
66 "provided by the drag object."));
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
67
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
68 abstractLabel.setWordWrap(true);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
69 abstractLabel.adjustSize();
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
70
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
71 dropArea = new DropArea;
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 216
diff changeset
72 connect!("changed")(dropArea, &updateFormatsTable);
216
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
73
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
74 string[] labels;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
75 labels ~= tr("Format");
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
76 labels ~= tr("Content");
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
77
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
78 formatsTable = new QTableWidget;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
79 formatsTable.setColumnCount(2);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
80 formatsTable.setEditTriggers(QAbstractItemView.NoEditTriggers);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
81 formatsTable.setHorizontalHeaderLabels(labels);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
82 formatsTable.horizontalHeader().setStretchLastSection(true);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
83
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
84 clearButton = new QPushButton(tr("Clear"));
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
85 quitButton = new QPushButton(tr("Quit"));
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
86
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
87 buttonBox = new QDialogButtonBox;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
88 buttonBox.addButton(clearButton, QDialogButtonBox.ActionRole);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
89 buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
90
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 216
diff changeset
91 connect!("pressed")(quitButton, &close);
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 216
diff changeset
92 connect!("pressed")(clearButton, &dropArea.clearArea);
216
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
93
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
94 QVBoxLayout mainLayout = new QVBoxLayout;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
95 mainLayout.addWidget(abstractLabel);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
96 mainLayout.addWidget(dropArea);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
97 mainLayout.addWidget(formatsTable);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
98 mainLayout.addWidget(buttonBox);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
99 setLayout(mainLayout);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
100
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
101 setWindowTitle(tr("Drop Site"));
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
102 setMinimumSize(350, 500);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
103 }
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
104
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
105 void updateFormatsTable(QMimeData mimeData)
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
106 {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
107 formatsTable.setRowCount(0);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
108 if (!mimeData)
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
109 return;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
110
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
111 foreach (string format; mimeData.formats()) {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
112 QTableWidgetItem formatItem = new QTableWidgetItem(format);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
113 formatItem.setFlags(Qt.ItemIsEnabled);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
114 formatItem.setTextAlignment(Qt.AlignTop | Qt.AlignLeft);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
115
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
116 string text;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
117 if (format == "text/plain") {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
118 text = trim(mimeData.text());
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
119 } else if (format == "text/html") {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
120 text = trim(mimeData.html());
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
121 } else if (format == "text/uri-list") {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
122 QUrl[] urlList = mimeData.urls();
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
123 for (int i = 0; i < urlList.length && i < 32; ++i) {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
124 string url = urlList[i].path();
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
125 text ~= url ~ " ";
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
126 }
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
127 } else {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
128 QByteArray data = mimeData.data(format);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
129 for (int i = 0; i < data.size() && i < 32; ++i) {
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
130 string hex = toUpper(Format("{0:x}", data.at(i)));
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
131 text ~= hex ~ " ";
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
132 }
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
133 }
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
134
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
135 int row = formatsTable.rowCount();
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
136 formatsTable.insertRow(row);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
137 formatsTable.setItem(row, 0, new QTableWidgetItem(format));
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
138 formatsTable.setItem(row, 1, new QTableWidgetItem(text));
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
139 }
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
140
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
141 formatsTable.resizeColumnToContents(0);
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
142 }
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
143
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
144 private:
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
145
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
146 DropArea dropArea;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
147 QLabel abstractLabel;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
148 QTableWidget formatsTable;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
149
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
150 QPushButton clearButton;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
151 QPushButton quitButton;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
152 QDialogButtonBox buttonBox;
06e7d3219464 ups....
SokoL_SD
parents:
diff changeset
153 }