// SPDX-FileCopyrightText: 2018 Contributors to Chatterino // // SPDX-License-Identifier: MIT #pragma once #include #include namespace chatterino { class Paths { public: Paths(); // Root directory for the configuration files. %APPDATA%/chatterino or // ExecutablePath for portable mode QString rootAppDataDirectory; // Directory for settings files. Same as /Settings QString settingsDirectory; // Directory for message log files. Same as /Logs QString messageLogDirectory; // Directory for miscellaneous files. Same as /Misc QString miscDirectory; // Directory for crashdumps. Same as /Crashes QString crashdumpDirectory; // Hash of QCoreApplication::applicationFilePath() QString applicationFilePathHash; // Profile avatars for Twitch /ProfileAvatars/twitch QString twitchProfileAvatars; // Plugin files live here. /Plugins QString pluginsDirectory; // Custom themes live here. /Themes QString themesDirectory; // Spell checking dictionaries /Dictionaries QString dictionariesDirectory; // Directory for shared memory files. // /IPC on Windows // /tmp elsewhere QString ipcDirectory; bool createFolder(const QString &folderPath); [[deprecated("use Modes::instance().portable instead")]] bool isPortable() const; QString cacheDirectory() const; /// Returns the full file path for a file in the cache directory /// /// e.g. cacheFilePath("foo") will return /foo QString cacheFilePath(const QString &fileName) const; private: void initAppFilePathHash(); void initCheckPortable(); void initRootDirectory(); void initSubDirectories(); std::optional portable_; // Directory for cache files. Same as /Misc QString cacheDirectory_; }; } // namespace chatterino