44 #define YUILogComponent "qt-pkg" 47 #include <QApplication> 49 #include "YQPackageSelector.h" 51 #include "YQPkgClassFilterView.h" 59 translatedText( YQPkgClass pkgClass )
63 case YQPkgClassNone:
return _(
"No Packages" );
64 case YQPkgClassRecommended:
return _(
"Recommended Packages" );
65 case YQPkgClassSuggested:
return _(
"Suggested Packages" );
66 case YQPkgClassOrphaned:
return _(
"Orphaned Packages" );
67 case YQPkgClassUnneeded:
return _(
"Unneeded Packages" );
68 case YQPkgClassMultiversion:
return _(
"Multiversion Packages" );
69 case YQPkgClassRetracted:
return _(
"Retracted Packages" );
70 case YQPkgClassRetractedInstalled:
return _(
"Retracted Installed Packages" );
71 case YQPkgClassAll:
return _(
"All Packages" );
77 return "Unknown PkgClass";
82 pkgClassIcon( YQPkgClass pkgClass )
87 return(
"preferences-other" );
90 return(
"preferences-desktop-locale" );
98 : QTreeWidget( parent )
100 setIconSize( QSize( 32, 32 ) );
101 setHeaderLabels( QStringList( _(
"Package Classification" ) ) );
102 setRootIsDecorated(
false );
103 setSortingEnabled(
true );
105 connect(
this, SIGNAL( currentItemChanged ( QTreeWidgetItem *, QTreeWidgetItem * ) ),
106 this, SLOT ( slotSelectionChanged ( QTreeWidgetItem * ) ) );
118 YQPkgClassFilterView::fillPkgClasses()
127 if ( ! zypp::sat::Pool::instance().multiversion().empty() )
149 for ( ZyppPoolIterator it = zyppPkgBegin();
153 ZyppSel selectable = *it;
160 if ( selectable->installedObj() )
162 match =
check( selectable, tryCastToZyppPkg( selectable->installedObj() ) );
164 if ( selectable->candidateObj() && ! match )
166 match =
check( selectable, tryCastToZyppPkg( selectable->candidateObj() ) );
174 zypp::ui::Selectable::picklist_iterator it = selectable->picklistBegin();
176 while ( it != selectable->picklistEnd() && ! match )
178 check( selectable, tryCastToZyppPkg( *it ) );
190 YQPkgClassFilterView::slotSelectionChanged( QTreeWidgetItem * newSelection )
198 switch ( sel->pkgClass() )
200 case YQPkgClassRecommended:
201 case YQPkgClassSuggested:
202 case YQPkgClassOrphaned:
203 case YQPkgClassUnneeded:
204 needSolverRun =
true;
208 needSolverRun =
false;
214 QApplication::setOverrideCursor(Qt::WaitCursor);
215 zypp::getZYpp()->resolver()->resolvePool();
216 QApplication::restoreOverrideCursor();
244 case YQPkgClassNone:
return false;
245 case YQPkgClassRecommended:
return zypp::PoolItem( pkg ).status().isRecommended();
246 case YQPkgClassSuggested:
return zypp::PoolItem( pkg ).status().isSuggested();
247 case YQPkgClassOrphaned:
return zypp::PoolItem( pkg ).status().isOrphaned();
248 case YQPkgClassUnneeded:
return zypp::PoolItem( pkg ).status().isUnneeded();
249 case YQPkgClassMultiversion:
return selectable->multiversionInstall();
250 case YQPkgClassRetracted:
return selectable->hasRetracted();
251 case YQPkgClassRetractedInstalled:
return selectable->hasRetractedInstalled();
252 case YQPkgClassAll:
return true;
264 QTreeWidgetItem * qItem = currentItem();
267 return YQPkgClassNone;
271 if ( ! pkgClassItem )
272 return YQPkgClassNone;
274 return pkgClassItem->pkgClass();
281 QTreeWidgetItemIterator it(
this );
287 if ( item && item->pkgClass() == pkgClass )
289 setCurrentItem( item );
304 YQPkgClass pkgClass )
305 : QTreeWidgetItem( parentFilterView )
306 , _pkgClass( pkgClass )
308 setText( 0, translatedText( pkgClass ) );
312 YQPkgClassItem::~YQPkgClassItem()
319 YQPkgClassItem::operator< (
const QTreeWidgetItem & otherListViewItem )
const 324 if ( otherCategoryItem )
325 return pkgClass() > otherCategoryItem->pkgClass();
Filter view for package classes (categories) like suggested, recommended, orphaned etc...
void filterFinished()
Emitted when filtering is finished.
bool check(ZyppSel selectable, ZyppPkg pkg)
Check if 'pkg' matches the selected package class and send a filterMatch signal if it does...
YQPkgClassFilterView(QWidget *parent)
Constructor.
void filter()
Filter according to the view's rules and current selection.
void filterStart()
Emitted when the filtering starts.
void filterMatch(ZyppSel selectable, ZyppPkg pkg)
Emitted during filtering for each pkg that matches the filter.
void showPkgClass(YQPkgClass pkgClass)
Show the specified package class, i.e.
YQPkgClass selectedPkgClass() const
Returns the currently selected YQPkgClass.
bool checkMatch(ZyppSel selectable, ZyppPkg pkg)
Check if 'pkg' matches the selected package class.
void filterIfVisible()
Same as filter(), but only if this widget is currently visible.
virtual ~YQPkgClassFilterView()
Destructor.