libyui-qt-pkg
2.42.5
Main Page
Classes
Files
File List
All
Classes
Functions
Variables
Enumerations
YQPkgDiskUsageList.h
1
/**************************************************************************
2
Copyright (C) 2000 - 2010 Novell, Inc.
3
All Rights Reserved.
4
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation; either version 2 of the License, or
8
(at your option) any later version.
9
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
14
15
You should have received a copy of the GNU General Public License along
16
with this program; if not, write to the Free Software Foundation, Inc.,
17
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
19
**************************************************************************/
20
21
22
/*---------------------------------------------------------------------\
23
| |
24
| __ __ ____ _____ ____ |
25
| \ \ / /_ _/ ___|_ _|___ \ |
26
| \ V / _` \___ \ | | __) | |
27
| | | (_| |___) || | / __/ |
28
| |_|\__,_|____/ |_| |_____| |
29
| |
30
| core system |
31
| (C) SuSE GmbH |
32
\----------------------------------------------------------------------/
33
34
File: YQPkgDiskUsageList.h
35
36
Author: Stefan Hundhammer <sh@suse.de>
37
38
/-*/
39
40
41
#ifndef YQPkgDiskUsageList_h
42
#define YQPkgDiskUsageList_h
43
44
#include <zypp/DiskUsageCounter.h>
45
#include <QY2DiskUsageList.h>
46
#include <QKeyEvent>
47
#include <QMap>
48
#include <QByteArray>
49
50
typedef
zypp::DiskUsageCounter::MountPoint ZyppPartitionDu;
51
class
YQPkgDiskUsageListItem
;
52
53
54
/**
55
* Helper class to manage warnings that are to be issued when a value enters a
56
* predefined range, but repeated only when that value leaves a (wider)
57
* "proximity" range and then re-enters the (narrower) "inner" range.
58
*
59
* Example: Disk space usage:
60
*
61
* 70%
62
* 75%
63
* 80% [proximity range start]
64
* 85%
65
* 90% [inner range start]
66
* 95%
67
* 100%
68
*
69
* A warning is to be posted when there is only 90% disk space left. After the
70
* warning is displayed, there shall be no more warning until disk usage decreases
71
* below 80% (the proximity range) and then later increases again to 90%.
72
*
73
* The net effect of all that is to avoid posting the warning over and over
74
* again while the value changes back and forth around the boundary of the
75
* ( inner ) warning range.
76
**/
77
class
YQPkgWarningRangeNotifier
78
{
79
public
:
80
81
/**
82
* Constructor.
83
**/
84
YQPkgWarningRangeNotifier
();
85
86
/**
87
* Notification that the inner range is entered.
88
* The caller has to decide the criteria for that.
89
**/
90
void
enterRange
();
91
92
/**
93
* Notification that the proximity range is entered, i.e. that the value is
94
* getting near the inner range.
95
* 'enterRange()' automatically includes this, too.
96
**/
97
void
enterProximity
();
98
99
/**
100
* Notification that a warning has been posted.
101
**/
102
void
warningPostedNotify
();
103
104
/**
105
* Check if the value is in range, i.e. if anybody from the outside has
106
* called 'enterRange()' since the last call to 'clear()'.
107
**/
108
bool
inRange
()
const
;
109
110
/**
111
* Check if a warning should be posted, i.e. if the value is currently in
112
* range ( see 'inRange() ) and there has been no notification yet that a
113
* warning has already been posted.
114
**/
115
bool
needWarning
()
const
;
116
117
/**
118
* Check if the value is leaving the proximity range.
119
**/
120
bool
leavingProximity
()
const
;
121
122
/**
123
* Clear the current values, i.e. prepare for a new round of checks
124
**/
125
void
clear
();
126
127
/**
128
* Clear everything, including all history values such as if a warning has
129
* been posted.
130
**/
131
void
clearHistory
();
132
133
134
protected
:
135
136
bool
_inRange;
137
bool
_isClose;
138
bool
_hasBeenClose;
139
bool
_warningPosted;
140
};
141
142
143
144
145
146
/**
147
* @short List of disk usage of all attached partitions.
148
**/
149
class
YQPkgDiskUsageList
:
public
QY2DiskUsageList
150
{
151
Q_OBJECT
152
153
public
:
154
/**
155
* Constructor.
156
*
157
* 'thresholdPercent' can be used to include only partitions with at least
158
* this many percent used disk space in the list. This is useful for
159
* warning dialogs ( only? ).
160
**/
161
YQPkgDiskUsageList
( QWidget * parent,
int
thresholdPercent = 0 );
162
163
/**
164
* Destructor.
165
**/
166
virtual
~YQPkgDiskUsageList
() {}
167
168
/**
169
* Suggest reasonable default size.
170
*
171
* Reimplemented from QListView.
172
**/
173
virtual
QSize
sizeHint
()
const
;
174
175
/**
176
* Warning range notifier about running out of disk space warning.
177
**/
178
YQPkgWarningRangeNotifier
runningOutWarning
;
179
180
/**
181
* Warning range notifier about disk space overflow warning.
182
**/
183
YQPkgWarningRangeNotifier
overflowWarning
;
184
185
186
public
slots:
187
188
/**
189
* Update all statistical data in the list.
190
**/
191
void
updateDiskUsage
();
192
193
/**
194
* Post all pending disk space warnings based on the warning range
195
* notifiers.
196
**/
197
void
postPendingWarnings
();
198
199
200
protected
:
201
202
/**
203
* Event handler for keyboard input - for debugging and testing.
204
* Changes the current item's percentage on the fly.
205
*
206
* Reimplemented from QListView / QWidget.
207
**/
208
virtual
void
keyPressEvent
( QKeyEvent * ev );
209
210
211
// Data members
212
213
QMap<QString, YQPkgDiskUsageListItem*> _items;
214
bool
_debug;
215
};
216
217
218
219
class
YQPkgDiskUsageListItem
:
public
QY2DiskUsageListItem
220
{
221
public
:
222
223
/**
224
* Constructor. Creates a YQPkgDiskUsageList item that corresponds to the
225
* specified file system.
226
**/
227
YQPkgDiskUsageListItem
(
YQPkgDiskUsageList
* parent,
228
const
ZyppPartitionDu &
partitionDu
);
229
230
/**
231
* Destructor.
232
**/
233
virtual
~YQPkgDiskUsageListItem
() {}
234
235
/**
236
* Returns the corresponding disk usage data.
237
**/
238
ZyppPartitionDu
partitionDu
()
const
{
return
_partitionDu; }
239
240
/**
241
* Update the disk usage data.
242
**/
243
void
updateDuData
(
const
ZyppPartitionDu & fromData );
244
245
/**
246
* The currently used size of this partition.
247
*
248
* Reimplemented from QY2DiskUsageListItem.
249
**/
250
virtual
FSize
usedSize
()
const
;
251
252
/**
253
* The total size of this partition.
254
*
255
* Reimplemented from QY2DiskUsageListItem.
256
**/
257
virtual
FSize
totalSize
()
const
;
258
259
/**
260
* The name to display for this partition ( the mount point ).
261
*
262
* Reimplemented from QY2DiskUsageListItem.
263
**/
264
virtual
QString
name
()
const
;
265
266
/**
267
* The device name of this partition.
268
*
269
* Reimplemented from QY2DiskUsageListItem.
270
**/
271
virtual
QString
deviceName
()
const
{
return
""
; }
272
273
/**
274
* Check the remaining disk space of this partition based on percentage and
275
* absolute free MB. Notify the parent YQPkgDiskUsageList's warning ranges
276
* accordingly.
277
**/
278
void
checkRemainingDiskSpace
();
279
280
281
protected
:
282
283
// Data members
284
285
ZyppPartitionDu _partitionDu;
286
YQPkgDiskUsageList
* _pkgDiskUsageList;
287
};
288
289
290
291
#endif // ifndef YQPkgDiskUsageList_h
src
YQPkgDiskUsageList.h
Generated by
1.8.2