diff options
author | François Andriot <albator78@libertysurf.fr> | 2014-06-12 13:01:08 +0900 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2015-12-23 02:22:43 +0100 |
commit | c8164e3a5cde9e518ca7695cb922eff37cbcf5f6 (patch) | |
tree | f74b9e85b3e5d0d6f054206f630e36fa82c46a13 | |
parent | 43cfafa4d773e0f213d3b6da23e0d35363bda0ca (diff) | |
download | tdelibs-c8164e3a5cde9e518ca7695cb922eff37cbcf5f6.tar.gz tdelibs-c8164e3a5cde9e518ca7695cb922eff37cbcf5f6.zip |
Added support for XDG directories: music, pictures, videos, download.
This relates to bug 1499.
(cherry picked from commit 4ca479102d0a1313ee8307d6045d0e46d6aa67f9)
-rw-r--r-- | kdecore/kglobalsettings.cpp | 55 | ||||
-rw-r--r-- | kdecore/kglobalsettings.h | 27 |
2 files changed, 72 insertions, 10 deletions
diff --git a/kdecore/kglobalsettings.cpp b/kdecore/kglobalsettings.cpp index 9fd7aa4cd..4da6beaa8 100644 --- a/kdecore/kglobalsettings.cpp +++ b/kdecore/kglobalsettings.cpp @@ -62,6 +62,10 @@ TQString* KGlobalSettings::s_desktopPath = 0; TQString* KGlobalSettings::s_autostartPath = 0; TQString* KGlobalSettings::s_trashPath = 0; TQString* KGlobalSettings::s_documentPath = 0; +TQString* KGlobalSettings::s_videosPath = 0; +TQString* KGlobalSettings::s_musicPath = 0; +TQString* KGlobalSettings::s_downloadPath = 0; +TQString* KGlobalSettings::s_picturesPath = 0; TQFont *KGlobalSettings::_generalFont = 0; TQFont *KGlobalSettings::_fixedFont = 0; TQFont *KGlobalSettings::_toolBarFont = 0; @@ -83,7 +87,7 @@ KGlobalSettings::KMouseSettings *KGlobalSettings::s_mouseSettings = 0; // helper function for reading xdg user dirs: it is required in order to take // care of locale stuff -void readXdgUserDirs(TQString *desktop, TQString *documents) +void readXdgUserDirs(TQString *desktop, TQString *documents, TQString *videos, TQString *music, TQString *download, TQString *pictures) { TQFile f( TQDir::homeDirPath() + "/.config/user-dirs.dirs" ); @@ -101,6 +105,14 @@ void readXdgUserDirs(TQString *desktop, TQString *documents) *desktop = line.remove("XDG_DESKTOP_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); else if (line.startsWith("XDG_DOCUMENTS_DIR=")) *documents = line.remove("XDG_DOCUMENTS_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); + else if (line.startsWith("XDG_MUSIC_DIR=")) + *videos = line.remove("XDG_MUSIC_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); + else if (line.startsWith("XDG_DOWNLOAD_DIR=")) + *download = line.remove("XDG_DOWNLOAD_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); + else if (line.startsWith("XDG_VIDEOS_DIR=")) + *music = line.remove("XDG_VIDEOS_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); + else if (line.startsWith("XDG_PICTURES_DIR=")) + *pictures = line.remove("XDG_PICTURES_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); line = s.readLine(); } @@ -515,30 +527,45 @@ void KGlobalSettings::initStatic() // should be called initPaths(). Don't put an s_autostartPath = new TQString(); s_trashPath = new TQString(); s_documentPath = new TQString(); + s_videosPath = new TQString(); + s_musicPath = new TQString(); + s_downloadPath = new TQString(); + s_picturesPath = new TQString(); + KConfigGroup g( KGlobal::config(), "Paths" ); - // Read desktop and documents path using XDG_USER_DIRS - readXdgUserDirs(s_desktopPath, s_documentPath); + // Read desktop and documents path using XDG_USER_DIRS + readXdgUserDirs(s_desktopPath, s_documentPath, s_musicPath, s_videosPath, s_downloadPath, s_picturesPath); if (s_desktopPath->isEmpty() == true) { *s_desktopPath = TQDir::homeDirPath() + "/Desktop/"; } + *s_desktopPath = TQDir::cleanDirPath( *s_desktopPath ); if ( !s_desktopPath->endsWith("/") ) s_desktopPath->append('/'); - if (s_documentPath->isEmpty() == true) { -#ifdef Q_WS_WIN - *s_documentPath = getWin32ShellFoldersPath("Personal"); -#else - *s_documentPath = TQDir::homeDirPath() + "/Documents/"; -#endif - } *s_documentPath = TQDir::cleanDirPath( *s_documentPath ); if ( !s_documentPath->endsWith("/")) s_documentPath->append('/'); + *s_musicPath = TQDir::cleanDirPath( *s_musicPath ); + if ( !s_musicPath->endsWith("/")) + s_musicPath->append('/'); + + *s_videosPath = TQDir::cleanDirPath( *s_videosPath ); + if ( !s_videosPath->endsWith("/")) + s_videosPath->append('/'); + + *s_downloadPath = TQDir::cleanDirPath( *s_downloadPath ); + if ( !s_downloadPath->endsWith("/")) + s_downloadPath->append('/'); + + *s_picturesPath = TQDir::cleanDirPath( *s_picturesPath ); + if ( !s_picturesPath->endsWith("/")) + s_picturesPath->append('/'); + // Trash Path - TODO remove in KDE4 (kio_trash can't use it for interoperability reasons) *s_trashPath = *s_desktopPath + i18n("Trash") + "/"; *s_trashPath = g.readPathEntry( "Trash" , *s_trashPath); @@ -603,6 +630,14 @@ void KGlobalSettings::rereadPathSettings() s_desktopPath = 0L; delete s_documentPath; s_documentPath = 0L; + delete s_videosPath; + s_videosPath = 0L; + delete s_picturesPath; + s_picturesPath = 0L; + delete s_downloadPath; + s_downloadPath = 0L; + delete s_musicPath; + s_musicPath = 0L; } KGlobalSettings::KMouseSettings & KGlobalSettings::mouseSettings() diff --git a/kdecore/kglobalsettings.h b/kdecore/kglobalsettings.h index 07a6f2ccb..b4bf0497f 100644 --- a/kdecore/kglobalsettings.h +++ b/kdecore/kglobalsettings.h @@ -253,6 +253,29 @@ class KDECORE_EXPORT KGlobalSettings */ static TQString documentPath() { initStatic(); return *s_documentPath; } + /** + * The path where documents are stored of the current user. + * @return the path of the videos directory + */ + static TQString videosPath() { initStatic(); return *s_videosPath; } + + /** + * The path where documents are stored of the current user. + * @return the path of the music directory + */ + static TQString musicPath() { initStatic(); return *s_musicPath; } + + /** + * The path where documents are stored of the current user. + * @return the path of the downloads directory + */ + static TQString downloadPath() { initStatic(); return *s_downloadPath; } + + /** + * The path where documents are stored of the current user. + * @return the path of the pictures directory + */ + static TQString picturesPath() { initStatic(); return *s_picturesPath; } /** * The default color to use when highlighting toolbar buttons. @@ -560,6 +583,10 @@ private: static TQString* s_autostartPath; static TQString* s_trashPath; static TQString* s_documentPath; + static TQString* s_picturesPath; + static TQString* s_downloadPath; + static TQString* s_musicPath; + static TQString* s_videosPath; static TQFont *_generalFont; static TQFont *_fixedFont; static TQFont *_toolBarFont; |