25 #include <MarbleDirs.h>
30 #include <QTextStream>
31 #include <QStyleFactory>
33 #include <QTranslator>
34 #include <QLibraryInfo>
38 #include <Carbon/Carbon.h>
43 #define ARG_LANGUAGE "lang"
44 #define ARG_GUISTYLE "style"
45 #define ARG_RESET "reset"
46 #define ARG_HELP "help"
47 #define ARG_DATADIR "datadir"
48 #define ARG_PIDFILE "pidfile"
49 #define ARG_LOGFILE "logfile"
50 #define ARG_LOGLEVEL "loglevel"
51 #define ARG_READ_PASSWORD_FROM_STDIN \
52 "read-password-from-stdin"
72 vDebug(
"QtDebugMsg: %1").arg(msg);
75 vNotice(
"QtWarningMsg: %1").arg(msg);
78 vWarn(
"QtCriticalMsg: %1").arg(msg);
81 vError(
"QtFatalMsg: %1").arg(msg);
84 if (type == QtFatalMsg) {
85 vError(
"Fatal Qt error. Aborting.");
94 : QApplication(argc, argv)
139 Marble::MarbleDirs::setMarblePluginPath(
vApp->applicationDirPath()
140 +
"/plugins/marble");
144 setStyleSheet(
"QTreeWidget { font-size: 12pt }");
172 #if defined(Q_OS_WIN)
176 Vidalia::winEventFilter(MSG *msg,
long *result)
178 if (msg->message == WM_QUERYENDSESSION) {
181 return QApplication::winEventFilter(msg, result);
197 QTextStream out(&usage);
199 out <<
"Available Options:" << endl;
202 tcol(tr(
"Displays this usage message and exits.")));
204 tcol(tr(
"Resets ALL stored Vidalia settings.")));
206 tcol(tr(
"Sets the directory Vidalia uses for data files.")));
208 tcol(tr(
"Sets the name and location of Vidalia's pidfile.")));
210 tcol(tr(
"Sets the name and location of Vidalia's logfile.")));
212 tcol(tr(
"Sets the verbosity of Vidalia's logging.") +
215 tcol(tr(
"Sets Vidalia's interface style.") +
216 "<br>[" + QStyleFactory::keys().join(
"|") +
"]"));
218 tcol(tr(
"Sets Vidalia's language.") +
246 for (
int i = 0;
i < args.size();
i++) {
248 arg = args.at(
i).toLower();
252 if (arg.startsWith(
"-")) {
253 arg = arg.mid((arg.startsWith(
"--") ? 2 : 1));
256 if (arg.indexOf(
"=") > -1) {
257 value = arg.right(arg.length() - (arg.indexOf(
"=")+1));
258 arg = arg.left(arg.indexOf(
"="));
263 value = args.at(++
i);
266 _args.insert(arg, value);
275 QMapIterator<QString, QString> _i(
_args);
277 while(_i.hasNext()) {
280 errmsg = tr(
"Value required for parameter :") + _i.key();
293 Qt::CaseInsensitive)) {
305 errmsg = tr(
"Unable to open log file '%1': %2")
321 if (languageCode.isEmpty()) {
341 if (styleKey.isEmpty()) {
346 if (QApplication::setStyle(styleKey)) {
367 #if defined(Q_OS_WIN32)
369 #elif defined(Q_OS_MAC)
370 return (QDir::homePath() +
"/Library/Vidalia");
372 return (QDir::homePath() +
"/.vidalia");
383 return QDir::convertSeparators(
dataDirectory() +
"/vidalia.pid");
403 QObject *receiver,
const char *slot)
405 QShortcut *s =
new QShortcut(key, sender);
406 connect(s, SIGNAL(activated()), receiver, slot);
413 QObject *receiver,
const char *slot)
421 vInfo(
"Removing all currently installed UI translator objects.");
423 QApplication::removeTranslator(translator);
432 QTranslator *systemQtTranslator = 0;
433 QTranslator *vidaliaQtTranslator = 0;
434 QTranslator *vidaliaTranslator = 0;
437 vWarn(
"Invalid language code: %1").arg(languageCode);
440 if (! languageCode.compare(
"en", Qt::CaseInsensitive)) {
441 vNotice(
"Resetting UI translation to English default.");
447 systemQtTranslator =
new QTranslator(
vApp);
448 Q_CHECK_PTR(systemQtTranslator);
449 QString qtDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
450 systemQtTranslator->load(qtDir +
"/qt_" + languageCode +
".qm");
453 vidaliaQtTranslator =
new QTranslator(
vApp);
454 Q_CHECK_PTR(vidaliaQtTranslator);
455 vidaliaQtTranslator->load(
":/lang/qt_" + languageCode +
".qm");
457 vidaliaTranslator =
new QTranslator(
vApp);
458 Q_CHECK_PTR(vidaliaTranslator);
459 if (! vidaliaTranslator->load(
":/lang/vidalia_" + languageCode +
".qm"))
466 QApplication::installTranslator(systemQtTranslator);
467 QApplication::installTranslator(vidaliaQtTranslator);
468 QApplication::installTranslator(vidaliaTranslator);
470 << vidaliaQtTranslator
471 << vidaliaTranslator;
476 vWarn(
"Unable to set UI translation to '%1'").arg(languageCode);
477 if (systemQtTranslator)
478 delete systemQtTranslator;
479 if (vidaliaQtTranslator)
480 delete vidaliaQtTranslator;
481 if (vidaliaTranslator)
482 delete vidaliaTranslator;
483 delete vidaliaTranslator;
497 confUrlRef = CFBundleCopyResourceURL(CFBundleGetMainBundle(),
498 CFSTR(
"vidalia"), CFSTR(
"conf"), NULL);
499 if (confUrlRef == NULL)
502 pathRef = CFURLCopyFileSystemPath(confUrlRef, kCFURLPOSIXPathStyle);
503 path = CFStringGetCStringPtr(pathRef, CFStringGetSystemEncoding());
506 QString defaultConfFile = QString::fromLocal8Bit(path);
507 QFileInfo fi(defaultConfFile);
510 if (! out.dir().exists())
511 out.dir().mkpath(
".");
512 QFile::copy(defaultConfFile, out.absoluteFilePath());
515 CFRelease(confUrlRef);
523 QSslSocket::setDefaultCaCertificates(QList<QSslCertificate>());
525 if (! QSslSocket::addDefaultCaCertificates(
":/pki/EquifaxSecureCA.crt"))
526 vWarn(
"Failed to add the Equifax Secure CA certificate to the default CA "
527 "certificate database.");
528 if (! QSslSocket::addDefaultCaCertificates(
":/pki/DigiCertCA.crt"))
529 vWarn(
"Failed to add the DigiCert Global CA certificate to the default CA "
530 "certificate database.");
531 if (! QSslSocket::addDefaultCaCertificates(
":/pki/DigiCertAssuredCA.crt"))
532 vWarn(
"Failed to add the DigiCert Assured CA certificate to the default CA "
533 "certificate database.");
534 if (! QSslSocket::addDefaultCaCertificates(
":/pki/DigiCertHighAssuranceCA.crt"))
535 vWarn(
"Failed to add the DigiCert High Assurance CA certificate to the default CA "
536 "certificate database.");