1 #pragma once 2 3 #include <QString> 4 #include <boost/optional.hpp> 5 6 namespace chatterino { 7 8 class Paths 9 { 10 public: 11 static Paths *instance; 12 13 Paths(); 14 15 // Root directory for the configuration files. %APPDATA%/chatterino or 16 // ExecutablePath for portable mode 17 QString rootAppDataDirectory; 18 19 // Directory for settings files. Same as <appDataDirectory>/Settings 20 QString settingsDirectory; 21 22 // Directory for message log files. Same as <appDataDirectory>/Misc 23 QString messageLogDirectory; 24 25 // Directory for miscellaneous files. Same as <appDataDirectory>/Misc 26 QString miscDirectory; 27 28 // Hash of QCoreApplication::applicationFilePath() 29 QString applicationFilePathHash; 30 31 // Profile avatars for twitch <appDataDirectory>/cache/twitch 32 QString twitchProfileAvatars; 33 34 bool createFolder(const QString &folderPath); 35 bool isPortable(); 36 37 QString cacheDirectory(); 38 39 private: 40 void initAppFilePathHash(); 41 void initCheckPortable(); 42 void initRootDirectory(); 43 void initSubDirectories(); 44 45 boost::optional<bool> portable_; 46 47 // Directory for cache files. Same as <appDataDirectory>/Misc 48 QString cacheDirectory_; 49 }; 50 51 Paths *getPaths(); 52 53 } // namespace chatterino 54