diff options
Diffstat (limited to 'src/sdk')
-rw-r--r-- | src/sdk/console.h | 131 | ||||
-rw-r--r-- | src/sdk/installerbase.cpp | 21 | ||||
-rw-r--r-- | src/sdk/installerbase.qrc | 10 | ||||
-rw-r--r-- | src/sdk/installerbase_p.cpp | 138 | ||||
-rw-r--r-- | src/sdk/installerbase_p.h | 26 | ||||
-rw-r--r-- | src/sdk/installerbasecommons.cpp | 17 | ||||
-rw-r--r-- | src/sdk/sdk.pro | 4 | ||||
-rw-r--r-- | src/sdk/sdkapp.h | 84 | ||||
-rw-r--r-- | src/sdk/settingsdialog.cpp | 128 | ||||
-rw-r--r-- | src/sdk/settingsdialog.h | 39 | ||||
-rw-r--r-- | src/sdk/tabcontroller.cpp | 10 | ||||
-rw-r--r-- | src/sdk/translations/de_de.ts | 4 | ||||
-rw-r--r-- | src/sdk/translations/en_us.ts | 2 | ||||
-rw-r--r-- | src/sdk/translations/ja_jp.ts | 612 | ||||
-rw-r--r-- | src/sdk/translations/ru_ru.ts | 2 | ||||
-rw-r--r-- | src/sdk/translations/sv_se.ts | 2 | ||||
-rw-r--r-- | src/sdk/translations/zh_cn.ts | 2 |
17 files changed, 630 insertions, 602 deletions
diff --git a/src/sdk/console.h b/src/sdk/console.h new file mode 100644 index 000000000..7eb4aa3f4 --- /dev/null +++ b/src/sdk/console.h @@ -0,0 +1,131 @@ +/************************************************************************** +** +** Copyright (C) 2014 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$ +** +**************************************************************************/ + +#ifndef CONSOLE_H +#define CONSOLE_H + +#include <QtCore/QtGlobal> + +#ifdef Q_OS_WIN +# include <qt_windows.h> +# include <wincon.h> + +# include <fstream> +# include <iostream> + +# ifndef ENABLE_INSERT_MODE +# define ENABLE_INSERT_MODE 0x0020 +# endif + +# ifndef ENABLE_QUICK_EDIT_MODE +# define ENABLE_QUICK_EDIT_MODE 0x0040 +# endif + +# ifndef ENABLE_EXTENDED_FLAGS +# define ENABLE_EXTENDED_FLAGS 0x0080 +# endif + +class Console +{ +public: + Console() + { + AllocConsole(); + HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); + if (handle != INVALID_HANDLE_VALUE) { + COORD largestConsoleWindowSize = GetLargestConsoleWindowSize(handle); + largestConsoleWindowSize.X -= 3; + largestConsoleWindowSize.Y = 5000; + SetConsoleScreenBufferSize(handle, largestConsoleWindowSize); + } + + handle = GetStdHandle(STD_INPUT_HANDLE); + if (handle != INVALID_HANDLE_VALUE) + SetConsoleMode(handle, ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS); + + m_oldCin = std::cin.rdbuf(); + m_newCin.open("CONIN$"); + std::cin.rdbuf(m_newCin.rdbuf()); + + m_oldCout = std::cout.rdbuf(); + m_newCout.open("CONOUT$"); + std::cout.rdbuf(m_newCout.rdbuf()); + + m_oldCerr = std::cerr.rdbuf(); + m_newCerr.open("CONOUT$"); + std::cerr.rdbuf(m_newCerr.rdbuf()); +# ifndef Q_CC_MINGW + HMENU systemMenu = GetSystemMenu(GetConsoleWindow(), FALSE); + if (systemMenu != NULL) + RemoveMenu(systemMenu, SC_CLOSE, MF_BYCOMMAND); + DrawMenuBar(GetConsoleWindow()); +# endif + } + + ~Console() + { + system("PAUSE"); + + std::cin.rdbuf(m_oldCin); + std::cerr.rdbuf(m_oldCerr); + std::cout.rdbuf(m_oldCout); + + FreeConsole(); + } + +private: + std::ifstream m_newCin; + std::ofstream m_newCout; + std::ofstream m_newCerr; + + std::streambuf* m_oldCin; + std::streambuf* m_oldCout; + std::streambuf* m_oldCerr; +}; +#else +class Console +{ +public: + Console() {} +}; +#endif + +#endif // CONSOLE_H diff --git a/src/sdk/installerbase.cpp b/src/sdk/installerbase.cpp index 8d7518fcf..3629cc22f 100644 --- a/src/sdk/installerbase.cpp +++ b/src/sdk/installerbase.cpp @@ -41,6 +41,7 @@ #include "installerbase_p.h" #include "installerbasecommons.h" +#include "sdkapp.h" #include "tabcontroller.h" #include <binaryformat.h> @@ -61,6 +62,8 @@ #include <kdrunoncechecker.h> #include <kdupdaterfiledownloaderfactory.h> +#include <productkeycheck.h> + #include <QDirIterator> #include <QtCore/QTranslator> #include <QMessageBox> @@ -151,7 +154,7 @@ int main(int argc, char *argv[]) // this is the FSEngineServer as an admin rights process upon request: if (args.count() >= 3 && args[1] == QLatin1String("--startserver")) { - MyCoreApplication app(argc, argv); + SDKApp<QCoreApplication> app(argc, argv); FSEngineServer* const server = new FSEngineServer(args[2].toInt()); if (args.count() >= 4) server->setAuthorizationKey(args[3]); @@ -173,18 +176,21 @@ int main(int argc, char *argv[]) #endif if (args.contains(QLatin1String("--checkupdates"))) { - MyCoreApplication app(argc, argv); + SDKApp<QCoreApplication> app(argc, argv); if (runCheck.isRunning(KDRunOnceChecker::ProcessList)) return 0; Updater u; - u.setVerbose(args.contains(QLatin1String("--verbose")) || args.contains(QLatin1String("-v"))); + if (args.contains(QLatin1String("--verbose")) || args.contains(QLatin1String("-v"))) { + app.setVerbose(); + u.setVerbose(true); + } return u.checkForUpdates() ? 0 : 1; } if (args.contains(QLatin1String("--runoperation")) || args.contains(QLatin1String("--undooperation"))) { - MyCoreApplication app(argc, argv); + SDKApp<QCoreApplication> app(argc, argv); OperationRunner o; o.setVerbose(args.contains(QLatin1String("--verbose")) || args.contains(QLatin1String("-v"))); @@ -192,7 +198,7 @@ int main(int argc, char *argv[]) } if (args.contains(QLatin1String("--update-installerbase"))) { - MyCoreApplication app(argc, argv); + SDKApp<QCoreApplication> app(argc, argv); if (runCheck.isRunning(KDRunOnceChecker::ProcessList)) return 0; @@ -216,7 +222,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - MyCoreApplication app(argc, argv); + SDKApp<QCoreApplication> app(argc, argv); // input, if not given use current app QString input; @@ -233,7 +239,7 @@ int main(int argc, char *argv[]) } // from here, the "normal" installer binary is running - MyApplication app(argc, argv); + SDKApp<QApplication> app(argc, argv); args = app.arguments(); if (runCheck.isRunning(KDRunOnceChecker::ProcessList)) { @@ -295,6 +301,7 @@ int main(int argc, char *argv[]) // instantiate the installer we are actually going to use QInstaller::PackageManagerCore core(content.magicMarker(), content.performedOperations()); + ProductKeyCheck::instance()->init(&core); QString controlScript; QHash<QString, QString> params; diff --git a/src/sdk/installerbase.qrc b/src/sdk/installerbase.qrc index 678515eaf..c43461833 100644 --- a/src/sdk/installerbase.qrc +++ b/src/sdk/installerbase.qrc @@ -1,13 +1,13 @@ <RCC> <qresource prefix="/"> - <file>translations/de_de.qm</file> + <file alias="translations/de_DE.qm">translations/de_de.qm</file> <file>translations/qt_de.qm</file> - <file>translations/en_us.qm</file> - <file>translations/ru_ru.qm</file> + <file alias="translations/en_US.qm">translations/en_us.qm</file> + <file alias="translations/ru_RU.qm">translations/ru_ru.qm</file> <file>translations/qt_ru.qm</file> - <file>translations/zh_cn.qm</file> + <file alias="translations/zh_CN.qm">translations/zh_cn.qm</file> <file>translations/qt_zh_CN.qm</file> - <file>translations/ja_jp.qm</file> + <file alias="translations/ja_JP.qm">translations/ja_jp.qm</file> <file>translations/qt_ja.qm</file> </qresource> </RCC> diff --git a/src/sdk/installerbase_p.cpp b/src/sdk/installerbase_p.cpp index 4fcbe7b6e..2c79e0dde 100644 --- a/src/sdk/installerbase_p.cpp +++ b/src/sdk/installerbase_p.cpp @@ -39,6 +39,7 @@ ** **************************************************************************/ #include "installerbase_p.h" +#include "console.h" #include <binaryformat.h> #include <errors.h> @@ -58,147 +59,14 @@ #include <QMessageBox> -#include <fstream> #include <iomanip> #include <iostream> -#ifdef Q_OS_WIN -# include <windows.h> -# include <wincon.h> - -# ifndef ENABLE_INSERT_MODE -# define ENABLE_INSERT_MODE 0x0020 -# endif - -# ifndef ENABLE_QUICK_EDIT_MODE -# define ENABLE_QUICK_EDIT_MODE 0x0040 -# endif - -# ifndef ENABLE_EXTENDED_FLAGS -# define ENABLE_EXTENDED_FLAGS 0x0080 -# endif -#endif - using namespace KDUpdater; using namespace QInstaller; using namespace QInstallerCreator; -// -- MyCoreApplication - -MyCoreApplication::MyCoreApplication(int &argc, char **argv) - : QCoreApplication(argc, argv) -{ -} - -// re-implemented from QCoreApplication so we can throw exceptions in scripts and slots -bool MyCoreApplication::notify(QObject *receiver, QEvent *event) -{ - try { - return QCoreApplication::notify(receiver, event); - } catch(std::exception &e) { - qFatal("Exception thrown: %s", e.what()); - } - return false; -} - - -// -- MyApplicationConsole - -class MyApplicationConsole -{ -public: - MyApplicationConsole() - { -#ifdef Q_OS_WIN - AllocConsole(); - - HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); - if (handle != INVALID_HANDLE_VALUE) { - COORD largestConsoleWindowSize = GetLargestConsoleWindowSize(handle); - largestConsoleWindowSize.X -= 3; - largestConsoleWindowSize.Y = 5000; - SetConsoleScreenBufferSize(handle, largestConsoleWindowSize); - } - - handle = GetStdHandle(STD_INPUT_HANDLE); - if (handle != INVALID_HANDLE_VALUE) - SetConsoleMode(handle, ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS); - - m_oldCin = std::cin.rdbuf(); - m_newCin.open("CONIN$"); - std::cin.rdbuf(m_newCin.rdbuf()); - - m_oldCout = std::cout.rdbuf(); - m_newCout.open("CONOUT$"); - std::cout.rdbuf(m_newCout.rdbuf()); - - m_oldCerr = std::cerr.rdbuf(); - m_newCerr.open("CONOUT$"); - std::cerr.rdbuf(m_newCerr.rdbuf()); -# ifndef Q_CC_MINGW - HMENU systemMenu = GetSystemMenu(GetConsoleWindow(), FALSE); - if (systemMenu != NULL) - RemoveMenu(systemMenu, SC_CLOSE, MF_BYCOMMAND); - DrawMenuBar(GetConsoleWindow()); -# endif -#endif - } - ~MyApplicationConsole() - { -#ifdef Q_OS_WIN - system("PAUSE"); - - std::cin.rdbuf(m_oldCin); - std::cerr.rdbuf(m_oldCerr); - std::cout.rdbuf(m_oldCout); - - FreeConsole(); -#endif - } - -private: - std::ifstream m_newCin; - std::ofstream m_newCout; - std::ofstream m_newCerr; - - std::streambuf* m_oldCin; - std::streambuf* m_oldCout; - std::streambuf* m_oldCerr; -}; - - -// -- MyApplication - -MyApplication::MyApplication(int &argc, char **argv) - : QApplication(argc, argv) - , m_console(0) -{ -} - -MyApplication::~MyApplication() -{ - delete m_console; -} - -void MyApplication::setVerbose() -{ - if (!m_console) - m_console = new MyApplicationConsole; -} - -// re-implemented from QApplication so we can throw exceptions in scripts and slots -bool MyApplication::notify(QObject *receiver, QEvent *event) -{ - try { - return QApplication::notify(receiver, event); - } catch(std::exception &e) { - qFatal("Exception thrown: %s", e.what()); - } - return false; -} - - // -- InstallerBase InstallerBase::InstallerBase(QObject *parent) @@ -307,7 +175,7 @@ void InstallerBase::showUsage() { #define WIDTH1 46 #define WIDTH2 40 - MyApplicationConsole c; + Console c; std::cout << "Usage: SDKMaintenanceTool [OPTIONS]" << std::endl << std::endl; std::cout << "User:"<<std::endl; @@ -373,7 +241,7 @@ void InstallerBase::showUsage() /* static*/ void InstallerBase::showVersion(const QString &version) { - MyApplicationConsole c; + Console c; std::cout << qPrintable(version) << std::endl; } diff --git a/src/sdk/installerbase_p.h b/src/sdk/installerbase_p.h index cd6ed0142..5d3e66e31 100644 --- a/src/sdk/installerbase_p.h +++ b/src/sdk/installerbase_p.h @@ -39,8 +39,10 @@ ** **************************************************************************/ +#ifndef INSTALLERBASE_P_H +#define INSTALLERBASE_P_H + #include <QThread> -#include <QApplication> namespace KDUpdater { class FileDownloader; @@ -50,8 +52,6 @@ QT_BEGIN_NAMESPACE class QFile; QT_END_NAMESPACE -class MyApplicationConsole; - class Sleep : public QThread { public: @@ -89,22 +89,4 @@ private: QScopedPointer<KDUpdater::FileDownloader> m_downloader; }; -class MyCoreApplication : public QCoreApplication -{ -public: - MyCoreApplication(int &argc, char **argv); - virtual bool notify(QObject *receiver, QEvent *event); -}; - -class MyApplication : public QApplication -{ -public: - MyApplication(int &argc, char **argv); - ~MyApplication(); - - void setVerbose(); - virtual bool notify(QObject *receiver, QEvent *event); - -private: - MyApplicationConsole *m_console; -}; +#endif // INSTALLERBASE_P_H diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp index a4e5047d0..0cf85a0ec 100644 --- a/src/sdk/installerbasecommons.cpp +++ b/src/sdk/installerbasecommons.cpp @@ -43,6 +43,7 @@ #include <component.h> #include <messageboxhandler.h> #include <packagemanagercore.h> +#include <packagemanagerpagefactory.h> #include <settings.h> #include <productkeycheck.h> @@ -339,6 +340,7 @@ void IntroductionPageImpl::entering() showMaintenanceTools(); setMaintenanceToolsEnabled(true); } + setSettingsButtonRequested((!core->isOfflineOnly()) && (!core->isUninstaller())); } void IntroductionPageImpl::leaving() @@ -502,6 +504,13 @@ bool TargetDirectoryPageImpl::validatePage() InstallerGui::InstallerGui(PackageManagerCore *core) : PackageManagerGui(core, 0) { + ProductKeyCheck *checker = ProductKeyCheck::instance(); + foreach (const int id, checker->registeredPages()) { + PackageManagerPage *page = PackageManagerPageFactory::instance().create(id, core); + Q_ASSERT_X(page, Q_FUNC_INFO, qPrintable(QString::fromLatin1("Page with %1 couldn't be " + "constructed.").arg(id))); + setPage(id, page); + } setPage(PackageManagerCore::Introduction, new IntroductionPageImpl(core)); setPage(PackageManagerCore::TargetDirectory, new TargetDirectoryPageImpl(core)); setPage(PackageManagerCore::ComponentSelection, new ComponentSelectionPage(core)); @@ -524,6 +533,14 @@ void InstallerGui::init() MaintenanceGui::MaintenanceGui(PackageManagerCore *core) : PackageManagerGui(core, 0) { + ProductKeyCheck *checker = ProductKeyCheck::instance(); + foreach (const int id, checker->registeredPages()) { + PackageManagerPage *page = PackageManagerPageFactory::instance().create(id, core); + Q_ASSERT_X(page, Q_FUNC_INFO, qPrintable(QString::fromLatin1("Page with %1 couldn't be " + "constructed.").arg(id))); + setPage(id, page); + } + IntroductionPageImpl *intro = new IntroductionPageImpl(core); connect(intro, SIGNAL(packageManagerCoreTypeChanged()), this, SLOT(updateRestartPage())); diff --git a/src/sdk/sdk.pro b/src/sdk/sdk.pro index 8b428fe48..b2588603b 100644 --- a/src/sdk/sdk.pro +++ b/src/sdk/sdk.pro @@ -76,7 +76,9 @@ FORMS += settingsdialog.ui HEADERS += installerbase_p.h \ tabcontroller.h \ installerbasecommons.h \ - settingsdialog.h + settingsdialog.h \ + console.h \ + sdkapp.h SOURCES = installerbase.cpp \ installerbase_p.cpp \ diff --git a/src/sdk/sdkapp.h b/src/sdk/sdkapp.h new file mode 100644 index 000000000..78d586560 --- /dev/null +++ b/src/sdk/sdkapp.h @@ -0,0 +1,84 @@ +/************************************************************************** +** +** Copyright (C) 2014 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$ +** +**************************************************************************/ + +#ifndef SDKAPP_H +#define SDKAPP_H + +#include "console.h" + +#include <QApplication> + +template<class T> +class SDKApp : public T +{ +public: + SDKApp(int& argc, char** argv) + : T(argc, argv) + , m_console(0) + { + } + + virtual ~SDKApp() + { + delete m_console; + } + + void setVerbose() + { + if (!m_console) + m_console = new Console; + } + + virtual bool notify(QObject *receiver, QEvent *event) + { + try { + return T::notify(receiver, event); + } catch (std::exception &e) { + qFatal("Exception thrown: %s", e.what()); + } + return false; + } + +private: + Console *m_console; +}; + +#endif // SDKAPP_H diff --git a/src/sdk/settingsdialog.cpp b/src/sdk/settingsdialog.cpp index 1a7903403..305fc051a 100644 --- a/src/sdk/settingsdialog.cpp +++ b/src/sdk/settingsdialog.cpp @@ -42,8 +42,6 @@ #include "settingsdialog.h" #include "ui_settingsdialog.h" -#include <kdupdaterfiledownloader.h> -#include <kdupdaterfiledownloaderfactory.h> #include <packagemanagercore.h> #include <productkeycheck.h> @@ -57,130 +55,6 @@ using namespace QInstaller; - -// -- TestRepositoryJob - -TestRepository::TestRepository(QObject *parent) - : KDJob(parent) - , m_downloader(0) -{ - setTimeout(10000); - setAutoDelete(false); - setCapabilities(Cancelable); -} - -TestRepository::~TestRepository() -{ - if (m_downloader) - m_downloader->deleteLater(); -} - -Repository TestRepository::repository() const -{ - return m_repository; -} - -void TestRepository::setRepository(const Repository &repository) -{ - cancel(); - - setError(NoError); - setErrorString(QString()); - m_repository = repository; -} - -void TestRepository::doStart() -{ - if (m_downloader) - m_downloader->deleteLater(); - - const QUrl url = m_repository.url(); - if (url.isEmpty()) { - emitFinishedWithError(InvalidUrl, tr("Empty repository URL.")); - return; - } - - m_downloader = KDUpdater::FileDownloaderFactory::instance().create(url.scheme(), this); - if (!m_downloader) { - emitFinishedWithError(InvalidUrl, tr("URL scheme not supported: %1 (%2).") - .arg(url.scheme(), url.toString())); - return; - } - - QAuthenticator auth; - auth.setUser(m_repository.username()); - auth.setPassword(m_repository.password()); - m_downloader->setAuthenticator(auth); - - connect(m_downloader, SIGNAL(downloadCompleted()), this, SLOT(downloadCompleted())); - connect(m_downloader, SIGNAL(downloadAborted(QString)), this, SLOT(downloadAborted(QString)), - Qt::QueuedConnection); - connect(m_downloader, SIGNAL(authenticatorChanged(QAuthenticator)), this, - SLOT(onAuthenticatorChanged(QAuthenticator))); - - m_downloader->setAutoRemoveDownloadedFile(true); - m_downloader->setUrl(QUrl(url.toString() + QString::fromLatin1("/Updates.xml"))); - - m_downloader->download(); -} - -void TestRepository::doCancel() -{ - if (m_downloader) { - QString errorString = m_downloader->errorString(); - if (errorString.isEmpty()) - errorString = tr("Got a timeout while testing: '%1'").arg(m_repository.displayname()); - // at the moment the download sends downloadCompleted() if we cancel it, so just - disconnect(m_downloader, 0, this, 0); - m_downloader->cancelDownload(); - emitFinishedWithError(KDJob::Canceled, errorString); - } -} - -void TestRepository::downloadCompleted() -{ - QString errorMsg; - int error = DownloadError; - - if (m_downloader->isDownloaded()) { - QFile file(m_downloader->downloadedFileName()); - if (file.exists() && file.open(QIODevice::ReadOnly)) { - QDomDocument doc; - QString errorMsg; - if (!doc.setContent(&file, &errorMsg)) { - error = InvalidUpdatesXml; - errorMsg = tr("Could not parse Updates.xml! Error: %1.").arg(errorMsg); - } else { - error = NoError; - } - } else { - errorMsg = tr("Updates.xml could not be opened for reading!"); - } - } else { - errorMsg = tr("Updates.xml could not be found on server!"); - } - - if (error > NoError) - emitFinishedWithError(error, errorMsg); - else - emitFinished(); - - m_downloader->deleteLater(); - m_downloader = 0; -} - -void TestRepository::downloadAborted(const QString &reason) -{ - emitFinishedWithError(DownloadError, reason); -} - -void TestRepository::onAuthenticatorChanged(const QAuthenticator &authenticator) -{ - m_repository.setUsername(authenticator.user()); - m_repository.setPassword(authenticator.password()); -} - - // -- PasswordDelegate void PasswordDelegate::showPasswords(bool show) @@ -576,6 +450,6 @@ void SettingsDialog::insertRepositories(const QSet<Repository> repos, QTreeWidge foreach (const Repository &repo, repos) { RepositoryItem *item = new RepositoryItem(repo); rootItem->addChild(item); - item->setHidden(!ProductKeyCheck::instance(m_core)->isValidRepository(repo)); + item->setHidden(!ProductKeyCheck::instance()->isValidRepository(repo)); } } diff --git a/src/sdk/settingsdialog.h b/src/sdk/settingsdialog.h index 1a6633c67..a2386acbb 100644 --- a/src/sdk/settingsdialog.h +++ b/src/sdk/settingsdialog.h @@ -43,8 +43,7 @@ #include <repository.h> #include <settings.h> - -#include <kdjob.h> +#include <testrepository.h> #include <QDialog> #include <QStyledItemDelegate> @@ -56,10 +55,6 @@ class QLocale; class QVariant; QT_END_NAMESPACE -namespace KDUpdater { - class FileDownloader; -} - namespace QInstaller { class PackageManagerCore; } @@ -68,36 +63,6 @@ namespace Ui { class SettingsDialog; } - -// -- TestRepositoryJob - -class TestRepository : public KDJob -{ - Q_OBJECT - -public: - - explicit TestRepository(QObject *parent = 0); - ~TestRepository(); - - QInstaller::Repository repository() const; - void setRepository(const QInstaller::Repository &repository); - -private: - void doStart(); - void doCancel(); - -private Q_SLOTS: - void downloadCompleted(); - void downloadAborted(const QString &reason); - void onAuthenticatorChanged(const QAuthenticator &authenticator); - -private: - QInstaller::Repository m_repository; - KDUpdater::FileDownloader *m_downloader; -}; - - // -- PasswordDelegate class PasswordDelegate : public QStyledItemDelegate @@ -177,7 +142,7 @@ private: QInstaller::PackageManagerCore *m_core; bool m_showPasswords; - TestRepository m_testRepository; + QInstaller::TestRepository m_testRepository; QList<QTreeWidgetItem*> m_rootItems; }; diff --git a/src/sdk/tabcontroller.cpp b/src/sdk/tabcontroller.cpp index 770ea8007..d0e322251 100644 --- a/src/sdk/tabcontroller.cpp +++ b/src/sdk/tabcontroller.cpp @@ -124,10 +124,6 @@ void TabController::setManagerParams(const QHash<QString, QString> ¶ms) int TabController::init() { - if (!ProductKeyCheck::instance()->hasValidKey() && d->m_core->isInstaller()) { - return PackageManagerCore::Failure; - } - if (!d->m_init) { d->m_init = true; // this should called as early as possible, to handle error message boxes for example @@ -200,9 +196,9 @@ void TabController::onSettingsButtonClicked() void TabController::onCurrentIdChanged(int newId) { - if (d->m_gui && d->m_core) { - d->m_gui->showSettingsButton((newId == PackageManagerCore::Introduction) & - (!d->m_core->isOfflineOnly()) & (!d->m_core->isUninstaller())); + if (d->m_gui) { + if (PackageManagerPage *page = d->m_gui->page(newId)) + d->m_gui->showSettingsButton(page->settingsButtonRequested()); } } diff --git a/src/sdk/translations/de_de.ts b/src/sdk/translations/de_de.ts index c042c4990..006e71b4e 100644 --- a/src/sdk/translations/de_de.ts +++ b/src/sdk/translations/de_de.ts @@ -2119,8 +2119,8 @@ Bitte kopieren Sie den Installer auf ein lokales Laufwerk</translation> <context> <name>QInstaller::PerformInstallationPage</name> <message> - <location filename="../../libs/installer/packagemanagergui.cpp" line="1728"/> - <source>&Uninstall</source> + <location filename="../../libs/installer/packagemanagergui.cpp" line="1722"/> + <source>U&ninstall</source> <translation>&Deinstallieren</translation> </message> <message> diff --git a/src/sdk/translations/en_us.ts b/src/sdk/translations/en_us.ts index 330f5f394..a5d636a2c 100644 --- a/src/sdk/translations/en_us.ts +++ b/src/sdk/translations/en_us.ts @@ -1902,7 +1902,7 @@ Please copy the installer to a local drive</source> <name>QInstaller::PerformInstallationPage</name> <message> <location filename="../../libs/installer/packagemanagergui.cpp" line="1733"/> - <source>&Uninstall</source> + <source>U&ninstall</source> <translation type="unfinished"></translation> </message> <message> diff --git a/src/sdk/translations/ja_jp.ts b/src/sdk/translations/ja_jp.ts index 6af882705..3303cfd10 100644 --- a/src/sdk/translations/ja_jp.ts +++ b/src/sdk/translations/ja_jp.ts @@ -153,56 +153,44 @@ <translation> - 残り時間: 不明。</translation> </message> <message> - <source> of </source> - <translation> / </translation> + <source>%1 of %2</source> + <translation>%1 / %2</translation> </message> <message> - <source> downloaded.</source> - <translation> ダウンロードしました。</translation> + <source>%1 downloaded.</source> + <translation>%1 ダウンロードしました。</translation> </message> <message> - <source>/sec</source> - <translation>/秒</translation> + <source>(%1/sec)</source> + <translation>(%1/秒)</translation> </message> - <message> - <source> day</source> - <translation>日</translation> - </message> - <message> - <source> days</source> - <translation>日</translation> - </message> - <message> - <source> hour</source> - <translation>時間</translation> - </message> - <message> - <source> hours</source> - <translation>時間</translation> - </message> - <message> - <source> minute</source> - <translation>分</translation> - </message> - <message> - <source> minutes</source> - <translation>分</translation> + <message numerus="yes"> + <source>%n day(s), </source> + <translation> + <numerusform>%n 日 </numerusform> + </translation> </message> - <message> - <source> second</source> - <translation> 秒</translation> + <message numerus="yes"> + <source>%n hour(s), </source> + <translation> + <numerusform>%n 時間 </numerusform> + </translation> </message> - <message> - <source> seconds</source> - <translation> 秒</translation> + <message numerus="yes"> + <source>%n minute(s)</source> + <translation> + <numerusform>%n 分 </numerusform> + </translation> </message> - <message> - <source> - </source> - <translation> - </translation> + <message numerus="yes"> + <source>%n second(s)</source> + <translation> + <numerusform>%n 秒 </numerusform> + </translation> </message> <message> - <source> remaining.</source> - <translation>の残り時間。</translation> + <source> - %1%2%3%4 remaining.</source> + <translation>- 残り時間 %1%2%3%4。</translation> </message> </context> <context> @@ -446,9 +434,11 @@ <source>Application updates computed.</source> <translation>アプリケーションに更新を適用しました。</translation> </message> - <message> - <source>%1 updates found.</source> - <translation>%1個の更新が見つかりました。</translation> + <message numerus="yes"> + <source>%n update(s) found.</source> + <translation> + <numerusform>%n個の更新が見つかりました。</numerusform> + </translation> </message> </context> <context> @@ -528,6 +518,45 @@ </message> </context> <context> + <name>QInstaller</name> + <message> + <source>bytes</source> + <translation>バイト</translation> + </message> + <message> + <source>KiB</source> + <translation>KB</translation> + </message> + <message> + <source>MiB</source> + <translation>MB</translation> + </message> + <message> + <source>GiB</source> + <translation>GB</translation> + </message> + <message> + <source>TiB</source> + <translation>TB</translation> + </message> + <message> + <source>PiB</source> + <translation>PB</translation> + </message> + <message> + <source>EiB</source> + <translation>EB</translation> + </message> + <message> + <source>ZiB</source> + <translation>ZB</translation> + </message> + <message> + <source>YiB</source> + <translation>YB</translation> + </message> +</context> +<context> <name>QInstaller::AddQtCreatorArrayValueOperation</name> <message> <source>exactly 4</source> @@ -585,11 +614,11 @@ <translation>更新情報: </translation> </message> <message> - <source>Can't resolve isAutoDependOn in %1</source> + <source>Cannot resolve isAutoDependOn in %1</source> <translation>%1 の isAutoDependOn を解決できません</translation> </message> <message> - <source>Can't resolve isDefault in %1</source> + <source>Cannot resolve isDefault in %1</source> <translation>%1 の isDefault を解決できません</translation> </message> </context> @@ -1210,11 +1239,11 @@ Error while loading %2</source> <translation>与えられた引数のうち、少なくとも一つが空です。引数1=%1, 引数2=%2, 引数3=%3</translation> </message> <message> - <source>Can't invoke otool. Is Xcode installed?</source> + <source>Cannot invoke otool. Is Xcode installed?</source> <translation>otool を起動できません。Xcode はインストールされていますか?</translation> </message> <message> - <source>Can't start process %0.</source> + <source>Cannot start process %0.</source> <translation>プロセス %0 を起動できません。</translation> </message> </context> @@ -1569,8 +1598,8 @@ Please copy the installer to a local drive</source> <translation>%1のインストール</translation> </message> <message> - <source>&Uninstall</source> - <translation>アンインストール(&U)</translation> + <source>U&ninstall</source> + <translation>アンインストール(&N)</translation> </message> </context> <context> @@ -1709,33 +1738,6 @@ Qt のバイナリにパッチを適用しようとしましたが、Qt の他 </message> </context> <context> - <name>QInstaller::RegisterDefaultDebuggerOperation</name> - <message> - <source>Invalid arguments in %0: %1 arguments given, 2 expected.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは2個です。</translation> - </message> - <message> - <source>Needed installer object in "%1" operation is empty.</source> - <translation>"%1" のインストーラ作成に必要な操作が見つかりません。</translation> - </message> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>exactly 2</source> - <translation>2個</translation> - </message> - <message> - <source>There is no value set for %1 on the installer object.</source> - <translation>インストーラの %1 用に値が設定されていません。</translation> - </message> - <message> - <source>Can't read from tool chains xml file(%1) correctly.</source> - <translation>ツールチェイン XML ファイル(%1) を正常に読み込むことができません。</translation> - </message> -</context> -<context> <name>QInstaller::RegisterFileTypeOperation</name> <message> <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> @@ -1751,64 +1753,6 @@ Qt のバイナリにパッチを適用しようとしましたが、Qt の他 </message> </context> <context> - <name>QInstaller::RegisterQtInCreatorQNXOperation</name> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>at least 5</source> - <translation>少なくとも5個</translation> - </message> - <message> - <source>Needed installer object in "%1" operation is empty.</source> - <translation>"%1" のインストーラ作成に必要な操作が見つかりません。</translation> - </message> - <message> - <source>There is no value set for %1 on the installer object.</source> - <translation>インストーラの %1 用に値が設定されていません。</translation> - </message> - <message> - <source>Invalid arguments in %0: %1 arguments given, minimum 4 expected.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは少なくとも4個です。</translation> - </message> -</context> -<context> - <name>QInstaller::RegisterToolChainOperation</name> - <message> - <source>at least 4</source> - <translation>少なくとも4個</translation> - </message> - <message> - <source>Needed installer object in '%1' operation is empty.</source> - <translation>'%1' のインストーラ作成に必要な操作が見つかりません。</translation> - </message> - <message> - <source>There is no value set for '%1' on the installer object.</source> - <translation>インストーラの %1 用に値が設定されていません。</translation> - </message> - <message> - <source>Invalid arguments in %0: %1 arguments given, minimum 4 expected.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは少なくとも4個です。</translation> - </message> - <message> - <source>Needed installer object in "%1" operation is empty.</source> - <translation>"%1" のインストーラ作成に必要な操作が見つかりません。</translation> - </message> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>Some arguments are not right in %1 operation.</source> - <translation>いくつかの引数が %1 の操作には正しくありません。</translation> - </message> - <message> - <source>Can't read from tool chains xml file(%1) correctly.</source> - <translation>ツールチェイン XML ファイル(%1) を正常に読み込むことができません。</translation> - </message> -</context> -<context> <name>QInstaller::ReplaceOperation</name> <message> <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> @@ -1861,109 +1805,6 @@ Qt のバイナリにパッチを適用しようとしましたが、Qt の他 </message> </context> <context> - <name>QInstaller::SetDemosPathOnQtOperation</name> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>exactly 2</source> - <translation>2個</translation> - </message> - <message> - <source>The output of -'%1 -query' -is not parseable. Please file a bugreport with this dialog at https://bugreports.qt-project.org. -output: %2</source> - <translation>以下の出力がパースできません。 -%1 -query -このダイアログから https://bugreports.qt-project.org へバグ報告をしてください。 -出力: "%2"</translation> - </message> - <message> - <source>Qt patch error: new Qt demo path '%1' -needs to be less than 255 characters.</source> - <translation>Qt パッチエラー: 新しい Qt デモのパス '%1' -は255文字以下である必要があります。</translation> - </message> -</context> -<context> - <name>QInstaller::SetExamplesPathOnQtOperation</name> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>exactly 2</source> - <translation>2個</translation> - </message> - <message> - <source>The output of -'%1 -query' -is not parseable. Please file a bugreport with this dialog at https://bugreports.qt-project.org. -output: %2</source> - <translation>以下の出力がパースできません。 -%1 -query -このダイアログから https://bugreports.qt-project.org へバグ報告をしてください。 -出力: "%2"</translation> - </message> - <message> - <source>Qt patch error: new Qt example path '%1' -needs to be less than 255 characters.</source> - <translation>Qt パッチエラー: 新しい Qt サンプルのパス '%1' -は255文字以下である必要があります。</translation> - </message> -</context> -<context> - <name>QInstaller::SetImportsPathOnQtCoreOperation</name> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>exactly 2</source> - <translation>2個</translation> - </message> - <message> - <source>Qt patch error: new Qt imports path '%1' -needs to be less than 255 characters.</source> - <translation>Qt パッチエラー: 新しい Qt の import パス '%1' -は255文字以下である必要があります。</translation> - </message> -</context> -<context> - <name>QInstaller::SetPathOnQtCoreOperation</name> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>exactly 3</source> - <translation>3個</translation> - </message> - <message> - <source>The second type/value needs to be one of: %1</source> - <translation>二番目の引数の型あるいは値は右記のいずれかである必要があります: %1</translation> - </message> -</context> -<context> - <name>QInstaller::SetPluginPathOnQtCoreOperation</name> - <message> - <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> - <translation>%0 に無効な引数: %1個の引数が渡されましたが、必要なのは%2です%3。</translation> - </message> - <message> - <source>exactly 2</source> - <translation>2個</translation> - </message> - <message> - <source>Qt patch error: new Qt plugin path '%1' -needs to be less than 255 characters.</source> - <translation>Qt パッチエラー: 新しい Qt のプラグインパス '%1' -は255文字以下である必要があります。</translation> - </message> -</context> -<context> <name>QInstaller::SetQtCreatorValueOperation</name> <message> <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> @@ -1991,6 +1832,17 @@ needs to be less than 255 characters.</source> </message> </context> <context> + <name>QInstaller::SettingsOperation</name> + <message> + <source>Missing argument(s) '%1' calling '%2' with arguments '%3'.</source> + <translation>'%2' を引数 '%3' で呼び出しましたが、'%1' の引数が不足しています。</translation> + </message> + <message> + <source>Current method argument calling '%1' with arguments '%2' is not supported. Please use set, remove, add_array_value or remove_array_value.</source> + <translation>'%1' の呼び出し時に method 引数の値として '%2' はサポートされていません。set, remove, add_array_value, remove_array_value を使用してください。</translation> + </message> +</context> +<context> <name>QInstaller::SimpleMoveFileOperation</name> <message> <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source> @@ -2073,6 +1925,33 @@ needs to be less than 255 characters.</source> </message> </context> <context> + <name>QInstaller::TestRepository</name> + <message> + <source>Empty repository URL.</source> + <translation>リポジトリの URL が空です。</translation> + </message> + <message> + <source>URL scheme not supported: %1 (%2).</source> + <translation>この URL スキームはサポートしてません: %1 (%2)</translation> + </message> + <message> + <source>Got a timeout while testing: '%1'</source> + <translation>テスト中にタイムアウトが発生しました: '%1'</translation> + </message> + <message> + <source>Could not parse Updates.xml! Error: %1.</source> + <translation>Updates.xml を解析できませんでした! エラー: %1</translation> + </message> + <message> + <source>Updates.xml could not be opened for reading!</source> + <translation>読み込み用に Updates.xml を開けませんでした!</translation> + </message> + <message> + <source>Updates.xml could not be found on server!</source> + <translation>サーバ上に Updates.xml が見つかりませんでした!</translation> + </message> +</context> +<context> <name>QInstallerCreator::Archive</name> <message> <source>Could not create %1: %2</source> @@ -2094,22 +1973,10 @@ needs to be less than 255 characters.</source> <context> <name>QObject</name> <message> - <source>Searched whole file, no marker found</source> - <translation>ファイル全体を検索しましたが、マーカーが見つかりませんでした</translation> - </message> - <message> - <source>Could not seek to %1 in file %2: %3</source> - <translation>ファイル %2 の %1 へシークできませんでした: %3</translation> - </message> - <message> <source>No marker found, stopped after %1.</source> <translation>マーカーが見つからなかったため、%1 で停止しました。</translation> </message> <message> - <source>No marker found, unknown exception caught.</source> - <translation>マーカーが見つかりませんでした。未知の例外が発生しました。</translation> - </message> - <message> <source>Cannot create zipped file for path %1: %2</source> <translation>%1 に ZIP ファイルを作成できませんでした: %2</translation> </message> @@ -2194,10 +2061,6 @@ needs to be less than 255 characters.</source> <translation>テンプレート %1 用の一時ファイルを開けませんでした: %2</translation> </message> <message> - <source>Could not create temporary folder for template %1: %2</source> - <translation>テンプレート %1 用の一時フォルダを作成できませんでした: %2</translation> - </message> - <message> <source>Could not create lock file %1: %2</source> <translation>ロックファイル %1 を作成できませんでした: %2</translation> </message> @@ -2446,11 +2309,19 @@ needs to be less than 255 characters.</source> <translation>続行するにはこれらのプロセスを終了してください: %1</translation> </message> <message> - <source>Couldn't get authorization.</source> + <source>Could not create temporary directory at %1: %2</source> + <translation>テンプレート用の一時ディレクトリを %1 に作成できませんでした: %2</translation> + </message> + <message> + <source>Could not create temporary directory at %1: unknown error</source> + <translation>テンプレート用の一時フォルダを %1 に作成できませんでした: 未知のエラー</translation> + </message> + <message> + <source>Could not get authorization.</source> <translation>認証することができませんでした。</translation> </message> <message> - <source>Couldn't get authorization that is needed for continuing the installation. + <source>Could not get authorization that is needed for continuing the installation. Either abort the installation or use the fallback solution by running %1 as root and then clicking ok.</source> @@ -2459,6 +2330,10 @@ as root and then clicking ok.</source> %1 を実行した後に「OK」をクリックしてください。</translation> </message> + <message> + <source>Failed to seek in file %1. Reason: %2.</source> + <translation>ファイル %1 のシークに失敗しました: %2</translation> + </message> </context> <context> <name>Settings</name> @@ -2467,4 +2342,231 @@ as root and then clicking ok.</source> <translation>読み込み用に設定ファイル %1 を開けませんでした: %2</translation> </message> </context> +<context> + <name>SettingsDialog</name> + <message> + <source>Settings</source> + <translation>設定</translation> + </message> + <message> + <source>Network</source> + <translation>ネットワーク</translation> + </message> + <message> + <source>No proxy</source> + <translation>プロキシを使用しない</translation> + </message> + <message> + <source>System proxy settings</source> + <translation>システムのプロキシ設定を使用する</translation> + </message> + <message> + <source>Manual proxy configuration</source> + <translation>手動でプロキシを設定する</translation> + </message> + <message> + <source>HTTP proxy:</source> + <translation>HTTP プロキシ:</translation> + </message> + <message> + <source>Port:</source> + <translation>ポート:</translation> + </message> + <message> + <source>HTTP proxy requires authentication</source> + <translation>HTTP プロキシで認証が必要</translation> + </message> + <message> + <source>Username:</source> + <translation>ユーザ名:</translation> + </message> + <message> + <source>Password:</source> + <translation>パスワード:</translation> + </message> + <message> + <source>FTP proxy:</source> + <translation>FTP プロキシ:</translation> + </message> + <message> + <source>FTP proxy requires authentication</source> + <translation>FTP プロキシで認証が必要</translation> + </message> + <message> + <source>Repositories</source> + <translation>リポジトリ</translation> + </message> + <message> + <source>Add Username and Password for authentication if needed.</source> + <translation>認証が必要な場合はユーザ名とパスワードを記述してください。</translation> + </message> + <message> + <source>Use temporary repositories only</source> + <translation>一時リポジトリのみを使用する</translation> + </message> + <message> + <source>Add</source> + <translation>追加</translation> + </message> + <message> + <source>Remove</source> + <translation>削除</translation> + </message> + <message> + <source>Test</source> + <translation>テスト</translation> + </message> + <message> + <source>Show Passwords</source> + <translation>パスワードを表示する</translation> + </message> + <message> + <source>Check this to use repository during fetch.</source> + <translation>このリポジトリの内容を取得する場合はチェックしてください。</translation> + </message> + <message> + <source>Add the username to authenticate on the server.</source> + <translation>サーバでの認証用ユーザ名を追加してください。</translation> + </message> + <message> + <source>Add the password to authenticate on the server.</source> + <translation>サーバでの認証用パスワードを追加してください。</translation> + </message> + <message> + <source>The servers URL that contains a valid repository.</source> + <translation>有効なリポジトリを含むサーバのURLです。</translation> + </message> + <message> + <source>There was an error testing this repository.</source> + <translation>このリポジトリのテスト中にエラーが発生しました。</translation> + </message> + <message> + <source>Do you want to disable the tested repository?</source> + <translation>このテスト済みリポジトリを無効にしますか?</translation> + </message> + <message> + <source>Hide Passwords</source> + <translation>パスワードを隠す</translation> + </message> + <message> + <source>Use</source> + <translation>利用</translation> + </message> + <message> + <source>Username</source> + <translation>ユーザ名</translation> + </message> + <message> + <source>Password</source> + <translation>パスワード</translation> + </message> + <message> + <source>Repository</source> + <translation>リポジトリ</translation> + </message> + <message> + <source>Default repositories</source> + <translation>デフォルトリポジトリ</translation> + </message> + <message> + <source>Temporary repositories</source> + <translation>一時リポジトリ</translation> + </message> + <message> + <source>User defined repositories</source> + <translation>ユーザ定義リポジトリ</translation> + </message> +</context> +<context> + <name>IntroductionPageImpl</name> + <message> + <source>Package manager</source> + <translation>パッケージマネージャ</translation> + </message> + <message> + <source>Update components</source> + <translation>コンポーネントの更新</translation> + </message> + <message> + <source>Remove all components</source> + <translation>すべてのコンポーネントの削除</translation> + </message> + <message> + <source>Retrieving information from remote installation sources...</source> + <translation>リモートのインストール元から情報を取得しています...</translation> + </message> + <message> + <source>At least one valid and enabled repository required for this action to succeed.</source> + <translation>このアクションの実行にはひとつ以上の有効なリポジトリが必要です。</translation> + </message> + <message> + <source>No updates available.</source> + <translation>新しい更新はありません。</translation> + </message> + <message> + <source> Only local package management available.</source> + <translation> ローカルのパッケージ管理のみ利用できます。</translation> + </message> + <message> + <source>Quit</source> + <translation>終了</translation> + </message> +</context> +<context> + <name>TargetDirectoryPageImpl</name> + <message> + <source>The installation path cannot be empty, please specify a valid folder.</source> + <translation>インストール先のパスは空にできません。有効なフォルダを指定してください。</translation> + </message> + <message> + <source>The installation path cannot be relative, please specify an absolute path.</source> + <translation>インストール先のパスに相対パスは使用できません。絶対パスで指定してください。</translation> + </message> + <message> + <source>The path you have entered is too long, please make sure to specify a valid path.</source> + <translation>入力したパスが長すぎます。有効なパスかどうか確認してください。</translation> + </message> + <message> + <source>The path you have entered is not valid, please make sure to specify a valid drive.</source> + <translation>入力したパスは無効です。有効なドライブかどうか確認してください。</translation> + </message> + <message> + <source>The installation path must not contain %1, please specify a valid folder.</source> + <translation>インストール先のパスに %1 は使用できません。有効なフォルダを指定してください。</translation> + </message> + <message> + <source>The path or installation directory contains non ASCII characters. This is currently not supported! Please choose a different path or installation directory.</source> + <translation>インストール先のディレクトリあるいはそれまでのパスに非 ASCII 文字が含まれています。そのようなパスへのインストールはサポートされていません。別のディレクトリあるいはパスを選択してください。</translation> + </message> + <message> + <source>Warning</source> + <translation>警告</translation> + </message> + <message> + <source>Error</source> + <translation>エラー</translation> + </message> + <message> + <source>As the install directory is completely deleted installing in %1 is forbidden.</source> + <translation>インストールしたディレクトリはアンインストール時に完全に削除されるため、%1 へのインストールは許可できません。</translation> + </message> + <message> + <source>The folder you selected already exists and contains an installation. Choose a different target for installation.</source> + <translation>選択されたフォルダは既に存在し、インストール済みです。他のインストール先を選択してください。</translation> + </message> + <message> + <source>You have selected an existing, non-empty folder for installation. +Note that it will be completely wiped on uninstallation of this application. +It is not advisable to install into this folder as installation might fail. +Do you want to continue?</source> + <translation>既存の空ではないフォルダをインストール先に選択しました。 +このアプリケーションをアンインストールする時にはこのフォルダすべてが消去されることに注意してください。 +このフォルダへのインストールは失敗する可能性もあり推奨されません。 +インストールを継続しますか?</translation> + </message> + <message> + <source>You have selected an existing file or symlink, please choose a different target for installation.</source> + <translation>既存のファイルあるいはシンボリックリンクを選択しました。他のインストール先を選択してください。</translation> + </message> +</context> </TS> diff --git a/src/sdk/translations/ru_ru.ts b/src/sdk/translations/ru_ru.ts index 65c35d62a..f7fcf2917 100644 --- a/src/sdk/translations/ru_ru.ts +++ b/src/sdk/translations/ru_ru.ts @@ -1921,7 +1921,7 @@ Please copy the installer to a local drive</source> <name>QInstaller::PerformInstallationPage</name> <message> <location filename="../../libs/installer/packagemanagergui.cpp" line="1733"/> - <source>&Uninstall</source> + <source>U&ninstall</source> <translation>&Удалить</translation> </message> <message> diff --git a/src/sdk/translations/sv_se.ts b/src/sdk/translations/sv_se.ts index 4dafb0cac..c6557cdab 100644 --- a/src/sdk/translations/sv_se.ts +++ b/src/sdk/translations/sv_se.ts @@ -1815,7 +1815,7 @@ Installing component %1</source> <name>QInstaller::PerformInstallationPage</name> <message> <location filename="../../libinstaller/packagemanagergui.cpp" line="1776"/> - <source>&Uninstall</source> + <source>U&ninstall</source> <translation type="unfinished"></translation> </message> <message> diff --git a/src/sdk/translations/zh_cn.ts b/src/sdk/translations/zh_cn.ts index 58acbd106..022d368ec 100644 --- a/src/sdk/translations/zh_cn.ts +++ b/src/sdk/translations/zh_cn.ts @@ -1606,7 +1606,7 @@ Please copy the installer to a local drive</source> <context> <name>QInstaller::PerformInstallationPage</name> <message> - <source>&Uninstall</source> + <source>U&ninstall</source> <translation>卸载(&U)</translation> </message> <message> |