summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-04-18 18:58:23 -0500
committerSlávek Banko <slavek.banko@axis.cz>2013-04-25 03:22:57 +0200
commitc3a7e5d3db985190b00321cb4d760a25a461eff0 (patch)
treefb640b5fe8e52608754286dd2c5f02ffe57e5b2f
parent3ab7d7ba97776bdb079d743abe75f65957a77179 (diff)
downloadtdelibs-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)
-rw-r--r--CMakeLists.txt9
-rw-r--r--config.h.cmake4
-rw-r--r--kio/CMakeLists.txt6
-rw-r--r--kio/kfile/kpropertiesdialog.cpp54
4 files changed, 61 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2a021258..be57552a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -167,6 +167,7 @@ check_include_file( "stdlib.h" HAVE_STDLIB_H )
check_include_file( "strings.h" HAVE_STRINGS_H )
check_include_file( "string.h" HAVE_STRING_H )
check_include_file( "sysent.h" HAVE_SYSENT_H )
+check_include_file( "sys/acl.h" HAVE_SYS_ACL_H )
check_include_file( "sys/bitypes.h" HAVE_SYS_BITYPES_H )
check_include_file( "sys/dir.h" HAVE_SYS_DIR_H )
check_include_file( "sys/filio.h" HAVE_SYS_FILIO_H )
@@ -183,7 +184,7 @@ check_include_file( "sys/stat.h" HAVE_SYS_STAT_H )
check_include_file( "sys/stropts.h" HAVE_SYS_STROPTS_H )
check_include_file( "sys/types.h" HAVE_SYS_TYPES_H )
check_include_file( "sys/ucred.h" HAVE_SYS_UCRED_H )
-check_include_file( "sys/xattr.h" sys/xattr.h )
+check_include_file( "sys/xattr.h" HAVE_SYS_XATTR_H )
check_include_file( "termios.h" HAVE_TERMIOS_H )
check_include_file( "termio.h" HAVE_TERMIO_H )
check_include_file( "unistd.h" HAVE_UNISTD_H )
@@ -197,6 +198,12 @@ if( HAVE_SYS_TIME_H AND HAVE_TIME_H )
set( TIME_WITH_SYS_TIME 1 )
endif( HAVE_SYS_TIME_H AND HAVE_TIME_H )
+if( HAVE_SYS_ACL_H )
+ set( USE_POSIX_ACL 1 )
+endif( HAVE_SYS_ACL_H )
+
+check_include_file( "acl/libacl.h" HAVE_NON_POSIX_ACL_EXTENSIONS )
+
check_include_file( "valgrind/memcheck.h" HAVE_VALGRIND_MEMCHECK_H )
check_include_file( "values.h" HAVE_VALUES_H )
check_include_file( "X11/extensions/shape.h" HAVE_X11_EXTENSIONS_SHAPE_H )
diff --git a/config.h.cmake b/config.h.cmake
index e50d7184f..98a69b039 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -354,7 +354,7 @@
#undef HAVE_NL_TYPES_H
/* Define if system has non-POSIX extensions to the ACL support. */
-#undef HAVE_NON_POSIX_ACL_EXTENSIONS
+#cmakedefine HAVE_NON_POSIX_ACL_EXTENSIONS 1
/* Define if your system needs _NSGetEnviron to set up the environment */
#undef HAVE_NSGETENVIRON
@@ -820,7 +820,7 @@
#cmakedefine TIME_WITH_SYS_TIME 1
/* Define if system has POSIX ACL support. */
-#undef USE_POSIX_ACL
+#cmakedefine USE_POSIX_ACL 1
/* Version number of package */
#define VERSION "@VERSION@"
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 ) ) {