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 )
192 YQPkgClassItem * sel = dynamic_cast<YQPkgClassItem *>( 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;
269 YQPkgClassItem * pkgClassItem = dynamic_cast<YQPkgClassItem *> ( qItem );
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
322 dynamic_cast<const YQPkgClassItem *>(&otherListViewItem);
324 if ( otherCategoryItem )
325 return pkgClass() > otherCategoryItem->pkgClass();