From b75b318e1422ca73280b79b297b93e98c31d1a2a Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Sun, 15 Sep 2019 14:30:27 +0900 Subject: konqueror & kdesktop: default action for a media encrypted disk is either lock or unlock based on the current locking status. Signed-off-by: Michele Calgaro --- libkonq/tdefileivi.cc | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'libkonq/tdefileivi.cc') diff --git a/libkonq/tdefileivi.cc b/libkonq/tdefileivi.cc index 4cbb6cdca..ad2d743a1 100644 --- a/libkonq/tdefileivi.cc +++ b/libkonq/tdefileivi.cc @@ -32,6 +32,8 @@ #include #include #include +#include // for KDEDesktopMimeType +#include #undef Bool @@ -386,7 +388,28 @@ void KFileIVI::returnPressed() if ( static_cast(iconView())->isDesktop() ) { KURL url = m_fileitem->url(); if (url.protocol() == "media") { - (void) new KRun( url, m_fileitem->mode(), m_fileitem->isLocalFile() ); + TQString mimetype = m_fileitem->mimetype(); + TQString lockingAction = TQString::null; + if (mimetype.contains("encrypted_locked")) { + lockingAction = "konqueror/servicemenus/media_unlock.desktop"; + } + else if (mimetype.contains("encrypted_unlocked")) { + lockingAction = "konqueror/servicemenus/media_lock.desktop"; + } + if (!lockingAction.isEmpty()) { + TQString lockingService = TDEGlobal::dirs()->findResource("data", lockingAction); + if (!lockingService.isEmpty()) { + TQValueList serviceList = KDEDesktopMimeType::userDefinedServices(lockingService, m_fileitem->isLocalFile()); + if (serviceList.count() == 1) { + KURL::List m_lstURLs; + m_lstURLs.append(m_fileitem->url()); + KDEDesktopMimeType::executeService(m_lstURLs, serviceList[0]); + } + } + } + else { + (void) new KRun( url, m_fileitem->mode(), m_fileitem->isLocalFile() ); + } } else { // When clicking on a link to e.g. $HOME from the desktop, we want to open $HOME -- cgit v1.2.3