diff demos/browser/downloadmanager.d @ 77:0654fc9bac95

more porting
author mandel
date Sun, 24 May 2009 13:46:32 +0000
parents 37caa90ce503
children 85c59c4e5f19
line wrap: on
line diff
--- a/demos/browser/downloadmanager.d	Sun May 24 11:24:57 2009 +0000
+++ b/demos/browser/downloadmanager.d	Sun May 24 13:46:32 2009 +0000
@@ -140,12 +140,12 @@
 			m_output.remove();
 		m_reply = r;
 		init();
-		emit statusChanged();
+		statusChanged.emit();
 	}
 
 	void open()
 	{
-		QFileInfo info(m_output);
+		auto info = new QFileInfo(m_output);
 		QUrl url = QUrl.fromLocalFile(info.absolutePath());
 		QDesktopServices.openUrl(url);
 	}
@@ -159,17 +159,15 @@
 			if (!m_requestFileName)
 				getFileName();
 			if (!m_output.open(QIODevice.WriteOnly)) {
-				downloadInfoLabel.setText(tr("Error opening save file: %1")
-					.arg(m_output.errorString()));
+				downloadInfoLabel.setText(Format(tr("Error opening save file: {}"), m_output.errorString()));
 				stopButton.click();
-				emit statusChanged();
+				statusChanged.emit();
 				return;
 			}
-			emit statusChanged();
+			statusChanged.emit();
 		}
 		if (-1 == m_output.write(m_reply.readAll())) {
-			downloadInfoLabel.setText(tr("Error saving: %1")
-				.arg(m_output.errorString()));
+			downloadInfoLabel.setText(Format(tr("Error saving: {}"), m_output.errorString()));
 			stopButton.click();
 		}
 	}
@@ -177,7 +175,7 @@
 	void error(QNetworkReply.NetworkError code)
 	{
 		qDebug() << "DownloadItem::error" << m_reply.errorString() << m_url;
-		downloadInfoLabel.setText(tr("Network Error: %1").arg(m_reply.errorString()));
+		downloadInfoLabel.setText(Format(tr("Network Error: {}"), m_reply.errorString()));
 		tryAgainButton.setEnabled(true);
 		tryAgainButton.setVisible(true);
 	}
@@ -207,32 +205,32 @@
 		stopButton.hide();
 		m_output.close();
 		updateInfoLabel();
-		emit statusChanged();
+		statusChanged.emit();
 	}
 
 private:
 
 	void getFileName()
 	{
-		QSettings settings;
+		auto settings = new QSettings;
 		settings.beginGroup(QLatin1String("downloadmanager"));
-		QString defaultLocation = QDesktopServices.storageLocation(QDesktopServices.DesktopLocation);
-		QString downloadDirectory = settings.value(QLatin1String("downloadDirectory"), defaultLocation).toString();
+		string defaultLocation = QDesktopServices.storageLocation(QDesktopServices.DesktopLocation);
+		string downloadDirectory = settings.value(QLatin1String("downloadDirectory"), defaultLocation).toString();
 		if (!downloadDirectory.isEmpty())
 			downloadDirectory += QLatin1Char('/');
 
-		QString defaultFileName = saveFileName(downloadDirectory);
-		QString fileName = defaultFileName;
+		string defaultFileName = saveFileName(downloadDirectory);
+		string fileName = defaultFileName;
 		if (m_requestFileName) {
 			fileName = QFileDialog.getSaveFileName(this, tr("Save File"), defaultFileName);
 			if (fileName.isEmpty()) {
 				m_reply.close();
-				fileNameLabel.setText(tr("Download canceled: %1").arg(QFileInfo(defaultFileName).fileName()));
+				fileNameLabel.setText(Format(tr("Download canceled: {}"), (new QFileInfo(defaultFileName)).fileName()));
 				return;
 			}
 		}
 		m_output.setFileName(fileName);
-		fileNameLabel.setText(QFileInfo(m_output.fileName()).fileName());
+		fileNameLabel.setText((new QFileInfo(m_output.fileName())).fileName());
 		if (m_requestFileName)
 			downloadReadyRead();
 	}
@@ -276,7 +274,7 @@
 		// update info label
 		double speed = m_bytesReceived * 1000.0 / m_downloadTime.elapsed();
 		double timeRemaining = (cast(double)(bytesTotal - m_bytesReceived)) / speed;
