44 #define YUILogComponent "qt-pkg"
47 #include <QApplication>
49 #include "YQPackageSelector.h"
50 #include "zypp/sat/LookupAttr.h"
52 #include "YQPkgPackageKitGroupsFilterView.h"
58 translatedText( YPkgGroupEnum group )
62 case PK_GROUP_ENUM_ACCESSIBILITY:
return _(
"Accessibility" );
63 case PK_GROUP_ENUM_ACCESSORIES:
return _(
"Accessories" );
64 case PK_GROUP_ENUM_EDUCATION:
return _(
"Education" );
65 case PK_GROUP_ENUM_GAMES:
return _(
"Games" );
66 case PK_GROUP_ENUM_GRAPHICS:
return _(
"Graphics" );
67 case PK_GROUP_ENUM_INTERNET:
return _(
"Internet" );
68 case PK_GROUP_ENUM_OFFICE:
return _(
"Office" );
69 case PK_GROUP_ENUM_OTHER:
return _(
"Other" );
70 case PK_GROUP_ENUM_PROGRAMMING:
return _(
"Programming" );
71 case PK_GROUP_ENUM_MULTIMEDIA:
return _(
"Multimedia" );
72 case PK_GROUP_ENUM_SYSTEM:
return _(
"System" );
73 case PK_GROUP_ENUM_DESKTOP_GNOME:
return _(
"GNOME Desktop" );
74 case PK_GROUP_ENUM_DESKTOP_KDE:
return _(
"KDE Desktop" );
75 case PK_GROUP_ENUM_DESKTOP_XFCE:
return _(
"XFCE Desktop" );
76 case PK_GROUP_ENUM_DESKTOP_OTHER:
return _(
"Other Desktops" );
77 case PK_GROUP_ENUM_PUBLISHING:
return _(
"Publishing" );
78 case PK_GROUP_ENUM_SERVERS:
return _(
"Servers" );
79 case PK_GROUP_ENUM_FONTS:
return _(
"Fonts" );
80 case PK_GROUP_ENUM_ADMIN_TOOLS:
return _(
"Admin Tools" );
81 case PK_GROUP_ENUM_LEGACY:
return _(
"Legacy" );
82 case PK_GROUP_ENUM_LOCALIZATION:
return _(
"Localization" );
83 case PK_GROUP_ENUM_VIRTUALIZATION:
return _(
"Virtualization" );
84 case PK_GROUP_ENUM_SECURITY:
return _(
"Security" );
85 case PK_GROUP_ENUM_POWER_MANAGEMENT:
return _(
"Power Management" );
86 case PK_GROUP_ENUM_COMMUNICATION:
return _(
"Communication" );
87 case PK_GROUP_ENUM_NETWORK:
return _(
"Network" );
88 case PK_GROUP_ENUM_MAPS:
return _(
"Maps" );
89 case PK_GROUP_ENUM_REPOS:
return _(
"Software Sources" );
90 case PK_GROUP_ENUM_UNKNOWN:
return _(
"Unknown Group" );
92 case YPKG_GROUP_ALL:
return _(
"All Packages" );
93 case YPKG_GROUP_SUGGESTED:
return _(
"Suggested Packages" );
94 case YPKG_GROUP_RECOMMENDED:
return _(
"Recommended Packages");
95 case YPKG_GROUP_ORPHANED:
return _(
"Orphaned Packages" );
96 case YPKG_GROUP_UNNEEDED:
return _(
"Unneeded Packages" );
97 case YPKG_GROUP_MULTIVERSION:
return _(
"Multiversion Packages" );
102 return _(
"Unknown Group");
107 groupIcon( YPkgGroupEnum group )
111 case PK_GROUP_ENUM_ACCESSIBILITY:
return(
"package_main" );
112 case PK_GROUP_ENUM_ACCESSORIES:
return(
"package_applications" );
113 case PK_GROUP_ENUM_EDUCATION:
return(
"package_edutainment" );
114 case PK_GROUP_ENUM_GAMES:
return(
"package_games" );
115 case PK_GROUP_ENUM_GRAPHICS:
return(
"package_graphics" );
116 case PK_GROUP_ENUM_INTERNET:
return(
"package_network" );
117 case PK_GROUP_ENUM_OFFICE:
return(
"package_office_addressbook" );
118 case PK_GROUP_ENUM_OTHER:
return(
"package_main" );
119 case PK_GROUP_ENUM_PROGRAMMING:
return(
"package_development" );
120 case PK_GROUP_ENUM_MULTIMEDIA:
return(
"package_multimedia" );
121 case PK_GROUP_ENUM_SYSTEM:
return(
"yast-system" );
122 case PK_GROUP_ENUM_DESKTOP_GNOME:
return(
"pattern-gnome" );
123 case PK_GROUP_ENUM_DESKTOP_KDE:
return(
"pattern-kde" );
124 case PK_GROUP_ENUM_DESKTOP_XFCE:
return(
"package_utility_desktop" );
125 case PK_GROUP_ENUM_DESKTOP_OTHER:
return(
"package_utility_desktop" );
126 case PK_GROUP_ENUM_PUBLISHING:
return(
"package_main" );
127 case PK_GROUP_ENUM_SERVERS:
return(
"package_editors" );
128 case PK_GROUP_ENUM_FONTS:
return(
"package_main" );
129 case PK_GROUP_ENUM_ADMIN_TOOLS:
return(
"yast-sysconfig" );
130 case PK_GROUP_ENUM_LEGACY:
return(
"package_main" );
131 case PK_GROUP_ENUM_LOCALIZATION:
return(
"yast-language" );
132 case PK_GROUP_ENUM_VIRTUALIZATION:
return(
"yast-create-new-vm" );
133 case PK_GROUP_ENUM_SECURITY:
return(
"yast-security" );
134 case PK_GROUP_ENUM_POWER_MANAGEMENT:
return(
"package_settings_power" );
135 case PK_GROUP_ENUM_COMMUNICATION:
return(
"yast-modem" );
136 case PK_GROUP_ENUM_NETWORK:
return(
"package_network" );
137 case PK_GROUP_ENUM_MAPS:
return(
"package_main" );
138 case PK_GROUP_ENUM_REPOS:
return(
"package_main" );
139 case PK_GROUP_ENUM_UNKNOWN:
return(
"package_main" );
141 case YPKG_GROUP_SUGGESTED:
return(
"package_edutainment_languages" );
142 case YPKG_GROUP_RECOMMENDED:
return(
"package_edutainment_languages" );
143 case YPKG_GROUP_ORPHANED:
return(
"package_edutainment_languages" );
144 case YPKG_GROUP_UNNEEDED:
return(
"package_edutainment_languages" );
145 case YPKG_GROUP_MULTIVERSION:
return(
"package_edutainment_languages" );
146 case YPKG_GROUP_ALL:
return(
"package_main" );
156 rpmGroupToPackageKitGroup(
const string & rpmGroup )
158 string group = zypp::str::toLower( rpmGroup );
160 if ( group.find(
"amusements/teaching" ) != string::npos )
return PK_GROUP_ENUM_EDUCATION;
161 if ( group.find(
"amusements" ) != string::npos )
return PK_GROUP_ENUM_GAMES;
162 if ( group.find(
"development" ) != string::npos )
return PK_GROUP_ENUM_PROGRAMMING;
163 if ( group.find(
"hardware" ) != string::npos )
return PK_GROUP_ENUM_SYSTEM;
164 if ( group.find(
"archiving" ) != string::npos )
return PK_GROUP_ENUM_ADMIN_TOOLS;
165 if ( group.find(
"clustering" ) != string::npos )
return PK_GROUP_ENUM_ADMIN_TOOLS;
166 if ( group.find(
"system/monitoring" ) != string::npos )
return PK_GROUP_ENUM_ADMIN_TOOLS;
167 if ( group.find(
"databases" ) != string::npos )
return PK_GROUP_ENUM_ADMIN_TOOLS;
168 if ( group.find(
"system/management" ) != string::npos )
return PK_GROUP_ENUM_ADMIN_TOOLS;
169 if ( group.find(
"graphics" ) != string::npos )
return PK_GROUP_ENUM_GRAPHICS;
170 if ( group.find(
"multimedia" ) != string::npos )
return PK_GROUP_ENUM_MULTIMEDIA;
171 if ( group.find(
"network" ) != string::npos )
return PK_GROUP_ENUM_NETWORK;
172 if ( group.find(
"office" ) != string::npos )
return PK_GROUP_ENUM_OFFICE;
173 if ( group.find(
"text" ) != string::npos )
return PK_GROUP_ENUM_OFFICE;
174 if ( group.find(
"editors" ) != string::npos )
return PK_GROUP_ENUM_OFFICE;
175 if ( group.find(
"publishing" ) != string::npos )
return PK_GROUP_ENUM_PUBLISHING;
176 if ( group.find(
"security" ) != string::npos )
return PK_GROUP_ENUM_SECURITY;
177 if ( group.find(
"telephony" ) != string::npos )
return PK_GROUP_ENUM_COMMUNICATION;
178 if ( group.find(
"gnome" ) != string::npos )
return PK_GROUP_ENUM_DESKTOP_GNOME;
179 if ( group.find(
"kde" ) != string::npos )
return PK_GROUP_ENUM_DESKTOP_KDE;
180 if ( group.find(
"xfce" ) != string::npos )
return PK_GROUP_ENUM_DESKTOP_XFCE;
181 if ( group.find(
"gui/other" ) != string::npos )
return PK_GROUP_ENUM_DESKTOP_OTHER;
182 if ( group.find(
"localization" ) != string::npos )
return PK_GROUP_ENUM_LOCALIZATION;
183 if ( group.find(
"system" ) != string::npos )
return PK_GROUP_ENUM_SYSTEM;
184 if ( group.find(
"scientific" ) != string::npos )
return PK_GROUP_ENUM_EDUCATION;
186 return PK_GROUP_ENUM_UNKNOWN;
193 : QTreeWidget( parent )
194 , _selectedGroup(YPKG_GROUP_ALL)
196 setIconSize(QSize(32,32));
197 setHeaderLabels( QStringList(_(
"Package Groups" )) );
198 setRootIsDecorated(
false );
199 setSortingEnabled(
true );
200 connect(
this, SIGNAL( currentItemChanged ( QTreeWidgetItem *, QTreeWidgetItem * ) ),
201 this, SLOT ( slotSelectionChanged ( QTreeWidgetItem * ) ) );
214 YQPkgPackageKitGroupsFilterView::fillGroups()
216 if ( _groupsMap.empty() )
218 zypp::sat::LookupAttr rpmgroups( zypp::sat::SolvAttr::group );
219 for ( zypp::sat::LookupAttr::iterator it = rpmgroups.begin();
220 it != rpmgroups.end();
224 std::map<std::string, YPkgGroupEnum>::const_iterator itg = _groupsCache.find(it.asString());
225 if ( itg == _groupsCache.end() )
227 group = rpmGroupToPackageKitGroup( it.asString() );
228 _groupsCache[it.asString()] = group;
237 if ( _groupsMap.find(group) == _groupsMap.end() )
244 _groupsMap[ YPKG_GROUP_RECOMMENDED ] =
new YQPkgPackageKitGroup(
this, YPKG_GROUP_RECOMMENDED );
248 if ( ! zypp::sat::Pool::instance().multiversionEmpty() )
249 _groupsMap[ YPKG_GROUP_MULTIVERSION] =
new YQPkgPackageKitGroup(
this, YPKG_GROUP_MULTIVERSION );
282 for ( ZyppPoolIterator it = zyppPkgBegin();
286 ZyppSel selectable = *it;
297 check( selectable, tryCastToZyppPkg( selectable->candidateObj() ) ) ||
298 check( selectable, tryCastToZyppPkg( selectable->installedObj() ) );
304 ! selectable->candidateObj() &&
305 ! selectable->installedObj() )
306 check( selectable, tryCastToZyppPkg( selectable->theObj() ) );
315 YQPkgPackageKitGroupsFilterView::slotSelectionChanged( QTreeWidgetItem * newSelection )
321 _selectedGroup = sel->group();
324 if ( _selectedGroup == YPKG_GROUP_SUGGESTED ||
325 _selectedGroup == YPKG_GROUP_RECOMMENDED ||
326 _selectedGroup == YPKG_GROUP_ORPHANED ||
327 _selectedGroup == YPKG_GROUP_UNNEEDED )
330 QApplication::setOverrideCursor(Qt::WaitCursor);
331 zypp::getZYpp()->resolver()->resolvePool();
332 QApplication::restoreOverrideCursor();
338 _selectedGroup = YPKG_GROUP_ALL;
352 if (
selection()->group() == YPKG_GROUP_ALL )
358 YPkgGroupEnum pk_group = rpmGroupToPackageKitGroup( pkg->group() );
367 zypp::PoolItem(pkg).status().isRecommended() )
373 zypp::PoolItem(pkg).status().isSuggested() )
379 zypp::PoolItem(pkg).status().isOrphaned() )
385 zypp::PoolItem(pkg).status().isUnneeded() )
392 selectable->multiversionInstall() )
406 QTreeWidgetItem * item = currentItem();
418 YPkgGroupEnum group )
419 : QTreeWidgetItem( parentFilterView )
420 , _filterView( parentFilterView )
425 f.setPixelSize( (
int) ( fm.height() * 1.1 ) );
428 string iconName = groupIcon( group );
429 setText( 0, translatedText( group ) );
434 YQPkgPackageKitGroup::~YQPkgPackageKitGroup()
441 YQPkgPackageKitGroup::operator< (
const QTreeWidgetItem & otherListViewItem )
const
446 if ( otherCategoryItem )
447 return group() > otherCategoryItem->group();
453 #include "YQPkgPackageKitGroupsFilterView.moc"