// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "browser.h" #include #include #include void addConnectionsFromCommandline(const QStringList &args, Browser *browser) { for (int i = 1; i < args.count(); ++i) { QUrl url(args.at(i), QUrl::TolerantMode); if (!url.isValid()) { qWarning("Invalid URL: %s", qPrintable(args.at(i))); continue; } QSqlError err = browser->addConnection(url.scheme(), url.path().mid(1), url.host(), url.userName(), url.password(), url.port(-1)); if (err.type() != QSqlError::NoError) qDebug() << "Unable to open connection:" << err; } } int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow mainWin; mainWin.setWindowTitle(QObject::tr("Qt SQL Browser")); Browser browser(&mainWin); mainWin.setCentralWidget(&browser); QMenu *fileMenu = mainWin.menuBar()->addMenu(QObject::tr("&File")); fileMenu->addAction(QObject::tr("Add &Connection..."), [&]() { browser.addConnection(); }); fileMenu->addSeparator(); fileMenu->addAction(QObject::tr("&Quit"), []() { qApp->quit(); }); QMenu *helpMenu = mainWin.menuBar()->addMenu(QObject::tr("&Help")); helpMenu->addAction(QObject::tr("About"), [&]() { browser.about(); }); helpMenu->addAction(QObject::tr("About Qt"), []() { qApp->aboutQt(); }); QObject::connect(&browser, &Browser::statusMessage, [&mainWin](const QString &text) { mainWin.statusBar()->showMessage(text); }); addConnectionsFromCommandline(app.arguments(), &browser); mainWin.show(); if (QSqlDatabase::connectionNames().isEmpty()) QMetaObject::invokeMethod(&browser, "addConnection", Qt::QueuedConnection); return app.exec(); }