28 #include "summaryWidget.moc"
31 #include <KIconEffect>
32 #include <KIconLoader>
36 #include <Solid/Device>
37 #include <Solid/StorageAccess>
39 #include <KDiskFreeSpaceInfo>
41 #include <QtGui/QLabel>
42 #include <QtGui/QApplication>
43 #include <QtCore/QByteArray>
44 #include <QtCore/QList>
45 #include <QtGui/QMouseEvent>
46 #include <QtGui/QLayout>
59 struct DiskList : QList<Disk>
69 : RadialMap::
Widget(parent, true)
73 virtual void setCursor(
const QCursor &c)
76 RadialMap::Widget::setCursor(c);
86 if (segment ==
rootSegment() && e->button() == Qt::RightButton)
90 else if (e->button() == Qt::LeftButton ) {
91 const QRect rect(e->x() - 20, e->y() - 20, 40, 40);
103 qApp->setOverrideCursor(Qt::WaitCursor);
104 setLayout(
new QGridLayout(
this));
106 qApp->restoreOverrideCursor();
109 void SummaryWidget::createDiskMaps()
113 const QByteArray free = i18nc(
"Free space on the disks/partitions",
"Free").toUtf8();
114 const QByteArray used = i18nc(
"Used space on the disks/partitions",
"Used").toUtf8();
119 for (DiskList::ConstIterator it = disks.constBegin(), end = disks.constEnd(); it != end; ++it)
121 Disk
const &disk = *it;
123 if (disk.free == 0 && disk.used == 0)
127 QVBoxLayout *volumeLayout =
new QVBoxLayout(volume);
131 info->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
132 QHBoxLayout* horizontalLayout =
new QHBoxLayout(info);
135 text = QLatin1String(
"<b>" ) + disk.mount + i18nc(
"Percent used disk space on the partition",
"</b> (%1% Used)", disk.used*100/disk.size);
137 QLabel *label =
new QLabel(text,
this);
138 horizontalLayout->addWidget(label);
139 QLabel *icon =
new QLabel(
this);
140 icon->setPixmap(KIcon(disk.icon).pixmap(16,16));
141 horizontalLayout->addWidget(icon);
143 horizontalLayout->setAlignment(Qt::AlignCenter);
144 volumeLayout->addWidget(map);
145 volumeLayout->addWidget(info);
148 qobject_cast<QGridLayout*>(layout())->addWidget(volume, layout()->count()/2, layout()->count() % 2);
151 tree->
append(free, disk.free);
152 tree->append(used, disk.used);
162 const Solid::StorageAccess *partition;
163 QStringList partitions;
165 foreach (
const Solid::Device &device, Solid::Device::listFromType(Solid::DeviceInterface::StorageAccess))
168 if (!device.is<Solid::StorageAccess>())
continue;
170 partition = device.as<Solid::StorageAccess>();
171 if (!partition->isAccessible())
continue;
173 if (partitions.contains(partition->filePath()))
175 partitions.append(partition->filePath());
177 KDiskFreeSpaceInfo info = KDiskFreeSpaceInfo::freeSpaceInfo(partition->filePath());
178 if (!info.isValid())
continue;
181 disk.mount = partition->filePath();
182 disk.icon = device.icon();
183 disk.size = info.size();
184 disk.free = info.available();
185 disk.used = info.used();
void append(Folder *d, const char *name=0)
appends a Folder