-		QString timeRemainingString = tr("seconds");
+		string timeRemainingString = tr("seconds");
 		if (timeRemaining > 60) {
 			timeRemaining = timeRemaining / 60;
 			timeRemainingString = tr("minutes");
@@ -287,33 +285,31 @@
 		if (timeRemaining == 0)
 			timeRemaining = 1;
 
-		QString info;
+		string info;
 		if (running) {
-			QString remaining;
+			string remaining;
 			if (bytesTotal != 0)
-				remaining = tr("- %4 %5 remaining")
-				.arg(timeRemaining)
-				.arg(timeRemainingString);
+				remaining = Format(tr("- {} {} remaining"), timeRemaining, timeRemainingString);
 			
-			info = QString(tr("%1 of %2 (%3/sec) %4"))
-				.arg(dataString(m_bytesReceived))
-				.arg(bytesTotal == 0 ? tr("?") : dataString(bytesTotal))
-				.arg(dataString(cast(int) speed))
-				.arg(remaining);
+			info = Format(tr("{} of {} ({}/sec) {}"),
+					dataString(m_bytesReceived),
+					bytesTotal == 0 ? tr("?") : dataString(bytesTotal),
+					dataString(cast(int) speed),
+					remaining);
 		} else {
 			if (m_bytesReceived == bytesTotal)
 				info = dataString(m_output.size());
 			else
-				info = tr("%1 of %2 - Stopped")
-				.arg(dataString(m_bytesReceived))
-				.arg(dataString(bytesTotal));
+				info = Format(tr("{} of {} - Stopped"),
+					dataString(m_bytesReceived),
+					dataString(bytesTotal));
 		}
 		downloadInfoLabel.setText(info);
 	}
 
-	QString dataString(int size)
+	string dataString(int size)
 	{
-		QString unit;
+		string unit;
 		if (size < 1024) {
 			unit = tr("bytes");
 		} else if (size < 1024*1024) {
@@ -323,27 +319,27 @@
 			size /= 1024*1024;
 			unit = tr("MB");
 		}
-		return QString(QLatin1String("%1 %2")).arg(size).arg(unit);
+		return Format(QLatin1String("{} {}"), size, unit);
 	}
 
