diff --git a/CMakeLists.txt b/CMakeLists.txt index 49598ae..e2877f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,11 @@ add_definitions(${KDE4_ENABLE_EXCEPTIONS}) include(KDE4Defaults) include(MacroLibrary) +option(ENABLE_UDISKS2 "Use UDisks2 backend." OFF) +if (ENABLE_UDISKS2) + add_definitions(-DENABLE_UDISKS2) +endif (ENABLE_UDISKS2) + include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${UUID_INCLUDE_DIRS} ${BLKID_INCLUDE_DIRS} lib/ src/) add_subdirectory(lib) diff --git a/src/plugins/libparted/libpartedbackend.cpp b/src/plugins/libparted/libpartedbackend.cpp index 75ae85c..71b8129 100644 --- a/src/plugins/libparted/libpartedbackend.cpp +++ b/src/plugins/libparted/libpartedbackend.cpp @@ -293,19 +293,19 @@ void LibPartedBackend::initFSSupport() #if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT if (FS::fat16::m_Shrink == FileSystem::cmdSupportNone) FS::fat16::m_Shrink = FileSystem::cmdSupportBackend; - + if (FS::fat16::m_Grow == FileSystem::cmdSupportNone) FS::fat16::m_Grow = FileSystem::cmdSupportBackend; if (FS::hfs::m_Shrink == FileSystem::cmdSupportNone) FS::hfs::m_Shrink = FileSystem::cmdSupportBackend; - + if (FS::hfsplus::m_Shrink == FileSystem::cmdSupportNone) FS::hfsplus::m_Shrink = FileSystem::cmdSupportBackend; - + if (FS::hfs::m_GetUsed == FileSystem::cmdSupportNone) FS::hfs::m_GetUsed = FileSystem::cmdSupportBackend; - + if (FS::hfsplus::m_GetUsed == FileSystem::cmdSupportNone) FS::hfsplus::m_GetUsed = FileSystem::cmdSupportBackend; #endif @@ -447,16 +447,18 @@ static quint32 countDevices(const QList& driveList) foreach(const Solid::Device& solidDevice, driveList) { + (void) solidDevice; // Silence compiler warning. +#ifndef ENABLE_UDISKS2 const Solid::StorageDrive* solidDrive = solidDevice.as(); - if (solidDrive->driveType() == Solid::StorageDrive::HardDisk || - solidDrive->driveType() == Solid::StorageDrive::CompactFlash || - solidDrive->driveType() == Solid::StorageDrive::MemoryStick || - solidDrive->driveType() == Solid::StorageDrive::SmartMedia || - solidDrive->driveType() == Solid::StorageDrive::SdMmc || + if (solidDrive->driveType() == Solid::StorageDrive::HardDisk || + solidDrive->driveType() == Solid::StorageDrive::CompactFlash || + solidDrive->driveType() == Solid::StorageDrive::MemoryStick || + solidDrive->driveType() == Solid::StorageDrive::SmartMedia || + solidDrive->driveType() == Solid::StorageDrive::SdMmc || solidDrive->driveType() == Solid::StorageDrive::Xd) +#endif rval++; } - return rval; } @@ -471,15 +473,17 @@ QList LibPartedBackend::scanDevices() foreach(const Solid::Device& solidDevice, driveList) { +#ifndef ENABLE_UDISKS2 const Solid::StorageDrive* solidDrive = solidDevice.as(); - if (solidDrive->driveType() != Solid::StorageDrive::HardDisk && - solidDrive->driveType() != Solid::StorageDrive::CompactFlash && - solidDrive->driveType() != Solid::StorageDrive::MemoryStick && - solidDrive->driveType() != Solid::StorageDrive::SmartMedia && - solidDrive->driveType() != Solid::StorageDrive::SdMmc && + if (solidDrive->driveType() != Solid::StorageDrive::HardDisk && + solidDrive->driveType() != Solid::StorageDrive::CompactFlash && + solidDrive->driveType() != Solid::StorageDrive::MemoryStick && + solidDrive->driveType() != Solid::StorageDrive::SmartMedia && + solidDrive->driveType() != Solid::StorageDrive::SdMmc && solidDrive->driveType() != Solid::StorageDrive::Xd) continue; +#endif const Solid::Block* solidBlock = solidDevice.as(); diff --git a/src/util/helpers.cpp b/src/util/helpers.cpp index 1743943..aa9c6a1 100644 --- a/src/util/helpers.cpp +++ b/src/util/helpers.cpp @@ -87,7 +87,7 @@ bool checkPermissions() QStringList argList; const QString suCmd = suCommand(); - + // kdesu broke backward compatibility at some point and now only works with "-c"; // kdesudo accepts either (with or without "-c"), but the gk* helpers only work // without. kdesu maintainers won't fix their app, so we need to work around that here. @@ -99,7 +99,7 @@ bool checkPermissions() if (QProcess::execute(suCmd, argList) == 0) return false; } - + return KMessageBox::warningContinueCancel(NULL, i18nc("@info", "You do not have administrative privileges." "It is possible to run %1 without these privileges. " @@ -226,15 +226,20 @@ bool checkAccessibleDevices() i18nc("@title:window", "Error: No Usable Devices Found")); return false; } - + return true; } QList getSolidDeviceList() { - QString predicate = "[ [ [ StorageDrive.driveType == 'HardDisk' OR StorageDrive.driveType == 'CompactFlash'] OR " - "[ StorageDrive.driveType == 'MemoryStick' OR StorageDrive.driveType == 'SmartMedia'] ] OR " - "[ StorageDrive.driveType == 'SdMmc' OR StorageDrive.driveType == 'Xd'] ]"; +#ifdef ENABLE_UDISKS2 + QString predicate = "StorageVolume.usage == 'PartitionTable'"; + +#else + QString predicate = "[ [ [ StorageDrive.driveType == 'HardDisk' OR StorageDrive.driveType == 'CompactFlash'] OR " + "[ StorageDrive.driveType == 'MemoryStick' OR StorageDrive.driveType == 'SmartMedia'] ] OR " + "[ StorageDrive.driveType == 'SdMmc' OR StorageDrive.driveType == 'Xd'] ]"; +#endif KCmdLineArgs* args = KCmdLineArgs::parsedArgs(); if (args->count() > 0)