From ac2319b4f0e67da02880bdf1f8832cf3f527c252 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 9 Apr 2013 10:21:54 +0200 Subject: create getrepositorycontent tool It is a very useful tool to get repositories locally for testing. Change-Id: Ia83841c3e5c96ab369c35580dd98141cf22ed643 Reviewed-by: Karsten Heimrich --- tools/repogenfromonlinerepo/downloadmanager.cpp | 171 ----------- tools/repogenfromonlinerepo/downloadmanager.h | 84 ------ tools/repogenfromonlinerepo/main.cpp | 332 --------------------- .../repogenfromonlinerepo.pro | 19 -- tools/repogenfromonlinerepo/textprogressbar.cpp | 98 ------ tools/repogenfromonlinerepo/textprogressbar.h | 63 ---- 6 files changed, 767 deletions(-) delete mode 100644 tools/repogenfromonlinerepo/downloadmanager.cpp delete mode 100644 tools/repogenfromonlinerepo/downloadmanager.h delete mode 100644 tools/repogenfromonlinerepo/main.cpp delete mode 100644 tools/repogenfromonlinerepo/repogenfromonlinerepo.pro delete mode 100644 tools/repogenfromonlinerepo/textprogressbar.cpp delete mode 100644 tools/repogenfromonlinerepo/textprogressbar.h (limited to 'tools/repogenfromonlinerepo') diff --git a/tools/repogenfromonlinerepo/downloadmanager.cpp b/tools/repogenfromonlinerepo/downloadmanager.cpp deleted file mode 100644 index ee4e9864f..000000000 --- a/tools/repogenfromonlinerepo/downloadmanager.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "downloadmanager.h" - -#include -#include -#include -#include -#include -#include -#include - -DownloadManager::DownloadManager(QObject *parent) - : QObject(parent), downloadedCount(0), totalCount(0) -{ -} - -void DownloadManager::append(const QStringList &urlList) -{ - foreach (QString url, urlList) - append(QUrl::fromEncoded(url.toLocal8Bit())); - - if (downloadQueue.isEmpty()) - QTimer::singleShot(0, this, SIGNAL(finished())); -} - -void DownloadManager::append(const QUrl &url) -{ - if (downloadQueue.isEmpty()) - QTimer::singleShot(0, this, SLOT(startNextDownload())); - - downloadQueue.enqueue(url); - ++totalCount; -} - -QString DownloadManager::saveFileName(const QUrl &url) -{ - QString path = url.path(); - QString basename = QFileInfo(path).fileName(); - - if (basename.isEmpty()) - basename = QLatin1String("download"); - - if (QFile::exists(basename)) { - // already exists, rename the old one - int i = 0; - while (QFile::exists(basename + QLatin1String(".old_") + QString::number(i))) - ++i; - - QFile::rename(basename, basename + QLatin1String(".old_") + QString::number(i)); - //basename += QString::number(i); - } - - return basename; -} - -void DownloadManager::startNextDownload() -{ - if (downloadQueue.isEmpty()) { - printf("%d/%d files downloaded successfully\n", downloadedCount, totalCount); - emit finished(); - return; - } - - QUrl url = downloadQueue.dequeue(); - - QString filename = saveFileName(url); - output.setFileName(filename); - if (!output.open(QIODevice::WriteOnly)) { - fprintf(stderr, "Problem opening save file '%s' for download '%s': %s\n", - qPrintable(filename), url.toEncoded().constData(), - qPrintable(output.errorString())); - - startNextDownload(); - return; // skip this download - } - - QNetworkRequest request(url); - currentDownload = manager.get(request); - connect(currentDownload, SIGNAL(downloadProgress(qint64,qint64)), - SLOT(downloadProgress(qint64,qint64))); - connect(currentDownload, SIGNAL(finished()), - SLOT(downloadFinished())); - connect(currentDownload, SIGNAL(readyRead()), - SLOT(downloadReadyRead())); - - // prepare the output - printf("Downloading %s...\n", url.toEncoded().constData()); - downloadTime.start(); -} - -void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal) -{ - progressBar.setStatus(bytesReceived, bytesTotal); - - // calculate the download speed - double speed = bytesReceived * 1000.0 / downloadTime.elapsed(); - QString unit; - if (speed < 1024) { - unit = QLatin1String("bytes/sec"); - } else if (speed < 1024*1024) { - speed /= 1024; - unit = QLatin1String("kB/s"); - } else { - speed /= 1024*1024; - unit = QLatin1String("MB/s"); - } - - progressBar.setMessage(QString::fromLatin1("%1 %2").arg(speed, 3, 'f', 1).arg(unit)); - progressBar.update(); -} - -void DownloadManager::downloadFinished() -{ - progressBar.clear(); - output.close(); - - if (currentDownload->error()) { - // download failed - fprintf(stderr, "Failed: %s\n", qPrintable(currentDownload->errorString())); - } else { - printf("Succeeded.\n"); - ++downloadedCount; - } - - currentDownload->deleteLater(); - startNextDownload(); -} - -void DownloadManager::downloadReadyRead() -{ - output.write(currentDownload->readAll()); -} diff --git a/tools/repogenfromonlinerepo/downloadmanager.h b/tools/repogenfromonlinerepo/downloadmanager.h deleted file mode 100644 index 29aebec45..000000000 --- a/tools/repogenfromonlinerepo/downloadmanager.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef DOWNLOADMANAGER_H -#define DOWNLOADMANAGER_H - -#include -#include -#include -#include -#include -#include - -#include "textprogressbar.h" - -class DownloadManager: public QObject -{ - Q_OBJECT -public: - explicit DownloadManager(QObject *parent = 0); - - void append(const QUrl &url); - void append(const QStringList &urlList); - QString saveFileName(const QUrl &url); - -signals: - void finished(); - -private slots: - void startNextDownload(); - void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); - void downloadFinished(); - void downloadReadyRead(); - -private: - QNetworkAccessManager manager; - QQueue downloadQueue; - QNetworkReply *currentDownload; - QFile output; - QTime downloadTime; - TextProgressBar progressBar; - - int downloadedCount; - int totalCount; -}; - -#endif diff --git a/tools/repogenfromonlinerepo/main.cpp b/tools/repogenfromonlinerepo/main.cpp deleted file mode 100644 index d9c331fa2..000000000 --- a/tools/repogenfromonlinerepo/main.cpp +++ /dev/null @@ -1,332 +0,0 @@ -/************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Installer Framework. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -**************************************************************************/ -#include "downloadmanager.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void printUsage() -{ - const QString appName = QFileInfo( QCoreApplication::applicationFilePath() ).fileName(); - std::cout << "Usage: " << qPrintable(appName) << "--url " << std::endl; - std::cout << std::endl; - std::cout << "Example:" << std::endl; - std::cout << " " << qPrintable(appName) << " someDirectory foobar.7z" << std::endl; -} - - -int main(int argc, char *argv[]) -{ - QCoreApplication app(argc, argv); - - QString repoUrl = QLatin1String("http://www.forum.nokia.com/nokiaqtsdkrepository/oppdatering/windows/" - "online_ndk_repo"); - - QStringList args = app.arguments(); - for( QStringList::const_iterator it = args.constBegin(); it != args.constEnd(); ++it ) - { - if( *it == QString::fromLatin1( "-h" ) || *it == QString::fromLatin1( "--help" ) ) - { - printUsage(); - return 0; - } - else if( *it == QString::fromLatin1( "-u" ) || *it == QString::fromLatin1( "--url" ) ) - { - ++it; - if( it == args.end() ) { -// printUsage(); -// return -1; - } else { - repoUrl = *it; - } - } - } - - QEventLoop downloadEventLoop; - - DownloadManager downloadManager; - -// get Updates.xml to get to know what we can download - downloadManager.append(QUrl(repoUrl + QLatin1String("/Updates.xml"))); - QObject::connect(&downloadManager, SIGNAL(finished()), &downloadEventLoop, SLOT(quit())); - downloadEventLoop.exec(); -// END - get Updates.xml to get to know what we can download - - QFile batchFile(QLatin1String("download.bat")); - if (!batchFile.open(QIODevice::WriteOnly | QIODevice::Text)) { - qDebug() << "can not open " << QFileInfo(batchFile).absoluteFilePath(); - return app.exec(); - } - - QTextStream batchFileOut(&batchFile); - - const QString updatesXmlPath = QLatin1String("Updates.xml"); - - Q_ASSERT( !updatesXmlPath.isEmpty() ); - Q_ASSERT( QFile::exists( updatesXmlPath ) ); - - QFile updatesFile( updatesXmlPath ); - if ( !updatesFile.open( QIODevice::ReadOnly ) ) { - //qDebug() << QString::fromLatin1("Could not open Updates.xml for reading: %1").arg( updatesFile - // .errorString() ) ; - return app.exec(); - } - - QDomDocument doc; - QString err; - int line = 0; - int col = 0; - if ( !doc.setContent( &updatesFile, &err, &line, &col ) ) { - //qDebug() << QString::fromLatin1("Could not parse component index: %1:%2: %3") - // .arg(QString::number(line), QString::number( col ), err ); - return app.exec(); - } - - const QDomElement root = doc.documentElement(); - const QDomNodeList children = root.childNodes(); - for ( int i = 0; i < children.count(); ++i ) { - //qDebug() << children.count(); - QString packageName; - QString packageDisplayName; - QString packageDescription; - QString packageUpdateText; - QString packageVersion; - QString packageReleaseDate; - QString packageHash; - QString packageUserinterfacesAsString; - QString packageInstallPriority; - QString packageScript; - QString packageDependencies; - QString packageForcedInstallation; - bool packageIsVirtual = false; - QString sevenZString; - const QDomElement el = children.at( i ).toElement(); - if ( el.isNull() ) - continue; - if ( el.tagName() == QLatin1String("PackageUpdate") ) { - const QDomNodeList c2 = el.childNodes(); - - for ( int j = 0; j < c2.count(); ++j ) { - if ( c2.at( j ).toElement().tagName() == QLatin1String("Name") ) - packageName = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("DisplayName") ) - packageDisplayName = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("Description") ) - packageDescription = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("UpdateText") ) - packageUpdateText = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("Version") ) - packageVersion = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("ReleaseDate") ) - packageReleaseDate = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("SHA1") ) - packageHash = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("UserInterfaces") ) - packageUserinterfacesAsString = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("Script") ) - packageScript = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("Dependencies") ) - packageDependencies = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("ForcedInstallation") ) - packageForcedInstallation = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("InstallPriority") ) - packageInstallPriority = c2.at( j ).toElement().text(); - else if ( c2.at( j ).toElement().tagName() == QLatin1String("Virtual") && c2.at( j ) - .toElement().text() == QLatin1String("true")) { - packageIsVirtual = true; - } - } - } - if (packageName.isEmpty()) { - continue; - } - - if ( !packageScript.isEmpty() ) { - // get Updates.xml to get to know what we can download - downloadManager.append(QUrl(repoUrl + QLatin1String("/") + packageName + QLatin1String("/") - + packageScript)); - QObject::connect(&downloadManager, SIGNAL(finished()), &downloadEventLoop, SLOT(quit())); - downloadEventLoop.exec(); - // END - get Updates.xml to get to know what we can download - - QString localScriptFileName = packageScript; - Q_ASSERT( QFile::exists( localScriptFileName ) ); - - QFile file(localScriptFileName); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - //qDebug() << localScriptFileName << " was not readable"; - continue; - } - - QTextStream in(&file); - while (!in.atEnd()) { - QString line = in.readLine(); - if (line.contains(QLatin1String(".7z"))) { - int firstPosition = line.indexOf(QLatin1String("\"")); - QString subString = line.right(line.count() - firstPosition - 1); //-1 means " - //qDebug() << subString; - int secondPosition = subString.indexOf(QLatin1String("\"")); - sevenZString = subString.left(secondPosition); - //qDebug() << sevenZString; - break; - } - } - file.remove(); - } - QStringList packageUserinterfaces = packageUserinterfacesAsString.split(QLatin1String(",")); - packageUserinterfaces.removeAll(QString()); - packageUserinterfaces.removeAll(QLatin1String("")); - - QStringList fileList; - - //fileList << packageVersion + sevenZString; - foreach(const QString file, packageUserinterfaces) { - if(!file.isEmpty()) { - fileList << file; - }/* else { - qDebug() << "There is something wrong with the userinterface string list."; - return a.exec(); - }*/ - } - if(!packageScript.isEmpty()) { - fileList << packageScript; - } - - QFile packagesXml( QString( QCoreApplication::applicationDirPath() + QLatin1String("/") - + packageName + QLatin1String(".xml"))); - packagesXml.open( QIODevice::WriteOnly ); - QTextStream packageAsXmlStream( &packagesXml ); - packageAsXmlStream << QLatin1String("" ) << endl; - packageAsXmlStream << QLatin1String("" ) << endl; - packageAsXmlStream << QString::fromLatin1(" %1").arg(packageDisplayName) - << endl; - - if (!packageDescription.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(packageDescription) << endl; - } - - if (!packageUpdateText.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(packageUpdateText) << endl; - } - - if (!packageVersion.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(packageVersion) << endl; - } - - if (!packageReleaseDate.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(packageReleaseDate) << endl; - } - packageAsXmlStream << QString::fromLatin1(" %1" ).arg(packageName) << endl; - - if (!packageScript.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" " ).arg(packageScript) << endl; - } - - if (packageIsVirtual) { - packageAsXmlStream << QString::fromLatin1(" true" ) << endl; - } - - if (!packageInstallPriority.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(packageInstallPriority) << endl; - } - if (!packageDependencies.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(packageDependencies) << endl; - } - - if (!packageForcedInstallation.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(packageForcedInstallation) << endl; - } - - if (!packageUserinterfaces.isEmpty()) { - packageAsXmlStream << QString::fromLatin1(" " ) << endl; - foreach(const QString userInterfaceFile, packageUserinterfaces) { - packageAsXmlStream << QString::fromLatin1(" %1" ) - .arg(userInterfaceFile) << endl; - } - packageAsXmlStream << QString::fromLatin1(" " ) << endl; - } - packageAsXmlStream << QString::fromLatin1("" ) << endl; - - batchFileOut << "rem download line BEGIN =============================================\n"; - - batchFileOut << "mkdir " << packageName << "\\meta\n"; - batchFileOut << "move " << QDir::toNativeSeparators(QFileInfo(packagesXml).absoluteFilePath()) << " " << packageName << "\\meta\\package.xml\n"; - if (!sevenZString.isEmpty()) { - batchFileOut << "mkdir " << packageName << "\\data\n"; - batchFileOut << "cd " << packageName << "\\data\n"; - batchFileOut << "wget " << repoUrl << "/" << packageName << "/" << QString(packageVersion + sevenZString) << " -O " << sevenZString << "\n"; - batchFileOut << "cd ..\\..\n"; - } - batchFileOut << "cd " << packageName << "\\meta\n"; - foreach(const QString file, fileList) { - batchFileOut << "wget " << repoUrl << "/" << packageName << "/" << file << "\n"; - } - batchFileOut << "cd ..\\..\n"; - - batchFileOut << "rem download line END =============================================\n"; - } //for ( int i = 0; i < children.count(); ++i ) { - - if ( children.count() == 0 ) { - qDebug() << "no packages found"; - return app.exec(); - } else { - qDebug() << "found packages and wrote batch file"; - } - - - return 0; -} diff --git a/tools/repogenfromonlinerepo/repogenfromonlinerepo.pro b/tools/repogenfromonlinerepo/repogenfromonlinerepo.pro deleted file mode 100644 index 0c11efa36..000000000 --- a/tools/repogenfromonlinerepo/repogenfromonlinerepo.pro +++ /dev/null @@ -1,19 +0,0 @@ -TEMPLATE = app -INCLUDEPATH += . .. -TARGET = repogenfromonlinerepo - -include(../../installerfw.pri) - -QT -= gui -QT += network - -CONFIG += console -CONFIG -= app_bundle -DESTDIR = $$IFW_APP_PATH - -SOURCES += main.cpp \ - downloadmanager.cpp \ - textprogressbar.cpp - -HEADERS += downloadmanager.h \ - textprogressbar.h diff --git a/tools/repogenfromonlinerepo/textprogressbar.cpp b/tools/repogenfromonlinerepo/textprogressbar.cpp deleted file mode 100644 index 14faefd5e..000000000 --- a/tools/repogenfromonlinerepo/textprogressbar.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "textprogressbar.h" -#include -#include - -TextProgressBar::TextProgressBar() - : value(0), maximum(-1), iteration(0) -{ -} - -void TextProgressBar::clear() -{ - printf("\n"); - fflush(stdout); - - iteration = 0; - value = 0; - maximum = -1; -} - -void TextProgressBar::update() -{ - ++iteration; - - if (maximum > 0) { - // we know the maximum - // draw a progress bar - int percent = value * 100 / maximum; - int hashes = percent / 2; - - QByteArray progressbar(hashes, '#'); - if (percent % 2) - progressbar += '>'; - - printf("\r[%-50s] %3d%% %s ", - progressbar.constData(), - percent, - qPrintable(message)); - } else { - // we don't know the maximum, so we can't draw a progress bar - int center = (iteration % 48) + 1; // 50 spaces, minus 2 - QByteArray before(qMax(center - 2, 0), ' '); - QByteArray after(qMin(center + 2, 50), ' '); - - printf("\r[%s###%s] %s ", - before.constData(), after.constData(), qPrintable(message)); - } -} - -void TextProgressBar::setMessage(const QString &m) -{ - message = m; -} - -void TextProgressBar::setStatus(qint64 val, qint64 max) -{ - value = val; - maximum = max; -} diff --git a/tools/repogenfromonlinerepo/textprogressbar.h b/tools/repogenfromonlinerepo/textprogressbar.h deleted file mode 100644 index 6f01f0c84..000000000 --- a/tools/repogenfromonlinerepo/textprogressbar.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef TEXTPROGRESSBAR_H -#define TEXTPROGRESSBAR_H - -#include - -class TextProgressBar -{ -public: - TextProgressBar(); - - void clear(); - void update(); - void setMessage(const QString &message); - void setStatus(qint64 value, qint64 maximum); - -private: - QString message; - qint64 value; - qint64 maximum; - int iteration; -}; - -#endif -- cgit v1.2.3