-	QString saveFileName(QString directory)
+	string saveFileName(string directory)
 	{
 		// Move this function into QNetworkReply to also get file name sent from the server
-		QString path = m_url.path();
-		QFileInfo info(path);
-		QString baseName = info.completeBaseName();
-		QString endName = info.suffix();
+		string path = m_url.path();
+		auto info = new QFileInfo(path);
+		string baseName = info.completeBaseName();
+		string endName = info.suffix();
 
 		if (baseName.isEmpty()) {
 			baseName = QLatin1String("unnamed_download");
 			qDebug() << "DownloadManager:: downloading unknown file:" << m_url;
 		}
-		QString name = directory + baseName + QLatin1Char('.') + endName;
+		string name = directory ~ baseName ~ QLatin1Char('.') ~ endName;
 		if (QFile.exists(name)) {
 			// already exists, don't overwrite
 			int i = 1;
 			do {
-				name = directory + baseName + QLatin1Char('-') + QString.number(i++) + QLatin1Char('.') + endName;
+				name = directory ~ baseName ~ QLatin1Char('-') ~ QString.number(i++) ~ QLatin1Char('.') ~ endName;
 			} while (QFile.exists(name));
 		}
 		return name;
@@ -403,8 +399,8 @@
 	int activeDownloads()
 	{
 		int count = 0;
-		for (int i = 0; i < m_downloads.count(); ++i) {
-			if (m_downloads.at(i).stopButton.isEnabled())
+		for (int i = 0; i < m_downloads.length; ++i) {
+			if (m_downloads[i].stopButton.isEnabled())
 				++count;
 		}
 		return count;
@@ -454,11 +450,11 @@
 	
 	void cleanup()
 	{
-		if (m_downloads.isEmpty())
+		if (m_downloads.length == 0)
 			return;
-		m_model.removeRows(0, m_downloads.count());
+		m_model.removeRows(0, m_downloads.length);
 		updateItemCount();
-		if (m_downloads.isEmpty() && m_iconProvider) {
+		if (m_downloads.length == 0 && m_iconProvider) {
 			delete m_iconProvider;
 			m_iconProvider = 0;
 		}
@@ -477,25 +473,25 @@
 		if (m_removePolicy == Exit)
 			return;
 
-		for (int i = 0; i < m_downloads.count(); ++i) {
-			QString key = QString(QLatin1String("download_%1_")).arg(i);
-			settings.setValue(key + QLatin1String("url"), m_downloads[i].m_url);
-			settings.setValue(key + QLatin1String("location"), QFileInfo(m_downloads[i].m_output).filePath());
-			settings.setValue(key + QLatin1String("done"), m_downloads[i].downloadedSuccessfully());
+		for (int i = 0; i < m_downloads.length; ++i) {
+			string key = Format(QLatin1String("download_{}_"), i);
+			settings.setValue(key ~ QLatin1String("url"), m_downloads[i].m_url);
+			settings.setValue(key ~ QLatin1String("location"), (new QFileInfo(m_downloads[i].m_output)).filePath());
+			settings.setValue(key ~ QLatin1String("done"), m_downloads[i].downloadedSuccessfully());
 		}
-		int i = m_downloads.count();
-		QString key = QString(QLatin1String("download_%1_")).arg(i);
-		while (settings.contains(key + QLatin1String("url"))) {
-			settings.remove(key + QLatin1String("url"));
-			settings.remove(key + QLatin1String("location"));
-			settings.remove(key + QLatin1String("done"));
-			key = QString(QLatin1String("download_%1_")).arg(++i);
+		int i = m_downloads.length;
+		string key = Format(QLatin1String("download_{}_"), i);
+		while (settings.contains(key ~ QLatin1String("url"))) {
+			settings.remove(key ~ QLatin1String("url"));
+			settings.remove(key ~ QLatin1String("location"));
+			settings.remove(key ~ QLatin1String("done"));
+			key = Format(QLatin1String("download_{}_"), ++i);
 		}
 	}
 
 	void updateRow()
 	{
-		DownloadItem item = cast(DownloadItem) sender();
+		DownloadItem item = cast(DownloadItem) signalSender();
 		int row = m_downloads.indexOf(item);
 		if (-1 == row)
 			return;
@@ -518,7 +514,7 @@
 		if (remove)
 			m_model.removeRow(row);
 
-		cleanupButton.setEnabled(m_downloads.count() - activeDownloads() > 0);
+		cleanupButton.setEnabled(m_downloads.length - activeDownloads() > 0);
 	}
 
 private:
@@ -526,9 +522,9 @@
 	void addItem(DownloadItem item)
 	{
 		item.statusChanged.connect(&this.updateRow);
-		int row = m_downloads.count();
+		int row = m_downloads.length;
 		m_model.beginInsertRows(QModelIndex(), row, row);
-		m_downloads.append(item);
+		m_downloads ~= item;
 		m_model.endInsertRows();
 		updateItemCount();
 		if (row == 0)
@@ -542,8 +538,8 @@
 
 	void updateItemCount()
 	{
-		int count = m_downloads.count();
-		itemCount.setText(count == 1 ? tr("1 Download") : tr("%1 Downloads").arg(count));
+		int count = m_downloads.length;
+		itemCount.setText(count == 1 ? tr("1 Download") : tr("{} Downloads").arg(count));
 	}
 
 	void load()
@@ -559,15 +555,15 @@
 			cast(RemovePolicy) removePolicyEnum.keyToValue(value);
 
 		int i = 0;
-		QString key = QString(QLatin1String("download_%1_")).arg(i);
+		string key = Format(QLatin1String("download_{}_"), i);
 		while (settings.contains(key + QLatin1String("url"))) {
 			QUrl url = settings.value(key + QLatin1String("url")).toUrl();
-			QString fileName = settings.value(key + QLatin1String("location")).toString();
+			string fileName = settings.value(key + QLatin1String("location")).toString();
 			bool done = settings.value(key + QLatin1String("done"), true).toBool();
 			if (!url.isEmpty() && !fileName.isEmpty()) {
 				DownloadItem item = new DownloadItem(0, this);
 				item.m_output.setFileName(fileName);
-				item.fileNameLabel.setText(QFileInfo(item.m_output.fileName()).fileName());
+				item.fileNameLabel.setText((new QFileInfo(item.m_output.fileName())).fileName());
 				item.m_url = url;
 				item.stopButton.setVisible(false);
 				item.stopButton.setEnabled(false);
@@ -576,9 +572,9 @@
 				item.progressBar.setVisible(!done);
 				addItem(item);
 			}
-			key = QString(QLatin1String("download_%1_")).arg(++i);
+			key = Format(QLatin1String("download_{}_"), ++i);
 		}
-		cleanupButton.setEnabled(m_downloads.count() - activeDownloads() > 0);
+		cleanupButton.setEnabled(m_downloads.length - activeDownloads() > 0);
 	}
 
 	AutoSaver m_autoSaver;
@@ -606,14 +602,14 @@
 		if (index.row() < 0 || index.row() >= rowCount(index.parent()))
 			return QVariant();
 		if (role == Qt.ToolTipRole)
-			if (!m_downloadManager.m_downloads.at(index.row()).downloadedSuccessfully())
-				return m_downloadManager.m_downloads.at(index.row()).downloadInfoLabel.text();
+			if (!m_downloadManager.m_downloads[index.row()].downloadedSuccessfully())
+				return m_downloadManager.m_downloads[index.row()].downloadInfoLabel.text();
 		return QVariant();
 	}
 
 	int rowCount(QModelIndex parent = QModelIndex())
 	{
-		return (parent.isValid()) ? 0 : m_downloadManager.m_downloads.count();
+		return (parent.isValid()) ? 0 : m_downloadManager.m_downloads.length;
 	}
 
 	bool removeRows(int row, int count, QModelIndex parent = QModelIndex())
@@ -623,8 +619,8 @@
 
 		int lastRow = row + count - 1;
 		for (int i = lastRow; i >= row; --i) {
-			if (m_downloadManager.m_downloads.at(i).downloadedSuccessfully()
-				|| m_downloadManager.m_downloads.at(i).tryAgainButton.isEnabled()) {
+			if (m_downloadManager.m_downloads[i].downloadedSuccessfully()
+				|| m_downloadManager.m_downloads[i].tryAgainButton.isEnabled()) {
 				beginRemoveRows(parent, i, i);
 				m_downloadManager.m_downloads.takeAt(i).deleteLater();
 				endRemoveRows();