summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2020-01-29 23:33:37 +0900
committerMichele Calgaro <[email protected]>2020-01-29 23:33:37 +0900
commitde79e754fa8118d34ea804d6b4fb7056b65487fd (patch)
tree54b3a29dd75debfeb7803141ca8389ad24caebf1
parent394c9f5c0e1b464aa8bc22bd65c5268acd43994d (diff)
downloadtdelibs-de79e754fa8118d34ea804d6b4fb7056b65487fd.tar.gz
tdelibs-de79e754fa8118d34ea804d6b4fb7056b65487fd.zip
Make sure XDG folders are created prior to their usage.
Signed-off-by: Michele Calgaro <[email protected]>
-rw-r--r--tdecore/tdeglobalsettings.cpp37
-rw-r--r--tdeio/tdefile/tdefilespeedbar.cpp44
2 files changed, 53 insertions, 28 deletions
diff --git a/tdecore/tdeglobalsettings.cpp b/tdecore/tdeglobalsettings.cpp
index e88902fcd..241583caf 100644
--- a/tdecore/tdeglobalsettings.cpp
+++ b/tdecore/tdeglobalsettings.cpp
@@ -173,6 +173,23 @@ static void readXdgUserDirs(TQString *desktop, TQString *documents, TQString *do
}
}
+static void checkAndCreateXdgFolder(const TQString &folder, const TQString &path, TDEConfig *config)
+{
+ bool pathOk = true;
+ if (!TQDir(path).exists())
+ {
+ if (!TDEStandardDirs::makeDir(path))
+ {
+ pathOk = false;
+ }
+ }
+
+ if (pathOk)
+ {
+ config->writePathEntry(folder, '"' + path + '"', true, false, false, false );
+ }
+}
+
int TDEGlobalSettings::dndEventDelay()
{
TDEConfigGroup g( TDEGlobal::config(), "General" );
@@ -642,12 +659,30 @@ void TDEGlobalSettings::initPaths()
g.sync();
}
+ // Create folders if they do not exists.
+ TDEConfig *xdgconfig = new TDEConfig(TQDir::homeDirPath()+"/.config/user-dirs.dirs");
+ checkAndCreateXdgFolder("XDG_DESKTOP_DIR", *s_desktopPath, xdgconfig);
+ checkAndCreateXdgFolder("XDG_DOCUMENTS_DIR", *s_documentPath, xdgconfig);
+ checkAndCreateXdgFolder("XDG_DOWNLOAD_DIR", *s_downloadPath, xdgconfig);
+ checkAndCreateXdgFolder("XDG_MUSIC_DIR", *s_musicPath, xdgconfig);
+ checkAndCreateXdgFolder("XDG_PICTURES_DIR", *s_picturesPath, xdgconfig);
+ checkAndCreateXdgFolder("XDG_PUBLICSHARE_DIR", *s_publicSharePath, xdgconfig);
+ checkAndCreateXdgFolder("XDG_TEMPLATES_DIR", *s_templatesPath, xdgconfig);
+ checkAndCreateXdgFolder("XDG_VIDEOS_DIR", *s_videosPath, xdgconfig);
+ xdgconfig->sync();
+
// Autostart Path
*s_autostartPath = TDEGlobal::dirs()->localtdedir() + "Autostart/";
*s_autostartPath = g.readPathEntry( "Autostart" , *s_autostartPath);
*s_autostartPath = TQDir::cleanDirPath( *s_autostartPath );
- if ( !s_autostartPath->endsWith("/") )
+ if (!s_autostartPath->endsWith("/"))
+ {
s_autostartPath->append('/');
+ }
+ if (!TQDir(*s_autostartPath).exists())
+ {
+ TDEStandardDirs::makeDir(*s_autostartPath);
+ }
// Make sure this app gets the notifications about those paths
if (kapp)
diff --git a/tdeio/tdefile/tdefilespeedbar.cpp b/tdeio/tdefile/tdefilespeedbar.cpp
index 635474122..bce229c4c 100644
--- a/tdeio/tdefile/tdefilespeedbar.cpp
+++ b/tdeio/tdefile/tdefilespeedbar.cpp
@@ -44,37 +44,27 @@ KFileSpeedBar::KFileSpeedBar( TQWidget *parent, const char *name )
if ( m_initializeSpeedbar )
{
- KURL u;
- u.setPath( TDEGlobalSettings::desktopPath() );
- insertItem( u, i18n("Desktop"), false );
-
-//TODO: win32
- if ((TDEGlobalSettings::documentPath() != (TQDir::homeDirPath()+"/")) &&
- TQDir(TDEGlobalSettings::documentPath()).exists())
+ insertItem(TQDir::homeDirPath(), i18n("Home Folder"), false, "folder_home");
+ insertItem(TDEGlobalSettings::desktopPath(), i18n("Desktop"), false, "folder_txt");
+ insertItem(TDEGlobalSettings::documentPath(), i18n("Documents"), false, "folder_txt");
+ insertItem(TDEGlobalSettings::downloadPath(), i18n( "Downloads" ), false, "folder_html");
+ insertItem(TDEGlobalSettings::musicPath(), i18n( "Music" ), false, "folder_sound");
+ insertItem(TDEGlobalSettings::picturesPath(), i18n( "Pictures" ), false, "folder_image");
+ insertItem(TDEGlobalSettings::publicSharePath(), i18n( "Public" ), false, "folder");
+ insertItem(TDEGlobalSettings::templatesPath(), i18n( "Templates" ), false, "folder_txt");
+ insertItem(TDEGlobalSettings::videosPath(), i18n( "Videos" ), false, "folder_video");
+
+ KURL u = "media:/";
+ if (KProtocolInfo::isKnownProtocol(u))
{
- u.setPath( TDEGlobalSettings::documentPath() );
- insertItem( u, i18n("Documents"), false, "folder_txt" );
+ insertItem(u, i18n("Storage Media"), false, KProtocolInfo::icon("media"));
}
- u.setPath( TQDir::homeDirPath() );
- insertItem( u, i18n("Home Folder"), false, "folder_home" );
-
- u = "media:/";
- if ( KProtocolInfo::isKnownProtocol( u ) )
- insertItem( u, i18n("Storage Media"), false, KProtocolInfo::icon( "media" ) );
-
- // now add in the speedbar
- insertItem(TDEGlobalSettings::downloadPath(), i18n( "Downloads" ), false, "folder_html" );
- insertItem(TDEGlobalSettings::musicPath(), i18n( "Music" ), false, "folder_sound" );
- insertItem(TDEGlobalSettings::picturesPath(), i18n( "Pictures" ), false, "folder_image" );
- insertItem(TDEGlobalSettings::publicSharePath(), i18n( "Public" ), false, "folder" );
- insertItem(TDEGlobalSettings::templatesPath(), i18n( "Templates" ), false, "folder" );
- insertItem(TDEGlobalSettings::videosPath(), i18n( "Videos" ), false, "folder_video" );
-
u = "remote:/";
- if ( KProtocolInfo::isKnownProtocol( u ) )
- insertItem( u, i18n("Network Folders"), false,
- KProtocolInfo::icon( "remote" ) );
+ if (KProtocolInfo::isKnownProtocol(u))
+ {
+ insertItem(u, i18n("Network Folders"), false, KProtocolInfo::icon("remote"));
+ }
}
}