Added the functionality of having logs in custom folders as well as resetting the custom path to default.

This commit is contained in:
apa420 2018-05-15 19:44:58 +02:00
parent 454b6bcb70
commit 26a0d5bc26
4 changed files with 74 additions and 3 deletions

View file

@ -39,11 +39,26 @@ void LoggingManager::addMessage(const QString &channelName, messages::MessagePtr
QString LoggingManager::getDirectoryForChannel(const QString &channelName)
{
auto customPath = getApp()->settings->logPath;
if (channelName.startsWith("/whispers")) {
if (customPath != "")
return customPath + "/Whispers";
return this->pathManager->whispersLogsFolderPath;
} else if (channelName.startsWith("/mentions")) {
if (customPath != "")
return customPath + "/Mentions";
return this->pathManager->mentionsLogsFolderPath;
} else {
if (customPath != "") {
QString logPath(customPath + QDir::separator() + channelName);
if (!this->pathManager->createFolder(logPath)) {
debug::Log("Error creating channel logs folder for channel {}", channelName);
}
return logPath;
}
QString logPath(this->pathManager->channelsLogsFolderPath + QDir::separator() +
channelName);
@ -55,5 +70,12 @@ QString LoggingManager::getDirectoryForChannel(const QString &channelName)
}
}
void LoggingManager::refreshLoggingPath()
{
// if (app->settings->logPath == "") {
//}
}
} // namespace singletons
} // namespace chatterino

View file

@ -7,7 +7,6 @@
namespace chatterino {
namespace singletons {
class PathManager;
class LoggingManager
@ -23,6 +22,8 @@ public:
void addMessage(const QString &channelName, messages::MessagePtr message);
void refreshLoggingPath();
private:
std::map<QString, std::unique_ptr<LoggingChannel>> loggingChannels;
QString getDirectoryForChannel(const QString &channelName);

View file

@ -101,6 +101,10 @@ public:
/// Logging
BoolSetting enableLogging = {"/logging/enabled", false};
BoolSetting customLogPath = {"/logging/customPath", false};
QStringSetting logPath = {"/logging/path", ""};
QStringSetting pathHighlightSound = {"/highlighting/highlightSoundPath",
"qrc:/sounds/ping2.wav"};
QStringSetting highlightUserBlacklist = {"/highlighting/blacklistedUsers", ""};

View file

@ -1,6 +1,7 @@
#include "moderationpage.hpp"
#include "application.hpp"
#include "singletons/loggingmanager.hpp"
#include "singletons/pathmanager.hpp"
#include "util/layoutcreator.hpp"
@ -35,10 +36,14 @@ ModerationPage::ModerationPage()
auto layout = layoutCreator.setLayoutType<QVBoxLayout>();
{
// Logs (copied from LoggingMananger)
auto logPath = app->paths->logsFolderPath;
auto created = layout.emplace<QLabel>();
created->setText("Logs are saved to " + CreateLink(logPath, true));
if (app->settings->logPath == "") {
created->setText("Logs are saved to " +
CreateLink(QCoreApplication::applicationDirPath(), true));
} else {
created->setText("Logs are saved to " + CreateLink(app->settings->logPath, true));
}
created->setTextFormat(Qt::RichText);
created->setTextInteractionFlags(Qt::TextBrowserInteraction |
Qt::LinksAccessibleByKeyboard |
@ -47,6 +52,45 @@ ModerationPage::ModerationPage()
layout.append(this->createCheckBox("Enable logging", app->settings->enableLogging));
layout->addStretch(1);
auto selectDir = layout.emplace<QPushButton>("Logs");
QObject::connect(
selectDir.getElement(), &QPushButton::clicked, this,
[ this, created, app, dirMemory = QString{app->settings->logPath} ]() mutable {
auto dirName = QFileDialog::getExistingDirectory();
created->setText("Logs are saved to " + CreateLink(dirName, true));
app->settings->customLogPath = true;
if (dirName == "" && dirMemory == "") {
created->setText("Logs are saved to " +
CreateLink(QCoreApplication::applicationDirPath(), true));
app->settings->customLogPath = false;
} else if (dirName == "") {
dirName = dirMemory;
created->setText("Logs are saved to " + CreateLink(dirName, true));
}
app->settings->logPath = dirName;
qDebug() << "dirMemory" << dirMemory;
qDebug() << "dirName" << dirName;
qDebug() << app->settings->logPath.getValue();
qDebug() << app->settings->customLogPath.getValue();
dirMemory = dirName;
app->logging->refreshLoggingPath();
});
auto resetDir = layout.emplace<QPushButton>("Reset logpath");
QObject::connect(
resetDir.getElement(), &QPushButton::clicked, this, [this, created, app]() mutable {
app->settings->logPath = "";
created->setText("Logs are saved to " +
CreateLink(QCoreApplication::applicationDirPath(), true));
app->settings->customLogPath = false;
app->logging->refreshLoggingPath();
});
// Logs end
// clang-format off