summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrançois Andriot <albator78@libertysurf.fr>2014-06-12 13:01:08 +0900
committerSlávek Banko <slavek.banko@axis.cz>2015-12-23 02:22:43 +0100
commitc8164e3a5cde9e518ca7695cb922eff37cbcf5f6 (patch)
treef74b9e85b3e5d0d6f054206f630e36fa82c46a13
parent43cfafa4d773e0f213d3b6da23e0d35363bda0ca (diff)
downloadtdelibs-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.cpp55
-rw-r--r--kdecore/kglobalsettings.h27
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;