comparison demos/browser/networkaccessmanager.d @ 73:7bfd46c330dc

more porting
author mandel
date Fri, 22 May 2009 10:59:00 +0000
parents 71b382c10ef6
children 37caa90ce503
comparison
equal deleted inserted replaced
72:b149ef2cb18b 73:7bfd46c330dc
40 ****************************************************************************/ 40 ****************************************************************************/
41 41
42 module networkaccessmanager; 42 module networkaccessmanager;
43 43
44 44
45 import QtNetwork.QNetworkAccessManager; 45 import qt.network.QNetworkAccessManager;
46
47 import qt.core.QSettings;
48
49 import qt.gui.QDesktopServices;
50 import qt.gui.QDialog;
51 import qt.gui.QMessageBox;
52 import qt.gui.QStyle;
53 import qt.gui.QTextDocument;
54
55 import qt.network.QAuthenticator;
56 import qt.network.QNetworkDiskCache;
57 import qt.network.QNetworkProxy;
58 import qt.network.QNetworkReply;
59 import qt.network.QSslError;
46 60
47 import browserapplication; 61 import browserapplication;
48 import browsermainwindow; 62 import browsermainwindow;
49 import ui_passworddialog; 63 import ui_passworddialog;
50 import ui_proxy; 64 import ui_proxy;
51 65
52 import QtCore.QSettings;
53
54 import QtGui.QDesktopServices;
55 import QtGui.QDialog;
56 import QtGui.QMessageBox;
57 import QtGui.QStyle;
58 import QtGui.QTextDocument;
59
60 import QtNetwork.QAuthenticator;
61 import QtNetwork.QNetworkDiskCache;
62 import QtNetwork.QNetworkProxy;
63 import QtNetwork.QNetworkReply;
64 import QtNetwork.QSslError;
65
66 66
67 class NetworkAccessManager : public QNetworkAccessManager 67 class NetworkAccessManager : public QNetworkAccessManager
68 { 68 {
69 Q_OBJECT 69 public:
70 this(QObject parent = null)
71 {
72 super(parent);
70 73
71 public: 74 this.authenticationRequired.connect(&authenticationRequired);
72 this(QObject *parent = null) 75 this.proxyAuthenticationRequired.connect(&proxyAuthenticationRequired);
73 { 76 version(QT_NO_OPENSSL) {
74 super(parent); 77 this.sslErrors.connect(&sslErrors);
75 78 }
76 connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), 79 loadSettings();
77 SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
78 connect(this, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*)),
79 SLOT(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*)));
80 version(QT_NO_OPENSSL) {
81 connect(this, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)),
82 SLOT(sslErrors(QNetworkReply*, const QList<QSslError>&)));
83 }
84 loadSettings();
85 80
86 QNetworkDiskCache *diskCache = new QNetworkDiskCache(this); 81 QNetworkDiskCache diskCache = new QNetworkDiskCache(this);
87 QString location = QDesktopServices::storageLocation(QDesktopServices::CacheLocation); 82 QString location = QDesktopServices.storageLocation(QDesktopServices.CacheLocation);
88 diskCache.setCacheDirectory(location); 83 diskCache.setCacheDirectory(location);
89 setCache(diskCache); 84 setCache(diskCache);
90 } 85 }
91 86
92 private: 87 private:
93 QList<QString> sslTrustedHostList; 88 QList<QString> sslTrustedHostList;
94 89
95 public slots: 90 public:
96 void loadSettings()
97 {
98 QSettings settings;
99 settings.beginGroup(QLatin1String("proxy"));
100 QNetworkProxy proxy;
101 if (settings.value(QLatin1String("enabled"), false).toBool()) {
102 if (settings.value(QLatin1String("type"), 0).toInt() == 0)
103 proxy = QNetworkProxy::Socks5Proxy;
104 else
105 proxy = QNetworkProxy::HttpProxy;
106 proxy.setHostName(settings.value(QLatin1String("hostName")).toString());
107 proxy.setPort(settings.value(QLatin1String("port"), 1080).toInt());
108 proxy.setUser(settings.value(QLatin1String("userName")).toString());
109 proxy.setPassword(settings.value(QLatin1String("password")).toString());
110 }
111 setProxy(proxy);
112 }
113 91
92 void loadSettings()
93 {
94 QSettings settings;
95 settings.beginGroup(QLatin1String("proxy"));
96 QNetworkProxy proxy;
97 if (settings.value(QLatin1String("enabled"), false).toBool()) {
98 if (settings.value(QLatin1String("type"), 0).toInt() == 0)
99 proxy = QNetworkProxy.Socks5Proxy;
100 else
101 proxy = QNetworkProxy.HttpProxy;
102 proxy.setHostName(settings.value(QLatin1String("hostName")).toString());
103 proxy.setPort(settings.value(QLatin1String("port"), 1080).toInt());
104 proxy.setUser(settings.value(QLatin1String("userName")).toString());
105 proxy.setPassword(settings.value(QLatin1String("password")).toString());
106 }
107 setProxy(proxy);
108 }
114 109
115 private slots: 110 private:
116 void authenticationRequired(QNetworkReply *reply, QAuthenticator *auth)
117 {
118 BrowserMainWindow *mainWindow = BrowserApplication::instance().mainWindow();
119 111
120 QDialog dialog(mainWindow); 112 void authenticationRequired(QNetworkReply reply, QAuthenticator auth)
121 dialog.setWindowFlags(Qt::Sheet); 113 {
114 BrowserMainWindow mainWindow = BrowserApplication.instance().mainWindow();
122 115
123 Ui::PasswordDialog passwordDialog; 116 QDialog dialog(mainWindow);
124 passwordDialog.setupUi(&dialog); 117 dialog.setWindowFlags(Qt.Sheet);
125 118
126 passwordDialog.iconLabel.setText(QString()); 119 Ui.PasswordDialog passwordDialog;
127 passwordDialog.iconLabel.setPixmap(mainWindow.style().standardIcon(QStyle::SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32)); 120 passwordDialog.setupUi(&dialog);
128 121
129 QString introMessage = tr("<qt>Enter username and password for \"%1\" at %2</qt>"); 122 passwordDialog.iconLabel.setText(QString());
130 introMessage = introMessage.arg(Qt::escape(reply.url().toString())).arg(Qt::escape(reply.url().toString())); 123 passwordDialog.iconLabel.setPixmap(mainWindow.style().standardIcon(QStyle.SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32));
131 passwordDialog.introLabel.setText(introMessage);
132 passwordDialog.introLabel.setWordWrap(true);
133 124
134 if (dialog.exec() == QDialog::Accepted) { 125 QString introMessage = tr("<qt>Enter username and password for \"%1\" at %2</qt>");
135 auth.setUser(passwordDialog.userNameLineEdit.text()); 126 introMessage = introMessage.arg(Qt.escape(reply.url().toString())).arg(Qt.escape(reply.url().toString()));
136 auth.setPassword(passwordDialog.passwordLineEdit.text()); 127 passwordDialog.introLabel.setText(introMessage);
137 } 128 passwordDialog.introLabel.setWordWrap(true);
138 }
139 129
140 void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth) 130 if (dialog.exec() == QDialog.Accepted) {
141 { 131 auth.setUser(passwordDialog.userNameLineEdit.text());
142 BrowserMainWindow *mainWindow = BrowserApplication::instance().mainWindow(); 132 auth.setPassword(passwordDialog.passwordLineEdit.text());
133 }
134 }
143 135
144 QDialog dialog(mainWindow); 136 void proxyAuthenticationRequired(const QNetworkProxy proxy, QAuthenticator auth)
145 dialog.setWindowFlags(Qt::Sheet); 137 {
138 BrowserMainWindow mainWindow = BrowserApplication.instance().mainWindow();
146 139
147 Ui::ProxyDialog proxyDialog; 140 QDialog dialog(mainWindow);
148 proxyDialog.setupUi(&dialog); 141 dialog.setWindowFlags(Qt.Sheet);
149 142
150 proxyDialog.iconLabel.setText(QString()); 143 Ui.ProxyDialog proxyDialog;
151 proxyDialog.iconLabel.setPixmap(mainWindow.style().standardIcon(QStyle::SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32)); 144 proxyDialog.setupUi(&dialog);
152 145
153 QString introMessage = tr("<qt>Connect to proxy \"%1\" using:</qt>"); 146 proxyDialog.iconLabel.setText(QString());
154 introMessage = introMessage.arg(Qt::escape(proxy.hostName())); 147 proxyDialog.iconLabel.setPixmap(mainWindow.style().standardIcon(QStyle.SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32));
155 proxyDialog.introLabel.setText(introMessage);
156 proxyDialog.introLabel.setWordWrap(true);
157 148
158 if (dialog.exec() == QDialog::Accepted) { 149 QString introMessage = tr("<qt>Connect to proxy \"%1\" using:</qt>");
159 auth.setUser(proxyDialog.userNameLineEdit.text()); 150 introMessage = introMessage.arg(Qt.escape(proxy.hostName()));
160 auth.setPassword(proxyDialog.passwordLineEdit.text()); 151 proxyDialog.introLabel.setText(introMessage);
161 } 152 proxyDialog.introLabel.setWordWrap(true);
162 } 153
154 if (dialog.exec() == QDialog.Accepted) {
155 auth.setUser(proxyDialog.userNameLineEdit.text());
156 auth.setPassword(proxyDialog.passwordLineEdit.text());
157 }
158 }
163 159
164 version(QT_NO_OPENSSL) { 160 version(QT_NO_OPENSSL) {
165 void sslErrors(QNetworkReply *reply, const QList<QSslError> &error) 161 void sslErrors(QNetworkReply reply, QList<QSslError> error)
166 { 162 {
167 // check if SSL certificate has been trusted already 163 // check if SSL certificate has been trusted already
168 QString replyHost = reply.url().host() + ":" + reply.url().port(); 164 QString replyHost = reply.url().host() + ":" + reply.url().port();
169 if(! sslTrustedHostList.contains(replyHost)) { 165 if(! sslTrustedHostList.contains(replyHost)) {
170 BrowserMainWindow *mainWindow = BrowserApplication::instance().mainWindow(); 166 BrowserMainWindow mainWindow = BrowserApplication.instance().mainWindow();
171 167
172 QStringList errorStrings; 168 QStringList errorStrings;
173 for (int i = 0; i < error.count(); ++i) 169 for (int i = 0; i < error.count(); ++i)
174 errorStrings += error.at(i).errorString(); 170 errorStrings += error.at(i).errorString();
175 QString errors = errorStrings.join(QLatin1String("\n")); 171 QString errors = errorStrings.join(QLatin1String("\n"));
176 int ret = QMessageBox::warning(mainWindow, QCoreApplication::applicationName(), 172 int ret = QMessageBox.warning(mainWindow, QCoreApplication.applicationName(),
177 tr("SSL Errors:\n\n%1\n\n%2\n\n" 173 tr("SSL Errors:\n\n%1\n\n%2\n\n"
178 "Do you want to ignore these errors for this host?").arg(reply.url().toString()).arg(errors), 174 "Do you want to ignore these errors for this host?").arg(reply.url().toString()).arg(errors),
179 QMessageBox::Yes | QMessageBox::No, 175 QMessageBox.Yes | QMessageBox.No, QMessageBox.No);
180 QMessageBox::No); 176 if (ret == QMessageBox.Yes) {
181 if (ret == QMessageBox::Yes) { 177 reply.ignoreSslErrors();
182 reply.ignoreSslErrors(); 178 sslTrustedHostList.append(replyHost);
183 sslTrustedHostList.append(replyHost); 179 }
184 } 180 }
185 } 181 }
186 }
187 } 182 }
188 183
189 } 184 }