From 6640770b3239ad117d29df2929e5b7442e48ee3a Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Thu, 18 Apr 2013 15:00:12 -0500 Subject: Fix desktoppath tdecontrol module This partially resolves Bug 976 --- kcontrol/konq/rootopts.cpp | 257 +++++++++++++++++++++++++++++++++++++++++++-- kcontrol/konq/rootopts.h | 6 ++ 2 files changed, 252 insertions(+), 11 deletions(-) diff --git a/kcontrol/konq/rootopts.cpp b/kcontrol/konq/rootopts.cpp index 216c7518f..6677bc80a 100644 --- a/kcontrol/konq/rootopts.cpp +++ b/kcontrol/konq/rootopts.cpp @@ -50,7 +50,7 @@ DesktopPathConfig::DesktopPathConfig(TQWidget *parent, const char * ) #undef RO_LASTROW #undef RO_LASTCOL -#define RO_LASTROW 4 // 3 paths + last row +#define RO_LASTROW 10 // 9 paths + last row #define RO_LASTCOL 2 int row = 0; @@ -109,11 +109,82 @@ DesktopPathConfig::DesktopPathConfig(TQWidget *parent, const char * ) tmpLabel->setBuddy( urDocument ); lay->addMultiCellWidget(urDocument, row, row, 1, RO_LASTCOL); connect(urDocument, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed())); - wtstr = i18n("This folder will be used by default to " - "load or save documents from or to."); + wtstr = i18n("This folder will be used by default to load or save documents from or to."); TQWhatsThis::add( tmpLabel, wtstr ); TQWhatsThis::add( urDocument, wtstr ); + row++; + tmpLabel = new TQLabel(i18n("Download path:"), this); + lay->addWidget(tmpLabel, row, 0); + urDownload = new KURLRequester(this); + urDownload->setMode( KFile::Directory ); + tmpLabel->setBuddy( urDownload ); + lay->addMultiCellWidget(urDownload, row, row, 1, RO_LASTCOL); + connect(urDownload, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed())); + wtstr = i18n("This folder will be used by default to load or save downloads from or to."); + TQWhatsThis::add( tmpLabel, wtstr ); + TQWhatsThis::add( urDownload, wtstr ); + + row++; + tmpLabel = new TQLabel(i18n("Music path:"), this); + lay->addWidget(tmpLabel, row, 0); + urMusic = new KURLRequester(this); + urMusic->setMode( KFile::Directory ); + tmpLabel->setBuddy( urMusic ); + lay->addMultiCellWidget(urMusic, row, row, 1, RO_LASTCOL); + connect(urMusic, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed())); + wtstr = i18n("This folder will be used by default to load or save music from or to."); + TQWhatsThis::add( tmpLabel, wtstr ); + TQWhatsThis::add( urMusic, wtstr ); + + row++; + tmpLabel = new TQLabel(i18n("Pictures path:"), this); + lay->addWidget(tmpLabel, row, 0); + urPictures = new KURLRequester(this); + urPictures->setMode( KFile::Directory ); + tmpLabel->setBuddy( urPictures ); + lay->addMultiCellWidget(urPictures, row, row, 1, RO_LASTCOL); + connect(urPictures, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed())); + wtstr = i18n("This folder will be used by default to load or save pictures from or to."); + TQWhatsThis::add( tmpLabel, wtstr ); + TQWhatsThis::add( urPictures, wtstr ); + + row++; + tmpLabel = new TQLabel(i18n("Public Share path:"), this); + lay->addWidget(tmpLabel, row, 0); + urPublicShare = new KURLRequester(this); + urPublicShare->setMode( KFile::Directory ); + tmpLabel->setBuddy( urPublicShare ); + lay->addMultiCellWidget(urPublicShare, row, row, 1, RO_LASTCOL); + connect(urPublicShare, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed())); + wtstr = i18n("This folder will be used by default to load or save public shared files from or to."); + TQWhatsThis::add( tmpLabel, wtstr ); + TQWhatsThis::add( urPublicShare, wtstr ); + + row++; + tmpLabel = new TQLabel(i18n("Templates path:"), this); + lay->addWidget(tmpLabel, row, 0); + urTemplates = new KURLRequester(this); + urTemplates->setMode( KFile::Directory ); + tmpLabel->setBuddy( urTemplates ); + lay->addMultiCellWidget(urTemplates, row, row, 1, RO_LASTCOL); + connect(urTemplates, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed())); + wtstr = i18n("This folder will be used by default to load or save templates from or to."); + TQWhatsThis::add( tmpLabel, wtstr ); + TQWhatsThis::add( urTemplates, wtstr ); + + row++; + tmpLabel = new TQLabel(i18n("Videos path:"), this); + lay->addWidget(tmpLabel, row, 0); + urVideos = new KURLRequester(this); + urVideos->setMode( KFile::Directory ); + tmpLabel->setBuddy( urVideos ); + lay->addMultiCellWidget(urVideos, row, row, 1, RO_LASTCOL); + connect(urVideos, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed())); + wtstr = i18n("This folder will be used by default to load or save videos from or to."); + TQWhatsThis::add( tmpLabel, wtstr ); + TQWhatsThis::add( urVideos, wtstr ); + // -- Bottom -- Q_ASSERT( row == RO_LASTROW-1 ); // if it fails here, check the row++ and RO_LASTROW above @@ -134,10 +205,16 @@ void DesktopPathConfig::load( bool useDefaults ) urAutostart->setURL( config.readPathEntry( "Autostart" , TDEGlobalSettings::autostartPath() )); TDEConfig xdguserconfig( TQDir::homeDirPath()+"/.config/user-dirs.dirs" ); - + urDesktop->setURL( xdguserconfig.readPathEntry( "XDG_DESKTOP_DIR" , TQDir::homeDirPath() + "/Desktop" ).remove( "\"" )); - urDocument->setURL( xdguserconfig.readPathEntry( "XDG_DOCUMENTS_DIR", TQDir::homeDirPath()).remove( "\"" )); - + urDocument->setURL( xdguserconfig.readPathEntry( "XDG_DOCUMENTS_DIR", TQDir::homeDirPath() + "/Documents").remove( "\"" )); + urDownload->setURL( xdguserconfig.readPathEntry( "XDG_DOWNLOAD_DIR" , TQDir::homeDirPath() + "/Downloads" ).remove( "\"" )); + urMusic->setURL( xdguserconfig.readPathEntry( "XDG_MUSIC_DIR" , TQDir::homeDirPath() + "/Music" ).remove( "\"" )); + urPictures->setURL( xdguserconfig.readPathEntry( "XDG_PICTURES_DIR" , TQDir::homeDirPath() + "/Pictures" ).remove( "\"" )); + urPublicShare->setURL( xdguserconfig.readPathEntry( "XDG_PUBLICSHARE_DIR" , TQDir::homeDirPath() + "/Public" ).remove( "\"" )); + urTemplates->setURL( xdguserconfig.readPathEntry( "XDG_TEMPLATES_DIR" , TQDir::homeDirPath() + "/Templates" ).remove( "\"" )); + urVideos->setURL( xdguserconfig.readPathEntry( "XDG_VIDEOS_DIR" , TQDir::homeDirPath() + "/Videos" ).remove( "\"" )); + emit changed( useDefaults ); } @@ -170,6 +247,36 @@ void DesktopPathConfig::save() KURL newDocumentURL; newDocumentURL.setPath(urDocument->url()); + KURL downloadURL; +// downloadURL.setPath( TDEGlobalSettings::downloadPath() ); + KURL newDownloadURL; + newDownloadURL.setPath(urDownload->url()); + + KURL musicURL; +// musicURL.setPath( TDEGlobalSettings::musicPath() ); + KURL newMusicURL; + newMusicURL.setPath(urMusic->url()); + + KURL picturesURL; +// picturesURL.setPath( TDEGlobalSettings::picturesPath() ); + KURL newPicturesURL; + newPicturesURL.setPath(urPictures->url()); + + KURL publicShareURL; +// publicShareURL.setPath( TDEGlobalSettings::publicSharePath() ); + KURL newPublicShareURL; + newPublicShareURL.setPath(urPublicShare->url()); + + KURL templatesURL; +// templatesURL.setPath( TDEGlobalSettings::templatesPath() ); + KURL newTemplatesURL; + newTemplatesURL.setPath(urTemplates->url()); + + KURL videosURL; +// videosURL.setPath( TDEGlobalSettings::videosPath() ); + KURL newVideosURL; + newVideosURL.setPath(urVideos->url()); + if ( !newDesktopURL.equals( desktopURL, true ) ) { // Test which other paths were inside this one (as it is by default) @@ -208,7 +315,7 @@ void DesktopPathConfig::save() if ( moveDir( KURL( TDEGlobalSettings::desktopPath() ), KURL( urlDesktop ), i18n("Desktop") ) ) { - xdgconfig->writePathEntry( "XDG_DESKTOP_DIR", '"'+ urlDesktop + '"', true, false ); + xdgconfig->writePathEntry( "XDG_DESKTOP_DIR", '"'+ urlDesktop + '"', true, false, false, false ); pathChanged = true; } } @@ -219,7 +326,7 @@ void DesktopPathConfig::save() autostartMoved = moveDir( KURL( TDEGlobalSettings::autostartPath() ), KURL( urAutostart->url() ), i18n("Autostart") ); if (autostartMoved) { - config->writePathEntry( "Autostart", urAutostart->url(), true, true ); + config->writePathEntry( "Autostart", urAutostart->url(), true, true, false, false ); pathChanged = true; } } @@ -240,7 +347,133 @@ void DesktopPathConfig::save() if (pathOk) { - xdgconfig->writePathEntry( "XDG_DOCUMENTS_DIR", '"' + path + '"', true, false ); + xdgconfig->writePathEntry( "XDG_DOCUMENTS_DIR", '"' + path + '"', true, false, false, false ); + pathChanged = true; + } + } + + if ( !newDownloadURL.equals( downloadURL, true ) ) + { + bool pathOk = true; + TQString path = urDownload->url(); + if (!TQDir(path).exists()) + { + if (!TDEStandardDirs::makeDir(path)) + { + KMessageBox::sorry(this, TDEIO::buildErrorString(TDEIO::ERR_COULD_NOT_MKDIR, path)); + urDownload->setURL(downloadURL.path()); + pathOk = false; + } + } + + if (pathOk) + { + xdgconfig->writePathEntry( "XDG_DOWNLOAD_DIR", '"' + path + '"', true, false, false, false ); + pathChanged = true; + } + } + + if ( !newMusicURL.equals( musicURL, true ) ) + { + bool pathOk = true; + TQString path = urMusic->url(); + if (!TQDir(path).exists()) + { + if (!TDEStandardDirs::makeDir(path)) + { + KMessageBox::sorry(this, TDEIO::buildErrorString(TDEIO::ERR_COULD_NOT_MKDIR, path)); + urMusic->setURL(musicURL.path()); + pathOk = false; + } + } + + if (pathOk) + { + xdgconfig->writePathEntry( "XDG_MUSIC_DIR", '"' + path + '"', true, false, false, false ); + pathChanged = true; + } + } + + if ( !newPicturesURL.equals( picturesURL, true ) ) + { + bool pathOk = true; + TQString path = urPictures->url(); + if (!TQDir(path).exists()) + { + if (!TDEStandardDirs::makeDir(path)) + { + KMessageBox::sorry(this, TDEIO::buildErrorString(TDEIO::ERR_COULD_NOT_MKDIR, path)); + urPictures->setURL(picturesURL.path()); + pathOk = false; + } + } + + if (pathOk) + { + xdgconfig->writePathEntry( "XDG_PICTURES_DIR", '"' + path + '"', true, false, false, false ); + pathChanged = true; + } + } + + if ( !newPublicShareURL.equals( publicShareURL, true ) ) + { + bool pathOk = true; + TQString path = urPublicShare->url(); + if (!TQDir(path).exists()) + { + if (!TDEStandardDirs::makeDir(path)) + { + KMessageBox::sorry(this, TDEIO::buildErrorString(TDEIO::ERR_COULD_NOT_MKDIR, path)); + urPublicShare->setURL(publicShareURL.path()); + pathOk = false; + } + } + + if (pathOk) + { + xdgconfig->writePathEntry( "XDG_PUBLICSHARE_DIR", '"' + path + '"', true, false, false, false ); + pathChanged = true; + } + } + + if ( !newTemplatesURL.equals( templatesURL, true ) ) + { + bool pathOk = true; + TQString path = urTemplates->url(); + if (!TQDir(path).exists()) + { + if (!TDEStandardDirs::makeDir(path)) + { + KMessageBox::sorry(this, TDEIO::buildErrorString(TDEIO::ERR_COULD_NOT_MKDIR, path)); + urTemplates->setURL(templatesURL.path()); + pathOk = false; + } + } + + if (pathOk) + { + xdgconfig->writePathEntry( "XDG_TEMPLATES_DIR", '"' + path + '"', true, false, false, false ); + pathChanged = true; + } + } + + if ( !newVideosURL.equals( videosURL, true ) ) + { + bool pathOk = true; + TQString path = urVideos->url(); + if (!TQDir(path).exists()) + { + if (!TDEStandardDirs::makeDir(path)) + { + KMessageBox::sorry(this, TDEIO::buildErrorString(TDEIO::ERR_COULD_NOT_MKDIR, path)); + urVideos->setURL(videosURL.path()); + pathOk = false; + } + } + + if (pathOk) + { + xdgconfig->writePathEntry( "XDG_VIDEOS_DIR", '"' + path + '"', true, false, false, false ); pathChanged = true; } } @@ -261,10 +494,12 @@ void DesktopPathConfig::save() int konq_screen_number = TDEApplication::desktop()->primaryScreen(); TQCString appname; - if (konq_screen_number == 0) + if (konq_screen_number == 0) { appname = "kdesktop"; - else + } + else { appname.sprintf("kdesktop-screen-%d", konq_screen_number); + } kapp->dcopClient()->send( appname, "KDesktopIface", "configure()", data ); } diff --git a/kcontrol/konq/rootopts.h b/kcontrol/konq/rootopts.h index ffbf24a5a..9343e07ca 100644 --- a/kcontrol/konq/rootopts.h +++ b/kcontrol/konq/rootopts.h @@ -51,6 +51,12 @@ private: KURLRequester *urDesktop; KURLRequester *urAutostart; KURLRequester *urDocument; + KURLRequester *urDownload; + KURLRequester *urMusic; + KURLRequester *urPictures; + KURLRequester *urPublicShare; + KURLRequester *urTemplates; + KURLRequester *urVideos; bool moveDir( const KURL & src, const KURL & dest, const TQString & type ); bool m_ok; -- cgit v1.2.3