/*
* Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd.
*
* Author: zccrs <zccrs@live.com>
*
* Maintainer: zccrs <zhangjide@deepin.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dblockpartition.h"
#include "private/dblockdevice_p.h"
#include "udisks2_interface.h"
class DBlockPartitionPrivate : public DBlockDevicePrivate
{
public:
DBlockPartitionPrivate(DBlockPartition *qq);
OrgFreedesktopUDisks2PartitionInterface *dbus;
};
DBlockPartitionPrivate::DBlockPartitionPrivate(DBlockPartition *qq)
: DBlockDevicePrivate(qq)
{
}
qulonglong DBlockPartition::flags() const
{
Q_D(const DBlockPartition);
return d->dbus->flags();
}
bool DBlockPartition::isContained() const
{
Q_D(const DBlockPartition);
return d->dbus->isContained();
}
bool DBlockPartition::isContainer() const
{
Q_D(const DBlockPartition);
return d->dbus->isContainer();
}
QString DBlockPartition::name() const
{
Q_D(const DBlockPartition);
return d->dbus->name();
}
uint DBlockPartition::number() const
{
Q_D(const DBlockPartition);
return d->dbus->number();
}
qulonglong DBlockPartition::offset() const
{
Q_D(const DBlockPartition);
return d->dbus->offset();
}
qulonglong DBlockPartition::size() const
{
Q_D(const DBlockPartition);
return d->dbus->size();
}
QString DBlockPartition::table() const
{
Q_D(const DBlockPartition);
return d->dbus->table().path();
}
QString DBlockPartition::type() const
{
Q_D(const DBlockPartition);
return d->dbus->type();
}
DBlockPartition::Type DBlockPartition::eType() const
{
const QString &type = this->type();
if (type.isEmpty())
return Empty;
bool ok = false;
int value = type.toInt(&ok, 16);
if (!ok) {
return Unknow;
}
return static_cast<Type>(value);
}
QString DBlockPartition::UUID() const
{
Q_D(const DBlockPartition);
return d->dbus->uUID();
}
DBlockPartition::GUIDType DBlockPartition::guidType() const
{
static QByteArrayList list;
if (list.isEmpty()) {
// None
list << "00000000-0000-0000-0000-000000000000"
<< "024DEE41-33E7-11D3-9D69-0008C781F39F"
<< "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
<< "21686148-6449-6E6F-744E-656564454649"
<< "D3BFE2DE-3DAF-11DF-BA40-E3A556D89593"
<< "F4019732-066E-4E12-8273-346C5641494F"
<< "BFBFAFE7-A34F-448A-9A5B-6213EB736C22"
// Windows
<< "E3C9E316-0B5C-4DB8-817D-F92DF00215AE"
<< "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"
<< "5808C8AA-7E8F-42E0-85D2-E1E90434CFB3"
<< "AF9B60A0-1431-4F62-BC68-3311714A69AD"
<< "DE94BBA4-06D1-4D40-A16A-BFD50179D6AC"
<< "37AFFC90-EF7D-4e96-91C3-2D7AE055B174"
<< "E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D"
// HP-UX
<< "75894C1E-3AEB-11D3-B7C1-7B03A0000000"
<< "E2A1E728-32E3-11D6-A682-7B03A0000000"
// Linux
<< "0FC63DAF-8483-4772-8E79-3D69D8477DE4"
<< "A19D880F-05FC-4D3B-A006-743F0F84911E"
<< "44479540-F297-41B2-9AF7-D131D5F0458A"
<< "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709"
<< "69DAD710-2CE4-4E3C-B16C-21A1D49ABED3"
<< "B921B045-1DF0-41C3-AF44-4C6F280D3FAE"
<< "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F"
<< "E6D6D379-F507-44C2-A23C-238F2A3DF928"
<< "933AC7E1-2EB4-4F13-B844-0E14E2AEF915"
<< "3B8F8425-20E0-4F3B-907F-1A25A76F98E8"
<< "7FFEC5C9-2D00-49B7-8941-3EA10A5586B7"
<< "CA7D7CCB-63ED-4C53-861C-1742536059CC"
<< "8DA63339-0007-60C0-C436-083AC8230908"
// FreeBSD
<< "83BD6B9D-7F41-11DC-BE0B-001560B84F0F"
<< "516E7CB4-6ECF-11D6-8FF8-00022D09712B"
<< "516E7CB5-6ECF-11D6-8FF8-00022D09712B"
<< "516E7CB6-6ECF-11D6-8FF8-00022D09712B"
<< "516E7CB8-6ECF-11D6-8FF8-00022D09712B"
<< "516E7CBA-6ECF-11D6-8FF8-00022D09712B"
// macOS Darwin
<< "48465300-0000-11AA-AA11-00306543ECAC"
<< "55465300-0000-11AA-AA11-00306543ECAC"
<< "6A898CC3-1DD2-11B2-99A6-080020736631"
<< "52414944-0000-11AA-AA11-00306543ECAC"
<< "52414944-5F4F-11AA-AA11-00306543ECAC"
<< "426F6F74-0000-11AA-AA11-00306543ECAC"
<< "4C616265-6C00-11AA-AA11-00306543ECAC"
<< "5265636F-7665-11AA-AA11-00306543ECAC"
<< "53746F72-6167-11AA-AA11-00306543ECAC"
<< "B6FA30DA-92D2-4A9A-96F1-871EC6486200"
<< "2E313465-19B9-463F-8126-8A7993773801"
<< "FA709C7E-65B1-4593-BFD5-E71D61DE9B02"
<< "BBBA6DF5-F46F-4A89-8F59-8765B2727503"
// Solaris illumos
<< "6A82CB45-1DD2-11B2-99A6-080020736631"
<< "6A85CF4D-1DD2-11B2-99A6-080020736631"
<< "6A87C46F-1DD2-11B2-99A6-080020736631"
<< "6A8B642B-1DD2-11B2-99A6-080020736631"
// << "6A898CC3-1DD2-11B2-99A6-080020736631"
<< "6A8EF2E9-1DD2-11B2-99A6-080020736631"
<< "6A90BA39-1DD2-11B2-99A6-080020736631"
<< "6A9283A5-1DD2-11B2-99A6-080020736631"
// reserved partition
<< "6A945A3B-1DD2-11B2-99A6-080020736631"
<< "6A9630D1-1DD2-11B2-99A6-080020736631"
<< "6A980767-1DD2-11B2-99A6-080020736631"
<< "6A96237F-1DD2-11B2-99A6-080020736631"
<< "6A8D2AC7-1DD2-11B2-99A6-080020736631"
// NetBSD
<< "49F48D32-B10E-11DC-B99B-0019D1879648"
<< "49F48D5A-B10E-11DC-B99B-0019D1879648"
<< "49F48D82-B10E-11DC-B99B-0019D1879648"
<< "49F48DAA-B10E-11DC-B99B-0019D1879648"
<< "2DB519C4-B10F-11DC-B99B-0019D1879648"
<< "2DB519EC-B10F-11DC-B99B-0019D1879648"
// ChromeOS
<< "FE3A2A5D-4F32-41A7-B725-ACCC3285A309"
<< "3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC"
<< "2E0A753D-9E48-43B0-8337-B15192CB1B5E"
// HaiKu
<< "42465331-3BA3-10F1-802A-4861696B7521"
// MidnightBSD
<< "85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7"
<< "85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7"
<< "85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7"
<< "0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7"
<< "85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7"
<< "85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7"
// Ceph
<< "45B0969E-9B03-4F30-B4C6-B4B80CEFF106"
<< "45B0969E-9B03-4F30-B4C6-5EC00CEFF106"
<< "4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D"
<< "4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D"
<< "89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE"
<< "89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE"
// OpenBSD
<< "824CC7A0-36A8-11E3-890A-952519AD3F61"
// QNX
<< "CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1"
// Plan 9
<< "C91818F9-8025-47AF-89D2-F030D7000C2C"
// VMware ESX
<< "9D275380-40AD-11DB-BF97-000C2911D1B8"
<< "AA31E02A-400F-11DB-9590-000C2911D1B8"
<< "9198EFFC-31C0-11DB-8F78-000C2911D1B8"
// Android-IA
<< "2568845D-2332-4675-BC39-8FA5A4748D15"
<< "114EAFFE-1552-4