1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
qTox/updater/main.cpp

104 lines
2.9 KiB
C++
Raw Normal View History

2016-01-16 00:40:12 +08:00
/*
Copyright © 2014-2019 by The qTox Project Contributors
2016-01-16 00:40:12 +08:00
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
qTox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qTox. If not, see <http://www.gnu.org/licenses/>.
2016-01-16 00:40:12 +08:00
*/
#include "settings.h"
#include "widget.h"
2016-01-16 00:40:12 +08:00
#include <QApplication>
#include <QDateTime>
2016-01-16 00:40:12 +08:00
#include <QDebug>
#include <QDir>
2016-01-16 00:40:12 +08:00
#include <QFile>
#include <QMutex>
#include <memory>
#include <windows.h>
static std::unique_ptr<QTextStream> logFileStream{nullptr};
static std::unique_ptr<QFile> logFileFile{nullptr};
2016-01-16 00:40:12 +08:00
static QMutex mutex;
void logMessageHandler(QtMsgType type, const QMessageLogContext& ctxt, const QString& msg)
{
// Silence qWarning spam due to bug in QTextBrowser (trying to open a file for base64 images)
if (ctxt.function == QString("virtual bool QFSFileEngine::open(QIODevice::OpenMode)")
&& msg == QString("QFSFileEngine::open: No file name specified"))
2016-01-16 00:40:12 +08:00
return;
QString LogMsg = QString("[%1] %2:%3 : ")
.arg(QTime::currentTime().toString("HH:mm:ss.zzz"))
.arg(ctxt.file)
.arg(ctxt.line);
switch (type) {
case QtDebugMsg:
LogMsg += "Debug";
break;
case QtWarningMsg:
LogMsg += "Warning";
break;
case QtCriticalMsg:
LogMsg += "Critical";
break;
case QtFatalMsg:
LogMsg += "Fatal";
break;
default:
break;
2016-01-16 00:40:12 +08:00
}
LogMsg += ": " + msg + "\n";
QTextStream out(stderr, QIODevice::WriteOnly);
out << LogMsg;
if (!logFileStream)
return;
QMutexLocker locker(&mutex);
*logFileStream << LogMsg;
logFileStream->flush();
}
int main(int argc, char* argv[])
2016-01-16 00:40:12 +08:00
{
qInstallMessageHandler(logMessageHandler);
QApplication a(argc, argv);
Settings s;
2016-01-16 00:40:12 +08:00
logFileStream.reset(new QTextStream);
logFileFile.reset(new QFile(s.getSettingsDirPath() + "qtox.log"));
if (logFileFile->open(QIODevice::Append)) {
2016-01-16 00:40:12 +08:00
logFileStream->setDevice(logFileFile.get());
*logFileStream << QDateTime::currentDateTime().toString(
"\nyyyy-MM-dd HH:mm:ss' Updater file logger starting\n'");
} else {
2016-01-16 00:40:12 +08:00
qWarning() << "Couldn't open log file!\n";
logFileStream.release();
}
long unsigned int bufsize = 100;
2016-01-16 00:40:12 +08:00
char buf[100];
GetUserNameA(buf, &bufsize);
qDebug() << "Updater running as user" << buf;
Widget w(s);
2016-01-16 00:40:12 +08:00
w.show();
return a.exec();
}