void login::sLogin() { QSqlDatabase db; // Open the Database Driver if (_splash) { _splash->show(); _splash->showMessage(tr("Initializing the Database Connector")); qApp->processEvents(); } QString databaseURL; databaseURL = _databaseURL; QString protocol; QString hostName; QString dbName; QString port; db = databaseFromURL( databaseURL ); if (!db.isValid()) { QMessageBox::warning( this, tr("No Database Driver"), /*tr( "A connection could not be established with the specified\n" "Database as the Proper Database Drivers have not been installed.\n" "Contact your Systems Administrator.\n" )*/db.driverName()); if (_splash) _splash->hide(); return; } // Try to connect to the Database _cUsername = _username->text().trimmed(); _cPassword = _password->text().trimmed(); db.setUserName(_cUsername); db.setPassword(_cPassword); setCursor(QCursor(Qt::WaitCursor)); if (_splash) { _splash->showMessage(tr("Connecting to the Database")); qApp->processEvents(); } bool result = db.open(); if (!result) { if (_splash) _splash->hide(); setCursor(QCursor(Qt::ArrowCursor)); QMessageBox::critical( this, tr("Cannot Connect to Database Server"), tr( "A connection to the specified Database Server cannot be made. This may be due to an\n" "incorrect Username and/or Password or that the Database Server in question cannot\n" "support anymore connections.\n\n" "Please verify your Username and Password and try again or wait until the specified\n" "Database Server is less busy.\n\n" "System Error '%1'\n%2" ).arg(db.lastError().text(), db.lastError().driverText())); if (!_captive) { _username->setText(""); _username->setFocus(); } else _password->setFocus(); _password->setText(""); return; } if (_splash) { _splash->showMessage(tr("Logging into the Database")); qApp->processEvents(); } setCursor(QCursor(Qt::ArrowCursor)); accept(); }
int main(int argc, char *argv[]) { QString username = ""; bool haveUsername = false; bool haveDatabaseURL = false; OpenRPT::loggedIn = false; OpenRPT::databaseURL = ""; #if defined Q_WS_WIN OpenRPT::name = QObject::tr("MetaSQL Editor for Windows"); #elif defined Q_WS_X11 OpenRPT::name = QObject::tr("MetaSQL Editor for Linux"); #elif defined Q_WS_MAC OpenRPT::name = QObject::tr("MetaSQL Editor for OS X"); #else OpenRPT::name = QObject::tr("MetaSQL Editor"); #endif QApplication app(argc, argv); app.addLibraryPath("."); if (argc > 1) { haveUsername = false; bool havePasswd = false; QString passwd = ""; for (int intCounter = 1; intCounter < argc; intCounter++) { QString argument(argv[intCounter]); if (argument.contains("-databaseURL=")) { haveDatabaseURL = true; OpenRPT::databaseURL = argument.right(argument.length() - 13); } else if (argument.contains("-username="******"-passwd=")) { havePasswd = true; passwd = argument.right(argument.length() - 8); } else if (argument.contains("-noAuth")) { haveUsername = true; havePasswd = true; } } if ( (haveDatabaseURL) && (haveUsername) && (havePasswd) ) { QSqlDatabase db = databaseFromURL(OpenRPT::databaseURL); if (!db.isValid()) { QMessageBox::critical(0, QObject::tr("Can not load database driver"), QObject::tr("Unable to load the database driver. Please contact your systems administrator.")); QApplication::exit(-1); } db.setUserName(username); db.setPassword(passwd); if (!db.open()) { QMessageBox::critical(0, QObject::tr("Unable to connect to database"), QObject::tr("Unable to connect to the database with the given information.")); QApplication::exit(-1); } else OpenRPT::loggedIn = true; } } OpenRPT::languages.addTranslationToDefault(":/common.qm"); OpenRPT::languages.addTranslationToDefault(":/metasql.qm"); OpenRPT::languages.installSelected(); MQLEdit mainwin; mainwin.show(); QObject::connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit())); return app.exec(); }
int main(int argc, char *argv[]) { QString username = ""; bool haveUsername = FALSE; bool haveDatabaseURL = FALSE; bool loggedIn = FALSE; #if defined Q_WS_WIN OpenRPT::name = QObject::tr("MetaSQL Import Tool for Windows"); #elif defined Q_WS_X11 OpenRPT::name = QObject::tr("MetaSQL Import Tool for Linux"); #elif defined Q_WS_MAC OpenRPT::name = QObject::tr("MetaSQL Import Tool for OS X"); #else OpenRPT::name = QObject::tr("MetaSQL Import Tool"); #endif QString databaseURL = ""; QApplication app(argc, argv); app.addLibraryPath("."); if (argc > 1) { haveUsername = FALSE; bool havePasswd = FALSE; QString passwd = ""; for (int intCounter = 1; intCounter < argc; intCounter++) { QString argument(argv[intCounter]); if (argument.contains("-databaseURL=")) { haveDatabaseURL = TRUE; databaseURL = argument.right(argument.length() - 13); } else if (argument.contains("-username="******"-passwd=")) { havePasswd = TRUE; passwd = argument.right(argument.length() - 8); } else if (argument.contains("-noAuth")) { haveUsername = TRUE; havePasswd = TRUE; } } if ( (haveDatabaseURL) && (haveUsername) && (havePasswd) ) { QSqlDatabase db; QString protocol; QString hostName; QString dbName; QString port; db = databaseFromURL( databaseURL ); if (!db.isValid()) { QMessageBox::critical(0, QObject::tr("Can not load database driver"), QObject::tr("Unable to load the database driver. Please contact your systems administrator.")); QApplication::exit(-1); } db.setUserName(username); db.setPassword(passwd); if (!db.open()) { QMessageBox::critical(0, QObject::tr("Unable to connect to database"), QObject::tr("Unable to connect to the database with the given information.")); QApplication::exit(-1); } else loggedIn = TRUE; } } if(!loggedIn) { ParameterList params; params.append("name", OpenRPT::name); params.append("copyright", OpenRPT::copyright); params.append("version", OpenRPT::version); params.append("build", OpenRPT::build); if (haveUsername) params.append("username", username); if (haveDatabaseURL) params.append("databaseURL", databaseURL); login newdlg(0, "", TRUE); newdlg.set(params, 0); if (newdlg.exec() == QDialog::Rejected) return -1; } ImportWindow mainwin; mainwin.show(); return app.exec(); }
int main(int argc, char *argv[]) { QMap<QString,ParamPair> paramList; QString username = ""; QString filename; QString printerName; bool haveUsername = false; bool haveDatabaseURL = false; bool loggedIn = false; bool print = false; bool printPreview = false; bool close = false; bool autoPrint = false; //AUTOPRINT int numCopies = 1; // BVI::Sednacom // new options bool pdfOutput = false; QString pdfFileName; // BVI::Sednacom QString databaseURL = ""; QString loadFromDB = ""; QApplication app(argc, argv); app.addLibraryPath("."); OpenRPT::languages.addTranslationToDefault(":/common.qm"); OpenRPT::languages.addTranslationToDefault(":/wrtembed.qm"); OpenRPT::languages.addTranslationToDefault(":/renderer.qm"); OpenRPT::languages.addTranslationToDefault(":/renderapp.qm"); OpenRPT::languages.installSelected(); if (app.argc() > 1) { haveUsername = false; bool havePasswd = false; QString passwd = ""; QStringList arguments; QString firstArgument = QString( app.argv()[ 1 ] ); if( firstArgument.startsWith("-fromStdin=", Qt::CaseInsensitive) ){ QFile file; file.open(stdin, QIODevice::ReadOnly); QTextStream in(&file); in.setCodec( firstArgument.right( firstArgument.length() - 11 ).toLatin1() ); QString arg; while( arg.compare("-launch") !=0 ){ arg = in.readLine(); arguments << arg; } file.close(); } else{ for (int intCounter = 1; intCounter < app.argc(); intCounter++){ arguments << QString (app.argv()[intCounter]); } } for ( QStringList::Iterator it = arguments.begin(); it != arguments.end(); ++it ) { QString argument( *it ); if (argument.startsWith("-databaseURL=", Qt::CaseInsensitive)) { haveDatabaseURL = true; databaseURL = argument.right(argument.length() - 13); } else if (argument.startsWith("-username="******"-passwd=", Qt::CaseInsensitive)) { havePasswd = true; passwd = argument.right(argument.length() - 8); } else if (argument.toLower() == "-noauth") { haveUsername = true; havePasswd = true; } else if (argument.startsWith("-numCopies=", Qt::CaseInsensitive)){ numCopies = argument.right( argument.length() - 11).toInt(); } else if (argument.toLower() == "-print") print = true; else if (argument.toLower() == "-printpreview") printPreview = true; else if (argument.toLower() == "-close") close = true; else if (argument.startsWith("-printerName=", Qt::CaseInsensitive)) printerName = argument.right(argument.length() - 13); else if (argument.startsWith("-param=", Qt::CaseInsensitive)) { QString str = argument.right(argument.length() - 7); bool active = true; QString name; QString type; QString value; QVariant var; int sep = str.indexOf('='); if(sep == -1) name = str; else { name = str.left(sep); value = str.right(str.length() - (sep + 1)); } str = name; sep = str.indexOf(':'); if(sep != -1) { name = str.left(sep); type = str.right(str.length() - (sep + 1)); } if(name.startsWith("-")) { name = name.right(name.length() - 1); active = false; } else if(name.startsWith("+")) name = name.right(name.length() - 1); if(!value.isEmpty()) var = XVariant::decode(type, value); paramList[name] = ParamPair(active, var); } // BVI::Sednacom // manage new arguments for CLI else if (argument.startsWith("-pdf", Qt::CaseInsensitive)) { pdfOutput = true ; } else if (argument.startsWith("-outpdf=", Qt::CaseInsensitive)) { pdfFileName = argument.right(argument.length() - 8 ) ; } // BVI::Sednacom else if (argument.startsWith("-loadfromdb=", Qt::CaseInsensitive)) loadFromDB = argument.right(argument.length() - 12); else if (argument.toLower() == "-e") XSqlQuery::setNameErrorValue("Missing"); else if (argument.toLower() == "-autoprint"){ //AUTOPRINT print=true; //Auto print means they want to print. autoPrint=true; } else if(!argument.startsWith("-")) filename = argument; } if ( (haveDatabaseURL) && (haveUsername) && (havePasswd) ) { QSqlDatabase db; QString protocol; QString hostName; QString dbName; QString port; db = databaseFromURL( databaseURL ); if (!db.isValid()) { QMessageBox::critical(0, QObject::tr("Can not load database driver"), QObject::tr("Unable to load the database driver. Please contact your systems administrator.")); QApplication::exit(-1); } db.setUserName(username); db.setPassword(passwd); if (!db.open()) { QMessageBox::critical(0, QObject::tr("Unable to connect to database"), QObject::tr("Unable to connect to the database with the given information.")); QApplication::exit(-1); } else loggedIn = true; } } if(!loggedIn) { ParameterList params; params.append("name", RenderWindow::name()); params.append("copyright", OpenRPT::copyright); params.append("version", OpenRPT::version); params.append("build", OpenRPT::build); if (haveUsername) params.append("username", username); if (haveDatabaseURL) params.append("databaseURL", databaseURL); login newdlg(0, "", true); newdlg.set(params, 0); if (newdlg.exec() == QDialog::Rejected) return -1; } // The following is code that works specifically with the xTuple ERP database // This should be expanded to be usefull when not connecting to an xTuple ERP // database as well. Command line option maybe? XSqlQuery langq("SELECT * " "FROM usr, locale LEFT OUTER JOIN" " lang ON (locale_lang_id=lang_id) LEFT OUTER JOIN" " country ON (locale_country_id=country_id) " "WHERE ( (usr_username=CURRENT_USER)" " AND (usr_locale_id=locale_id) );" ); if (langq.first()) { QStringList paths; paths << "dict"; paths << ""; paths << "../dict"; paths << app.applicationDirPath() + "/dict"; paths << app.applicationDirPath(); paths << app.applicationDirPath() + "/../dict"; #if defined Q_WS_MACX paths << app.applicationDirPath() + "/../../../dict"; paths << app.applicationDirPath() + "/../../.."; #endif QStringList files; if (!langq.value("locale_lang_file").toString().isEmpty()) files << langq.value("locale_lang_file").toString(); QString langext; if (!langq.value("lang_abbr2").toString().isEmpty() && !langq.value("country_abbr").toString().isEmpty()) { langext = langq.value("lang_abbr2").toString() + "_" + langq.value("country_abbr").toString().toLower(); } else if (!langq.value("lang_abbr2").toString().isEmpty()) { langext = langq.value("lang_abbr2").toString(); } if(!langext.isEmpty()) { files << "reports." + langext; XSqlQuery pkglist("SELECT pkghead_name FROM pkghead WHERE packageIsEnabled(pkghead_name);"); while(pkglist.next()) { files << pkglist.value("pkghead_name").toString() + "." + langext; } } if (files.size() > 0) { QTranslator *translator = new QTranslator(&app); for (QStringList::Iterator fit = files.begin(); fit != files.end(); ++fit) { for(QStringList::Iterator pit = paths.begin(); pit != paths.end(); ++pit) { qDebug("looking for %s in %s", (*fit).toLatin1().data(), (*pit).toLatin1().data()); if (translator->load(*fit, *pit)) { app.installTranslator(translator); qDebug("installed %s/%s", (*pit).toLatin1().data(), (*fit).toLatin1().data()); translator = new QTranslator(&app); break; } } } } } // END language loading code RenderWindow mainwin; mainwin._printerName = printerName; mainwin._autoPrint = autoPrint; if(!filename.isEmpty()) mainwin.fileOpen(filename); if(!loadFromDB.isEmpty()) mainwin.fileLoad(loadFromDB); QMap<QString,ParamPair>::Iterator it; for ( it = paramList.begin(); it != paramList.end(); ++it ) { mainwin.updateParam(it.key(), it.value().second, it.value().first); } // BVI::Sednacom // do not display window for PDF output if (!pdfOutput && !autoPrint) mainwin.show(); // BVI::Sednacom if(print) mainwin.filePrint( numCopies ); if(printPreview) mainwin.filePreview( numCopies ); // BVI::Sednacom // generate the PDF if (pdfOutput) mainwin.filePrintToPDF(pdfFileName); // BVI::Sednacom if(close) { mainwin.fileExit(); return 0; } return app.exec(); }
int main(int argc, char *argv[]) { QCoreApplication application(argc, argv); application.addLibraryPath("."); QTextStream out(stdout, QIODevice::WriteOnly); if (argc > 1) { QString databaseURL; QString username; QString passwd; QString arguments; QString dbServer = QString::null; for (int counter = 1; counter < argc; counter++) { QString arguments(argv[counter]); if (arguments.startsWith("-databaseURL=", Qt::CaseInsensitive)) databaseURL = arguments.right(arguments.length() - 13); else if (arguments.startsWith("-username="******"-passwd=", Qt::CaseInsensitive)) passwd = arguments.right(arguments.length() - 8); else if (arguments.startsWith("-dbengine=", Qt::CaseInsensitive)) dbServer = arguments.right(arguments.length() - 10); } if ( (databaseURL != "") && (username != "") && (passwd != "") ) { QSqlDatabase db; QString protocol = QString::null; QString server = QString::null; QString database = QString::null; QString port = QString::null; // Note: parseDatabaseURL returns a default port of 5432 (Default Postgresql port) // is this a bug or a feature ? parseDatabaseURL(databaseURL, protocol, server, database, port); // treat odbc connections as a special case if ( protocol == "odbc") { if ( dbServer == QString::null ) { out << " database URL = " << databaseURL << endl; out << "Protocol=" << protocol << ", Host=" << server << ", Database=" << database << ", port=" << port << endl; out << "\"--dbengine=\" parameter required when url protocol is odbc" << endl; exit(EXIT_ERROR_MISSING_DB_ENGINE); } if (! isValidProtocol(dbServer, false) ) { out << "Unrecognised database server: [--dbengine=" << dbServer << "]" << endl; out << "Protocol=" << protocol << ", Host=" << server << ", Database=" << database << ", port=" << port << endl; exit(EXIT_ERROR_DB_ENGINE); } } // Open the Database Driver db = databaseFromURL( databaseURL ); if (!db.isValid()) { out << " database URL = " << databaseURL << endl; out << "Protocol=" << protocol << ", Host=" << server << ", Database=" << database << ", port=" << port << endl; out << "Could not load the specified database driver." << endl; exit(EXIT_ERROR_DB_DRIVER); } // Try to connect to the Database db.setUserName(username); db.setPassword(passwd); if (!db.open()) { out << "Protocol=" << protocol << ", Host=" << db.hostName() << ", Database=" << db.databaseName() << ", port=" << db.port() << endl; out << "Could not log into database. System Error: " << db.lastError().text() << endl; exit(EXIT_ERROR_DB_LOGIN); } if ( ! buildTable(db, out, dbServer) ) exit(EXIT_ERROR_DB_TABLE_BUILD); } else if (databaseURL == "") { out << "You must specify a Database URL by using the -databaseURL= parameter." << endl; exit(EXIT_ERROR_MISSING_URL); } else if (username == "") { out << "You must specify a Database Username by using the -username= parameter." << endl; exit(EXIT_ERROR_MISSING_USERNAME); } else if (passwd == "") { out << "You must specify a Database Password by using the -passwd= parameter." << endl; exit(EXIT_ERROR_MISSING_PASSWORD); } } else { out << "Usage: bldtbls -databaseURL='$' -username='******' -passwd='$' [-dbengine='$']" << endl; exit(EXIT_ERROR_BAD_ARGS); } return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { QCoreApplication application(argc, argv); application.addLibraryPath("."); if (argc > 1) { QString databaseURL; QString username; QString passwd; QString arguments; for (int counter = 1; counter < argc; counter++) { arguments = QString(argv[counter]); if (arguments.startsWith("-databaseURL=", Qt::CaseInsensitive)) databaseURL = arguments.right(arguments.length() - 13); else if (arguments.startsWith("-username="******"-passwd=", Qt::CaseInsensitive)) passwd = arguments.right(arguments.length() - 8); } if ( (databaseURL != "") && (username != "") ) { QSqlDatabase db; QString protocol; QString hostName; QString dbName; QString port; // Open the Database Driver db = databaseFromURL(databaseURL); if (!db.isValid()) { printf("Could not load the specified database driver.\n"); exit(-1); } // Try to connect to the Database bool valport = false; int iport = port.toInt(&valport); if(!valport) iport = 5432; db.setUserName(username); if(!passwd.isEmpty()) db.setPassword(passwd); if (!db.open()) { printf( "Host=%s, Database=%s, port=%s\n", hostName.toLatin1().data(), dbName.toLatin1().data(), port.toLatin1().data() ); printf( "Could not log into database. System Error: %s\n", db.lastError().text().toLatin1().data() ); exit(-1); } QSqlQuery().exec(getSqlFromTag("fmt05", db.driverName())); // MANU // first we need to determine if there is already a report in the database of the same // name and if so then we will perform an update instead of an insert QSqlQuery qry; qry.prepare(getSqlFromTag("fmt06", db.driverName())); // MANU qry.exec(); if(!qry.exec()) { QSqlError err = qry.lastError(); printf("Error: %s\n\t%s\n", qPrintable( err.text() ), qPrintable( err.databaseText() ) ); exit(-1); } QString fname; while(qry.next()) { fname = QString("%1-%2.xml").arg(qry.value(0).toString()).arg(qry.value(1).toString()); fname.replace('/',"-"); QFile file(fname); if(file.open(QIODevice::WriteOnly)) { QTextStream stream( &file ); stream << qry.value(2).toString(); file.close(); } else printf("Error: Could not open file %s: %s\n", fname.toLatin1().data(), file.errorString().toLatin1().data()); } } else if (databaseURL == "") printf("You must specify a Database URL by using the -databaseURL= parameter.\n"); else if (username == "") printf("You must specify a Database Username by using the -username= parameter.\n"); } else printf( "Usage: exportrpt -databaseURL='$' -username='******' -passwd='$'\n"); return 0; }
int main(int argc, char *argv[]) { QCoreApplication application(argc, argv); application.addLibraryPath("."); QTextStream out(stdout, QIODevice::WriteOnly); if (application.argc() > 1) { QString databaseURL; QString username; QString passwd; QString arguments; QString xml_file = QString::null; int report_grade = 0; for (int counter = 1; counter < application.argc(); counter++) { QString arguments(application.argv()[counter]); if (arguments.startsWith("-databaseURL=", Qt::CaseInsensitive)) databaseURL = arguments.right(arguments.length() - 13); else if (arguments.startsWith("-username="******"-passwd=", Qt::CaseInsensitive)) passwd = arguments.right(arguments.length() - 8); else if (arguments.startsWith("-f=", Qt::CaseInsensitive)) xml_file = arguments.right(arguments.length() - 3); else if (arguments.startsWith("-grade=", Qt::CaseInsensitive)) report_grade = (arguments.right(arguments.length() - 7)).toInt(); else if(!arguments.startsWith("-")) xml_file = arguments; } QString report_name = QString::null; QString report_desc = QString::null; QString report_src = QString::null; if(xml_file != "") { QFile file(xml_file); if(file.open( QIODevice::ReadOnly )) { QDomDocument doc; QString errMsg; int errLine, errCol; if(doc.setContent(&file, &errMsg, &errLine, &errCol)) { QDomElement root = doc.documentElement(); if(root.tagName() == "report") { for(QDomNode n = root.firstChild(); !n.isNull(); n = n.nextSibling() ) { if(n.nodeName() == "name") { report_name = n.firstChild().nodeValue(); } else if(n.nodeName() == "description") { report_desc = n.firstChild().nodeValue(); } } report_src = doc.toString(); if(report_name == "") { out << "The document " << xml_file << " does not have a report name defined." << endl; } } else { out << "XML Document " << xml_file << " does not have root node of report." << endl; } } else { out << "Error parsing file " << xml_file << ": " << errMsg << " on line " << errLine << " column " << errCol << endl; } } else { out << "Could not open the specified file: " << xml_file << endl; } } else { out << "You must specify an XML file to load by using the -f= parameter." << endl; } if(report_name == "" || report_src == "") { // an error message already should have been displayed to the user exit(-1); } if ( (databaseURL != "") && (username != "") && (passwd != "") ) { QSqlDatabase db; // Open the Database Driver db = databaseFromURL( databaseURL ); if (!db.isValid()) { out << "Could not load the specified database driver." << endl; exit(-1); } // Try to connect to the Database db.setUserName(username); db.setPassword(passwd); if (!db.open()) { out << "Host=" << db.hostName() << ", Database=" << db.databaseName() << ", port=" << db.port() << endl; out << "Could not log into database. System Error: " << db.lastError().text() << endl; exit(-1); } QSqlQuery().exec(getSqlFromTag("fmt05", db.driverName())); // MANU // first we need to determine if there is already a report in the database of the same // name and if so then we will perform an update instead of an insert QSqlQuery qry; qry.prepare(getSqlFromTag("fmt09", db.driverName())); // MANU qry.bindValue(":report_name", report_name); qry.bindValue(":report_grade", report_grade); qry.exec(); QSqlQuery query; if(qry.first()) { // update query.prepare(getSqlFromTag("fmt10", db.driverName())); // MANU query.bindValue(":report_desc", report_desc); query.bindValue(":report_src", report_src); query.bindValue(":report_id", qry.value(0)); query.bindValue(":report_name", report_name); } else { // insert query.prepare(getSqlFromTag("fmt11", db.driverName())); // MANU query.bindValue(":report_name", report_name); query.bindValue(":report_desc", report_desc); query.bindValue(":report_src", report_src); query.bindValue(":report_grade", report_grade); } if(!query.exec()) { QSqlError err = query.lastError(); out << "Error: " << err.driverText() << endl << "\t" << err.databaseText() << endl; exit(-1); } } else if (databaseURL == "") out << "You must specify a Database URL by using the -databaseURL= parameter." << endl; else if (username == "") out << "You must specify a Database Username by using the -username= parameter." << endl; else if (passwd == "") out << "You must specify a Database Password by using the -passwd= parameter." << endl; } else out << "Usage: import -databaseURL='$' -username='******' -passwd='$' -grade=# -f='$'" << endl; return 0; }
int main(int argc, char *argv[]) { QMap<QString,ParamPair> paramList; QString username = ""; QString filename; QString printerName; bool haveUsername = FALSE; bool haveDatabaseURL = FALSE; bool loggedIn = FALSE; bool print = FALSE; bool printPreview = FALSE; bool close = FALSE; int numCopies = 1; // BVI::Sednacom // new options bool pdfOutput = FALSE; QString pdfFileName; // BVI::Sednacom QString databaseURL = ""; QString loadFromDB = ""; QApplication app(argc, argv); app.addLibraryPath("."); OpenRPT::languages.addTranslationToDefault(":/common.qm"); OpenRPT::languages.addTranslationToDefault(":/wrtembed.qm"); OpenRPT::languages.addTranslationToDefault(":/renderer.qm"); OpenRPT::languages.addTranslationToDefault(":/renderapp.qm"); OpenRPT::languages.installSelected(); if (app.argc() > 1) { haveUsername = FALSE; bool havePasswd = FALSE; QString passwd = ""; QStringList arguments; QString firstArgument = QString( app.argv()[ 1 ] ); if( firstArgument.startsWith("-fromStdin=", Qt::CaseInsensitive) ){ QFile file; file.open(stdin, QIODevice::ReadOnly); QTextStream in(&file); in.setCodec( firstArgument.right( firstArgument.length() - 11 ).toAscii() ); QString arg; while( arg.compare("-launch") !=0 ){ arg = in.readLine(); arguments << arg; } file.close(); } else{ for (int intCounter = 1; intCounter < app.argc(); intCounter++){ arguments << QString (app.argv()[intCounter]); } } for ( QStringList::Iterator it = arguments.begin(); it != arguments.end(); ++it ) { QString argument( *it ); if (argument.startsWith("-databaseURL=", Qt::CaseInsensitive)) { haveDatabaseURL = TRUE; databaseURL = argument.right(argument.length() - 13); } else if (argument.startsWith("-username="******"-passwd=", Qt::CaseInsensitive)) { havePasswd = TRUE; passwd = argument.right(argument.length() - 8); } else if (argument.toLower() == "-noauth") { haveUsername = TRUE; havePasswd = TRUE; } else if (argument.startsWith("-numCopies=", Qt::CaseInsensitive)){ numCopies = argument.right( argument.length() - 11).toInt(); } else if (argument.toLower() == "-print") print = true; else if (argument.toLower() == "-printpreview") printPreview = true; else if (argument.toLower() == "-close") close = true; else if (argument.startsWith("-printerName=", Qt::CaseInsensitive)) printerName = argument.right(argument.length() - 13); else if (argument.startsWith("-param=", Qt::CaseInsensitive)) { QString str = argument.right(argument.length() - 7); bool active = true; QString name; QString type; QString value; QVariant var; int sep = str.indexOf('='); if(sep == -1) name = str; else { name = str.left(sep); value = str.right(str.length() - (sep + 1)); } str = name; sep = str.indexOf(':'); if(sep != -1) { name = str.left(sep); type = str.right(str.length() - (sep + 1)); } if(name.startsWith("-")) { name = name.right(name.length() - 1); active = false; } else if(name.startsWith("+")) name = name.right(name.length() - 1); if(!value.isEmpty()) var = XVariant::decode(type, value); paramList[name] = ParamPair(active, var); } // BVI::Sednacom // manage new arguments for CLI else if (argument.startsWith("-pdf", Qt::CaseInsensitive)) { pdfOutput = true ; } else if (argument.startsWith("-outpdf=", Qt::CaseInsensitive)) { pdfFileName = argument.right(argument.length() - 8 ) ; } // BVI::Sednacom else if (argument.startsWith("-loadfromdb=", Qt::CaseInsensitive)) loadFromDB = argument.right(argument.length() - 12); else if (argument.toLower() == "-e") XSqlQuery::setNameErrorValue("Missing"); else if(!argument.startsWith("-")) filename = argument; } if ( (haveDatabaseURL) && (haveUsername) && (havePasswd) ) { QSqlDatabase db; QString protocol; QString hostName; QString dbName; QString port; db = databaseFromURL( databaseURL ); if (!db.isValid()) { QMessageBox::critical(0, QObject::tr("Can not load database driver"), QObject::tr("Unable to load the database driver. Please contact your systems administrator.")); QApplication::exit(-1); } db.setUserName(username); db.setPassword(passwd); if (!db.open()) { QMessageBox::critical(0, QObject::tr("Unable to connect to database"), QObject::tr("Unable to connect to the database with the given information.")); QApplication::exit(-1); } else loggedIn = TRUE; } } if(!loggedIn) { ParameterList params; params.append("name", RenderWindow::name()); params.append("copyright", OpenRPT::copyright); params.append("version", OpenRPT::version); params.append("build", OpenRPT::build); if (haveUsername) params.append("username", username); if (haveDatabaseURL) params.append("databaseURL", databaseURL); login newdlg(0, "", TRUE); newdlg.set(params, 0); if (newdlg.exec() == QDialog::Rejected) return -1; } RenderWindow mainwin; mainwin._printerName = printerName; if(!filename.isEmpty()) mainwin.fileOpen(filename); if(!loadFromDB.isEmpty()) mainwin.fileLoad(loadFromDB); QMap<QString,ParamPair>::Iterator it; for ( it = paramList.begin(); it != paramList.end(); ++it ) { mainwin.updateParam(it.key(), it.value().second, it.value().first); } // BVI::Sednacom // do not display window for PDF output if (!pdfOutput) mainwin.show(); // BVI::Sednacom if(print) mainwin.filePrint( numCopies ); if(printPreview) mainwin.filePreview( numCopies ); // BVI::Sednacom // generate the PDF if (pdfOutput) mainwin.filePrintToPDF(pdfFileName); // BVI::Sednacom if(close) { mainwin.fileExit(); return 0; } return app.exec(); }
int main(int argc, char *argv[]) { QString username = ""; bool haveUsername = FALSE; bool haveDatabaseURL = FALSE; _loggedIn = FALSE; _databaseURL = ""; QApplication app(argc, argv); app.addLibraryPath("."); if (argc > 1) { haveUsername = FALSE; bool havePasswd = FALSE; QString passwd = ""; for (int intCounter = 1; intCounter < argc; intCounter++) { QString argument(argv[intCounter]); if (argument.contains("-databaseURL=")) { haveDatabaseURL = TRUE; _databaseURL = argument.right(argument.length() - 13); } else if (argument.contains("-username="******"-passwd=")) { havePasswd = TRUE; passwd = argument.right(argument.length() - 8); } else if (argument.contains("-noAuth")) { haveUsername = TRUE; havePasswd = TRUE; } } if ( (haveDatabaseURL) && (haveUsername) && (havePasswd) ) { QSqlDatabase db = databaseFromURL(_databaseURL); if (!db.isValid()) { QMessageBox::critical(0, QObject::tr("Can not load database driver"), QObject::tr("Unable to load the database driver. Please contact your systems administrator.")); QApplication::exit(-1); } db.setUserName(username); db.setPassword(passwd); if (!db.open()) { QMessageBox::critical(0, QObject::tr("Unable to connect to database"), QObject::tr("Unable to connect to the database with the given information.")); QApplication::exit(-1); } else _loggedIn = TRUE; } } _languages.addTranslationToDefault(":/common.qm"); _languages.addTranslationToDefault(":/metasql.qm"); _languages.installSelected(); MQLEdit mainwin; mainwin.show(); return app.exec(); }