]> icculus.org git repositories - duncan/yast2-qt4.git/blob - src/pkg/YQPackageSelectorBase.h
Duncan, for you
[duncan/yast2-qt4.git] / src / pkg / YQPackageSelectorBase.h
1 /*---------------------------------------------------------------------\
2 |                                                                      |
3 |                      __   __    ____ _____ ____                      |
4 |                      \ \ / /_ _/ ___|_   _|___ \                     |
5 |                       \ V / _` \___ \ | |   __) |                    |
6 |                        | | (_| |___) || |  / __/                     |
7 |                        |_|\__,_|____/ |_| |_____|                    |
8 |                                                                      |
9 |                               core system                            |
10 |                                                        (C) SuSE GmbH |
11 \----------------------------------------------------------------------/
12
13   File:       YQPackageSelectorBase.h
14
15   Author:     Stefan Hundhammer <sh@suse.de>
16
17 /-*/
18
19
20 #ifndef YQPackageSelectorBase_h
21 #define YQPackageSelectorBase_h
22
23 #include <QEvent>
24 #include "YPackageSelector.h"
25 #include "YQZypp.h"
26
27
28 class QY2ComboTabWidget;
29 class QAction;
30
31 class YQPkgConflictDialog;
32 class YQPkgDiskUsageList;
33
34
35 /**
36  * Abstract base class for package selectors.
37  **/
38 class YQPackageSelectorBase : public QWidget, public YPackageSelector
39 {
40     Q_OBJECT
41
42 protected:
43
44     /**
45      * Constructor
46      *
47      * Will initialize package and selection managers and create conflict
48      * dialogs.
49      **/
50     YQPackageSelectorBase( YWidget * parent, long modeFlags = 0 );
51
52     /**
53      * Destructor
54      **/
55     virtual ~YQPackageSelectorBase();
56
57
58 public:
59     /**
60      * Set enabled/disabled state.
61      *
62      * Reimplemented from YWidget.
63      **/
64     virtual void setEnabling( bool enabled );
65
66     /**
67      * Preferred width of the widget.
68      *
69      * Reimplemented from YWidget.
70      **/
71     virtual int preferredWidth();
72
73     /**
74      * Preferred height of the widget.
75      *
76      * Reimplemented from YWidget.
77      **/
78     virtual int preferredHeight();
79
80     /**
81      * Set the new size of the widget.
82      *
83      * Reimplemented from YWidget.
84      **/
85     virtual void setSize( int newWidth, int newHeight );
86
87     /**
88      * Accept the keyboard focus.
89      *
90      * Reimplemented from YWidget.
91      **/
92     virtual bool setKeyboardFocus();
93
94     /**
95      * Event filter to handle WM_CLOSE like "Cancel"
96      *
97      * Reimplemented from QObject.
98      **/
99     virtual bool eventFilter( QObject * obj, QEvent * event );
100
101     
102 public slots:
103
104     /**
105      * Resolve dependencies (unconditionally) for all resolvables.
106      *
107      * Returns QDialog::Accepted or QDialog::Rejected.
108      **/
109     int resolveDependencies();
110
111     /**
112      * Verifies dependencies of the currently installed system.
113      *
114      * Returns QDialog::Accepted or QDialog::Rejected.
115      **/
116     int verifySystem();
117
118     /**
119      * Check for disk overflow and post a warning dialog if necessary.
120      * The user can choose to override this warning.
121      *
122      * Returns QDialog::Accepted if no warning is necessary or if the user
123      * wishes to override the warning, QDialog::Rejected otherwise.
124      **/
125     int checkDiskUsage();
126
127     /**
128      * Display a list of automatically selected packages
129      * (excluding packages contained in any selections that are to be installed)
130      **/
131     void showAutoPkgList();
132
133     /**
134      * Close processing and abandon changes
135      **/
136     void reject();
137
138     /**
139      * Close processing and accept changes
140      **/
141     void accept();
142
143     /**
144      * Inform user about a feature that is not implemented yet.
145      * This should NEVER show up in the final version.
146      **/
147     void notImplemented();
148
149
150 signals:
151
152     /**
153      * Emitted when package resolving is started.
154      * This can be used for some kind of "busy display".
155      **/
156     void resolvingStarted();
157
158     /**
159      * Emitted when package resolving is finished.
160      **/
161     void resolvingFinished();
162
163
164 protected slots:
165
166     /**
167      * Reset all previously ignored dependency problems.
168      **/
169     void resetIgnoredDependencyProblems();
170
171
172 protected:
173
174     /**
175      * Show all license agreements the user has not confirmed yet
176      * (for all packages that will be installed, and in YOU mode also for
177      * patches).
178      *
179      * Returns 'true' if all licenses were confirmed, 'false' if one or more
180      * licenses were not confirmed (in which case some packages might be set to
181      * S_TABOO, which might require another resolver run).
182      **/
183     bool showPendingLicenseAgreements();
184
185     /**
186      * Show all license agreements in a resolvable range. To be used with
187      * zyppPkgBegin() and zyppPkgEnd() or with zyppPatchesBegin() and
188      * zyppPatchesEnd().
189      **/
190     bool showPendingLicenseAgreements( ZyppPoolIterator begin,
191                                        ZyppPoolIterator end );
192
193     /**
194      * Event handler for keyboard input - for debugging and testing.
195      *
196      * Reimplemented from QWidget.
197      **/
198     virtual void keyPressEvent( QKeyEvent * ev );
199
200
201     // Data members
202
203     bool                        _showChangesDialog;
204     YQPkgConflictDialog *       _pkgConflictDialog;
205     YQPkgDiskUsageList *        _diskUsageList;
206     QAction *                   _actionResetIgnoredDependencyProblems;
207 };
208
209
210
211 #endif // YQPackageSelectorBase_h