diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-04-18 18:58:23 -0500 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2013-04-25 03:22:57 +0200 |
commit | c3a7e5d3db985190b00321cb4d760a25a461eff0 (patch) | |
tree | fb640b5fe8e52608754286dd2c5f02ffe57e5b2f /kio | |
parent | 3ab7d7ba97776bdb079d743abe75f65957a77179 (diff) | |
download | tdelibs-c3a7e5d3db985190b00321cb4d760a25a461eff0.tar.gz tdelibs-c3a7e5d3db985190b00321cb4d760a25a461eff0.zip |
Fix URL handling of media/builtin-* mimetypes
This partially resolves Bug 976
Add missing ACL support to CMake build files
(cherry picked from commit 30b0af1f01cdbfcc51a56943e8c091bc8991f83a)
Diffstat (limited to 'kio')
-rw-r--r-- | kio/CMakeLists.txt | 6 | ||||
-rw-r--r-- | kio/kfile/kpropertiesdialog.cpp | 54 |
2 files changed, 51 insertions, 9 deletions
diff --git a/kio/CMakeLists.txt b/kio/CMakeLists.txt index 4b0b4eca3..4805c1c1b 100644 --- a/kio/CMakeLists.txt +++ b/kio/CMakeLists.txt @@ -49,6 +49,10 @@ install( FILES renamedlgplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} ) install( FILES kpasswdserver.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kded ) install( FILES data.protocol DESTINATION ${SERVICES_INSTALL_DIR} ) +if( HAVE_NON_POSIX_ACL_EXTENSIONS ) + set( ACL_LIBRARIES acl ) +endif( HAVE_NON_POSIX_ACL_EXTENSIONS ) + ##### libkio #################################### @@ -60,6 +64,6 @@ tde_add_library( ${target} SHARED SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp VERSION 4.2.0 EMBED kssl-static kiocore-static ksycoca-static kbookmarks-static kfile-static - LINK kdeui-shared kdesu-shared kwalletclient-shared + LINK kdeui-shared kdesu-shared kwalletclient-shared ${ACL_LIBRARIES} DESTINATION ${LIB_INSTALL_DIR} ) diff --git a/kio/kfile/kpropertiesdialog.cpp b/kio/kfile/kpropertiesdialog.cpp index 3ce3f27cd..6b3adaed1 100644 --- a/kio/kfile/kpropertiesdialog.cpp +++ b/kio/kfile/kpropertiesdialog.cpp @@ -729,8 +729,9 @@ KFilePropsPlugin::KFilePropsPlugin( KPropertiesDialog *_props ) TQString magicMimeComment; if ( isLocal ) { KMimeType::Ptr magicMimeType = KMimeType::findByFileContent( url.path() ); - if ( magicMimeType->name() != KMimeType::defaultMimeType() ) + if ( magicMimeType->name() != KMimeType::defaultMimeType() ) { magicMimeComment = magicMimeType->comment(); + } } // Those things only apply to 'single file' mode @@ -1312,8 +1313,9 @@ void qt_leave_modal( TQWidget *widget ); void KFilePropsPlugin::applyChanges() { - if ( d->dirSizeJob ) + if ( d->dirSizeJob ) { slotSizeStop(); + } kdDebug(250) << "KFilePropsPlugin::applyChanges" << endl; @@ -1345,17 +1347,20 @@ void KFilePropsPlugin::applyChanges() properties->rename( newFileName ); // Update also relative path (for apps and mimetypes) - if ( !m_sRelativePath.isEmpty() ) + if ( !m_sRelativePath.isEmpty() ) { determineRelativePath( properties->kurl().path() ); + } kdDebug(250) << "New URL = " << properties->kurl().url() << endl; kdDebug(250) << "old = " << oldurl.url() << endl; // Don't remove the template !! - if ( !m_bFromTemplate ) // (normal renaming) + if ( !m_bFromTemplate ) { // (normal renaming) job = KIO::move( oldurl, properties->kurl() ); - else // Copying a template + } + else { // Copying a template job = KIO::copy( oldurl, properties->kurl() ); + } connect( job, TQT_SIGNAL( result( KIO::Job * ) ), TQT_SLOT( slotCopyFinished( KIO::Job * ) ) ); @@ -1370,8 +1375,9 @@ void KFilePropsPlugin::applyChanges() } properties->updateUrl(properties->kurl()); // Update also relative path (for apps and mimetypes) - if ( !m_sRelativePath.isEmpty() ) + if ( !m_sRelativePath.isEmpty() ) { determineRelativePath( properties->kurl().path() ); + } } // No job, keep going @@ -2584,16 +2590,30 @@ KURLPropsPlugin::KURLPropsPlugin( KPropertiesDialog *_props ) TQString path = properties->kurl().path(); TQFile f( path ); - if ( !f.open( IO_ReadOnly ) ) + if ( !f.open( IO_ReadOnly ) ) { return; + } f.close(); KSimpleConfig config( path ); config.setDesktopGroup(); URLStr = config.readPathEntry( "URL" ); - if ( !URLStr.isNull() ) + KFileItem * item = properties->item(); + + if (item && item->mimetype() == "media/builtin-mydocuments") { + URLStr = TQString::null; + KConfig xdguserconfig( TQDir::homeDirPath()+"/.config/user-dirs.dirs" ); + URLEdit->setMode(KFile::Directory); + URLEdit->setURL( xdguserconfig.readPathEntry( "XDG_DOCUMENTS_DIR", TQDir::homeDirPath() + "/Documents").remove( "\"" )); + } + else if (item && item->mimetype().startsWith("media/builtin-")) { + URLEdit->setEnabled(false); + } + + if ( !URLStr.isNull() ) { URLEdit->setURL( URLStr ); + } connect( URLEdit, TQT_SIGNAL( textChanged( const TQString & ) ), this, TQT_SIGNAL( changed() ) ); @@ -2628,6 +2648,24 @@ bool KURLPropsPlugin::supports( KFileItemList _items ) void KURLPropsPlugin::applyChanges() { TQString path = properties->kurl().path(); + KFileItem * item = properties->item(); + + if (item && item->mimetype() == "media/builtin-mydocuments") { + KConfig xdgconfig(TQDir::homeDirPath()+"/.config/user-dirs.dirs" ); + if (xdgconfig.isReadOnly()) { + KMessageBox::sorry( 0, i18n("<qt>Could not save properties. You do not have " + "sufficient access to write to <b>%1</b>.</qt>").arg(path)); + return; + } + else { + xdgconfig.writePathEntry( "XDG_DOCUMENTS_DIR", '"'+ URLEdit->url() + '"', true, false, false, false ); + xdgconfig.sync(); + return; + } + } + else if (item && item->mimetype().startsWith("media/builtin-")) { + return; + } TQFile f( path ); if ( !f.open( IO_ReadWrite ) ) { |