libyui-qt-pkg
YQPkgPatchList.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: YQPkgPatchList.h
35 
36  Author: Stefan Hundhammer <shundhammer.de>
37 
38 /-*/
39 
40 
41 #ifndef YQPkgPatchList_h
42 #define YQPkgPatchList_h
43 
44 #include <string>
45 #include "YQPkgObjList.h"
46 #include "YQPkgSelMapper.h"
47 #include <QTreeWidgetItem>
48 #include <QEvent>
49 #include <QMenu>
50 
51 #define ENABLE_DELETING_PATCHES 1
52 
53 using std::string;
54 
55 class YQPkgPatchListItem;
57 
58 enum YQPkgPatchCategory // This is also the sort order
59 {
60  YQPkgYaSTPatch,
61  YQPkgSecurityPatch,
62  YQPkgRecommendedPatch,
63  YQPkgOptionalPatch,
64  YQPkgDocumentPatch,
65 
66  YQPkgUnknownPatchCategory = 9999
67 };
68 
69 
70 
75 {
76  Q_OBJECT
77 
78 public:
79 
83  YQPkgPatchList( QWidget * parent );
84 
88  virtual ~YQPkgPatchList();
89 
90 
91  enum FilterCriteria
92  {
93  RelevantPatches, // needed (or broken)
94  RelevantAndInstalledPatches, // unneeded
95  AllPatches // all
96  };
97 
98 
99 public slots:
100 
108  void filter();
109 
113  void filterIfVisible();
114 
120  void addPatchItem( ZyppSel selectable,
121  ZyppPatch zyppPatch );
122 
126  void fillList();
127 
132  virtual void message( const QString & text );
133 
134 
135 public:
136 
140  void setFilterCriteria( FilterCriteria filterCriteria );
141 
145  FilterCriteria filterCriteria() const { return _filterCriteria; }
146 
150  YQPkgPatchListItem * selection() const;
151 
155  int categoryCol() const { return _categoryCol; }
156 
163  virtual QMenu * addAllInListSubMenu( QMenu * menu );
164 
170  virtual void polish();
171 
172 
173 signals:
174 
179  void filterStart();
180 
184  void filterMatch( ZyppSel selectable,
185  ZyppPkg pkg );
186 
191  void filterMatch( const QString & name,
192  const QString & summary,
193  FSize size );
194 
198  void filterFinished();
199 
200 
201 protected:
205  YQPkgPatchCategoryItem * category( YQPkgPatchCategory category );
206 
212  virtual void createNotInstalledContextMenu();
213 
219  virtual void createInstalledContextMenu();
220 
227  virtual void keyPressEvent( QKeyEvent * ev );
228 
229 
230  // Data members
231 
232  int _categoryCol;
233  YQPkgSelMapper _selMapper;
234  FilterCriteria _filterCriteria;
235  QMap<YQPkgPatchCategory, YQPkgPatchCategoryItem*> _categories;
236 };
237 
238 
239 
241 {
242 public:
243 
248  YQPkgPatchListItem( YQPkgPatchList * patchList,
249  ZyppSel selectable,
250  ZyppPatch zyppPatch );
251 
252 
257  YQPkgPatchListItem( YQPkgPatchList * patchList,
258  YQPkgPatchCategoryItem * parentCategory,
259  ZyppSel selectable,
260  ZyppPatch zyppPatch );
261 
265  virtual ~YQPkgPatchListItem();
266 
270  ZyppPatch zyppPatch() const { return _zyppPatch; }
271 
276  virtual void cycleStatus();
277 
284  virtual QString toolTip( int column );
285 
289  virtual bool operator< ( const QTreeWidgetItem & other ) const;
290 
291  // Columns
292 
293  int statusCol() const { return _patchList->statusCol(); }
294  int summaryCol() const { return _patchList->summaryCol(); }
295  int categoryCol() const { return _patchList->categoryCol(); }
296 
300  YQPkgPatchCategory patchCategory() const { return _patchCategory; }
301 
302 protected:
303  void init();
310  virtual void applyChanges();
311 
312 
313  // Data members
314 
315  YQPkgPatchList * _patchList;
316  ZyppPatch _zyppPatch;
317  YQPkgPatchCategory _patchCategory;
318 };
319 
320 class YQPkgPatchCategoryItem: public QY2ListViewItem
321 {
322 public:
323 
327  YQPkgPatchCategoryItem( YQPkgPatchCategory category, YQPkgPatchList * patternList );
328 
332  virtual ~YQPkgPatchCategoryItem();
333 
337  ZyppPatch firstPatch() const { return _firstPatch; }
338 
342  void addPatch( ZyppPatch patch );
343 
347  virtual bool operator< ( const QTreeWidgetItem & other ) const;
348 
349  /*
350  * Open or close this subtree
351  *
352  * Reimplemented from QListViewItem to force categories open at all times
353  **/
354  virtual void setExpanded( bool open );
355 
359  static YQPkgPatchCategory patchCategory( QString category );
360  static YQPkgPatchCategory patchCategory( const string & category );
364  static QString asString( YQPkgPatchCategory category );
365 
366 
370  YQPkgPatchCategory category() const { return _category; }
371 
372 
373 protected:
374 
384  void setTreeIcon( void );
385  //
386  // Data members
387  //
388 
389  YQPkgPatchCategory _category;
390  YQPkgPatchList * _patchList;
391  ZyppPatch _firstPatch;
392 };
393 
394 
395 #endif // ifndef YQPkgPatchList_h
ZyppPatch firstPatch() const
Definition: YQPkgPatchList.h:337
Abstract base class to display a list of zypp::ResObjects. Handles most generic stuff like setting st...
Definition: YQPkgObjList.h:68
Display a list of zypp::Patch objects.
Definition: YQPkgPatchList.h:74
FilterCriteria filterCriteria() const
Definition: YQPkgPatchList.h:145
virtual bool operator<(const QTreeWidgetItem &other) const
Definition: YQPkgPatchList.cc:668
void filterIfVisible()
Definition: YQPkgPatchList.cc:297
virtual void polish()
Definition: YQPkgPatchList.cc:162
virtual void applyChanges()
Definition: YQPkgPatchList.cc:552
ZyppPatch zyppPatch() const
Definition: YQPkgPatchList.h:270
void filter()
Definition: YQPkgPatchList.cc:305
virtual ~YQPkgPatchCategoryItem()
Definition: YQPkgPatchList.cc:629
virtual ~YQPkgPatchListItem()
Definition: YQPkgPatchList.cc:505
void fillList()
Definition: YQPkgPatchList.cc:196
virtual void keyPressEvent(QKeyEvent *ev)
Definition: YQPkgPatchList.cc:446
virtual void cycleStatus()
Definition: YQPkgPatchList.cc:511
void filterMatch(ZyppSel selectable, ZyppPkg pkg)
YQPkgPatchList(QWidget *parent)
Definition: YQPkgPatchList.cc:104
virtual bool operator<(const QTreeWidgetItem &other) const
Definition: YQPkgPatchList.cc:558
YQPkgPatchCategoryItem(YQPkgPatchCategory category, YQPkgPatchList *patternList)
Definition: YQPkgPatchList.cc:568
virtual void createInstalledContextMenu()
Definition: YQPkgPatchList.cc:400
virtual void message(const QString &text)
Definition: YQPkgPatchList.cc:287
static QString asString(YQPkgPatchCategory category)
Definition: YQPkgPatchList.cc:612
virtual void createNotInstalledContextMenu()
Definition: YQPkgPatchList.cc:386
void setTreeIcon(void)
Definition: YQPkgPatchList.cc:658
virtual ~YQPkgPatchList()
Definition: YQPkgPatchList.cc:155
ZyppSel selectable() const
Definition: YQPkgObjList.h:454
Definition: YQPkgSelMapper.h:55
Definition: YQPkgObjList.h:414
virtual QMenu * addAllInListSubMenu(QMenu *menu)
Definition: YQPkgPatchList.cc:420
void filterFinished()
void filterStart()
YQPkgPatchCategory category() const
Definition: YQPkgPatchList.h:370
int categoryCol() const
Definition: YQPkgPatchList.h:155
static YQPkgPatchCategory patchCategory(QString category)
Definition: YQPkgPatchList.cc:596
void addPatchItem(ZyppSel selectable, ZyppPatch zyppPatch)
Definition: YQPkgPatchList.cc:343
void addPatch(ZyppPatch patch)
Definition: YQPkgPatchList.cc:635
YQPkgPatchCategory patchCategory() const
Definition: YQPkgPatchList.h:300
YQPkgPatchListItem * selection() const
Definition: YQPkgPatchList.cc:373
virtual QString toolTip(int column)
Definition: YQPkgPatchList.cc:521
Definition: YQPkgPatchList.h:240
void setFilterCriteria(FilterCriteria filterCriteria)
Definition: YQPkgPatchList.cc:190
YQPkgPatchListItem(YQPkgPatchList *patchList, ZyppSel selectable, ZyppPatch zyppPatch)
Definition: YQPkgPatchList.cc:485
YQPkgPatchCategoryItem * category(YQPkgPatchCategory category)
Definition: YQPkgPatchList.cc:173
Definition: YQPkgPatchList.h:320