42 #define YUILogComponent "qt-pkg"
46 #include <QHeaderView>
49 #include <zypp/ZYppFactory.h>
52 #include "YQPkgDiskUsageList.h"
53 #include "YQPkgDiskUsageWarningDialog.h"
68 #define MIN_FREE_MB_WARN 400
69 #define MIN_FREE_MB_PROXIMITY 700
71 #define MIN_PERCENT_WARN 90
72 #define MIN_PERCENT_PROXIMITY 80
74 #define OVERFLOW_MB_WARN 0
75 #define OVERFLOW_MB_PROXIMITY 300
78 typedef zypp::DiskUsageCounter::MountPointSet ZyppDuSet;
79 typedef zypp::DiskUsageCounter::MountPointSet::iterator ZyppDuSetIterator;
84 : QY2DiskUsageList( parent, true )
88 ZyppDuSet diskUsage = zypp::getZYpp()->diskUsage();
90 if ( diskUsage.empty() )
92 zypp::getZYpp()->setPartitions( zypp::DiskUsageCounter::detectMountPoints() );
93 diskUsage = zypp::getZYpp()->diskUsage();
97 for ( ZyppDuSetIterator it = diskUsage.begin();
98 it != diskUsage.end();
101 const ZyppPartitionDu & partitionDu = *it;
103 if ( ! partitionDu.readonly )
108 _items.insert( QString::fromUtf8(partitionDu.dir.c_str()), item );
112 resizeColumnToContents( nameCol() );
113 resizeColumnToContents( totalSizeCol() );
115 resizeColumnToContents( freeSizeCol() );
117 sortByColumn( percentageBarCol(), Qt::DescendingOrder );
119 header()->setResizeMode( nameCol(), QHeaderView::Stretch );
120 header()->setResizeMode( QHeaderView::Interactive );
130 ZyppDuSet diskUsage = zypp::getZYpp()->diskUsage();
132 for ( ZyppDuSetIterator it = diskUsage.begin();
133 it != diskUsage.end();
136 const ZyppPartitionDu & partitionDu = *it;
142 yuiError() <<
"No entry for mount point " << partitionDu.dir << endl;
145 resizeColumnToContents( totalSizeCol() );
165 MIN_PERCENT_WARN, _(
"&OK" ) );
180 QFontMetrics fms( font() );
181 return QSize( fms.width(
"/var/usr/home 100% 100.32GB 100.3GB" ) + 50, 100 );
184 int width = header()->headerWidth()
185 + style().pixelMetric( QStyle::PM_ScrollBarExtent, verticalScrollBar() );
187 int width = header()->sizeHint().width()
191 return QSize( width, 100 );
201 Qt::KeyboardModifiers special_combo = ( Qt::ControlModifier| Qt::ShiftModifier | Qt::AltModifier );
203 if ( ( event->modifiers() & special_combo ) == special_combo )
205 if ( event->key() == Qt::Key_Q )
208 yuiMilestone() <<
"Debug mode: " << _debug << endl;
213 if ( _debug && currentItem() )
220 int percent = item->usedPercent();
222 switch ( event->key() )
224 case Qt::Key_1: percent = 10;
break;
225 case Qt::Key_2: percent = 20;
break;
226 case Qt::Key_3: percent = 30;
break;
227 case Qt::Key_4: percent = 40;
break;
228 case Qt::Key_5: percent = 50;
break;
229 case Qt::Key_6: percent = 60;
break;
230 case Qt::Key_7: percent = 70;
break;
231 case Qt::Key_8: percent = 80;
break;
232 case Qt::Key_9: percent = 90;
break;
233 case Qt::Key_0: percent = 100;
break;
234 case Qt::Key_Plus: percent += 3;
break;
235 case Qt::Key_Minus: percent -= 3;
break;
245 100,
"&Continue anyway",
"&Cancel" );
252 ZyppPartitionDu partitionDu( item->
partitionDu() );
254 if ( percent != item->usedPercent() )
256 partitionDu.pkg_size = partitionDu.total_size * percent / 100;
269 QY2DiskUsageList::keyPressEvent( event );
278 const ZyppPartitionDu & partitionDu )
279 : QY2DiskUsageListItem( parent )
280 , _partitionDu( partitionDu )
281 , _pkgDiskUsageList( parent )
283 yuiDebug() <<
"disk usage list entry for " << partitionDu.dir << endl;
290 return FSize( _partitionDu.pkg_size, FSize::K );
297 return FSize( _partitionDu.total_size, FSize::K );
304 return fromUTF8( _partitionDu.dir.c_str() );
311 _partitionDu = fromData;
320 int percent = usedPercent();
321 int free = freeSize() / FSize::MB;
323 if ( percent > MIN_PERCENT_WARN )
328 if ( free < MIN_FREE_MB_PROXIMITY )
331 if ( free < MIN_FREE_MB_WARN )
335 if ( free < MIN_FREE_MB_PROXIMITY )
337 if ( percent > MIN_PERCENT_PROXIMITY )
341 if ( free < OVERFLOW_MB_WARN )
344 if ( free < OVERFLOW_MB_PROXIMITY )
363 _hasBeenClose = _isClose;
372 _hasBeenClose =
false;
373 _warningPosted =
false;
389 _hasBeenClose =
true;
396 _warningPosted =
true;
410 return ! _isClose && ! _hasBeenClose;
417 return _inRange && ! _warningPosted;
423 #include "YQPkgDiskUsageList.moc"
virtual FSize totalSize() const
YQPkgWarningRangeNotifier overflowWarning
YQPkgDiskUsageListItem(YQPkgDiskUsageList *parent, const ZyppPartitionDu &partitionDu)
YQPkgDiskUsageList(QWidget *parent, int thresholdPercent=0)
void postPendingWarnings()
void checkRemainingDiskSpace()
virtual void keyPressEvent(QKeyEvent *ev)
virtual QString name() const
virtual FSize usedSize() const
YQPkgWarningRangeNotifier()
virtual QSize sizeHint() const
YQPkgWarningRangeNotifier runningOutWarning
static bool diskUsageWarning(const QString &message, int thresholdPercent, const QString &acceptButtonLabel, const QString &rejectButtonLabel=QString::null)
bool leavingProximity() const
void warningPostedNotify()
ZyppPartitionDu partitionDu() const
List of disk usage of all attached partitions.
void updateDuData(const ZyppPartitionDu &fromData)