--- kdelibs-3.5.7/kio/kfile/kfilespeedbar.cpp.speedbar_xdg_user_dirs 2005-10-10 12:05:43.000000000 -0300 +++ kdelibs-3.5.7/kio/kfile/kfilespeedbar.cpp 2007-09-27 18:58:13.000000000 -0300 @@ -20,6 +20,9 @@ #include "config-kfile.h" #include <qdir.h> +#include <qfile.h> +#include <qtextcodec.h> +#include <qtextstream.h> #include <kconfig.h> #include <kglobal.h> @@ -62,6 +65,51 @@ KFileSpeedBar::KFileSpeedBar( QWidget *p insertItem( u, i18n("Storage Media"), false, KProtocolInfo::icon( "media" ) ); + if ( QFile::exists( QDir::homeDirPath()+"/.config/user-dirs.dirs" ) ) + { + QString download, music, pictures, videos, templates, publicShares; + + QFile f( QDir::homeDirPath()+"/.config/user-dirs.dirs" ); + if (!f.open(IO_ReadOnly)) + return; + + QTextStream s( &f ); + s.setCodec( QTextCodec::codecForLocale() ); + + // read the xdg user dirs + QString line = s.readLine(); + while (!line.isNull()) + { + if (line.startsWith("XDG_DOWNLOAD_DIR=")) + download = line.remove("XDG_DOWNLOAD_DIR=").remove("\"").replace("$HOME", QDir::homeDirPath()); + else if (line.startsWith("XDG_MUSIC_DIR=")) + music = line.remove("XDG_MUSIC_DIR=").remove("\"").replace("$HOME", QDir::homeDirPath()); + else if (line.startsWith("XDG_PICTURES_DIR=")) + pictures = line.remove("XDG_PICTURES_DIR=").remove("\"").replace("$HOME", QDir::homeDirPath()); + else if (line.startsWith("XDG_VIDEOS_DIR=")) + videos = line.remove("XDG_VIDEOS_DIR=").remove("\"").replace("$HOME", QDir::homeDirPath()); + else if (line.startsWith("XDG_TEMPLATES_DIR=")) + templates = line.remove("XDG_TEMPLATES_DIR=").remove("\"").replace("$HOME", QDir::homeDirPath()); + else if (line.startsWith("XDG_PUBLICSHARES_DIR=")) + publicShares = line.remove("XDG_PUBLICSHARES_DIR=").remove("\"").replace("$HOME", QDir::homeDirPath()); + + line = s.readLine(); + } + // now add in the speedbar + if (!download.isEmpty()) + insertItem( download, i18n( "download" ), false, "folder_html" ); + if (!music.isEmpty()) + insertItem( music, i18n( "music" ), false, "folder_sound" ); + if (!pictures.isEmpty()) + insertItem( pictures, i18n( "pictures" ), false, "folder_image" ); + if (!videos.isEmpty()) + insertItem( videos, i18n( "videos" ), false, "folder_video" ); + if (!templates.isEmpty()) + insertItem( templates, i18n( "templates" ), false, "folder_video" ); + if (!publicShares.isEmpty()) + insertItem( publicShares, i18n( "public" ), false, "folder_video" ); + } + u = "remote:/"; if ( KProtocolInfo::isKnownProtocol( u ) ) insertItem( u, i18n("Network Folders"), false,