Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
kdelibs4
clever-menu.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File clever-menu.diff of Package kdelibs4
--- kdecore/services/kservicegroup_p.h +++ kdecore/services/kservicegroup_p.h @@ -31,7 +31,8 @@ public: KServiceGroupPrivate(const QString &path) : KSycocaEntryPrivate(path), - m_bNoDisplay(false), m_bShowEmptyMenu(false), m_bShowInlineHeader(false), m_bInlineAlias(false), + m_bNoDisplay(false), m_bShortMenu(false), m_bGeneralDescription(false), + m_bShowEmptyMenu(false), m_bShowInlineHeader(false), m_bInlineAlias(false), m_bAllowInline(false), m_inlineValue(4), m_bDeep(false), m_childCount(-1) { } @@ -58,6 +59,13 @@ public: KServiceGroup::List entries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName); + + /** + * UNOFFICIAL SuSE special + */ + KServiceGroup::List SuSEentries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName, bool excludeSuSEunimportant = true); + KServiceGroup::List SuSEsortEntries( KServiceGroup *group, KSortableList<KServiceGroup::SPtr,QByteArray> slist, KSortableList<KServiceGroup::SPtr,QByteArray> glist, bool excludeNoDisplay, bool allowSeparators ); + /** * This function parse attributes into menu */ @@ -65,6 +73,8 @@ public: bool m_bNoDisplay : 1; + bool m_bShortMenu : 1; + bool m_bGeneralDescription : 1; bool m_bShowEmptyMenu : 1; bool m_bShowInlineHeader : 1; bool m_bInlineAlias : 1; --- kdecore/services/kservice.h +++ kdecore/services/kservice.h @@ -331,6 +331,12 @@ public: bool noDisplay() const; /** + * check if the application entry is important + * SuSE special, not part of KDE API + */ + bool SuSEunimportant() const; + + /** * Name of the application this service belongs to. * (Useful for e.g. plugins) * @return the parent application, or QString() if not set --- kdecore/services/kservicegroup.h +++ kdecore/services/kservicegroup.h @@ -22,6 +22,7 @@ #include <kdecore_export.h> #include <ksycocaentry.h> #include <kservice.h> +#include <ksortablelist.h> class KBuildServiceGroupFactory; @@ -173,6 +174,12 @@ public: void setLayoutInfo(const QStringList &layout); /** + * SuSE special, not part of KDE API + */ + bool SuSEshortMenu() const; + bool SuSEgeneralDescription() const; + + /** * @internal * Returns information related to the layout of services in this group. */ @@ -199,6 +206,12 @@ public: List entries(bool sorted = false); /** + * UNOFFICIAL SuSE special + */ + KServiceGroup::List SuSEsortEntries( KSortableList<KServiceGroup::SPtr,QByteArray> slist, KSortableList<KServiceGroup::SPtr,QByteArray> glist, bool excludeNoDisplay, bool allowSeparators ); + + + /** * options for groupEntries and serviceEntries */ enum EntriesOption --- kdecore/services/kservice.cpp +++ kdecore/services/kservice.cpp @@ -675,6 +675,12 @@ QString KService::untranslatedGenericNam return v.isValid() ? v.toString() : QString(); } + +bool KService::SuSEunimportant() const { + QVariant v = property("X-SuSE-Unimportant", QVariant::Bool); + return v.isValid() && v.toBool(); +} + QString KService::parentApp() const { Q_D(const KService); QMap<QString,QVariant>::ConstIterator it = d->m_mapProps.find( "X-KDE-ParentApp" ); --- kdecore/services/kservicegroup.cpp +++ kdecore/services/kservicegroup.cpp @@ -30,7 +30,7 @@ #include <ksortablelist.h> #include <kdesktopfile.h> #include <kconfiggroup.h> - +#include <QDir> KServiceGroup::KServiceGroup( const QString & name ) : KSycocaEntry(*new KServiceGroupPrivate(name)) @@ -62,6 +62,11 @@ void KServiceGroupPrivate::load(const QS m_strComment = config.readEntry( "Comment" ); deleted = config.readEntry("Hidden", false ); m_bNoDisplay = desktopFile.noDisplay(); + if (directoryEntryPath.startsWith(QDir::homePath())) + m_bShortMenu = false; + else + m_bShortMenu = config.readEntry( "X-SuSE-AutoShortMenu", true ); + m_bGeneralDescription = config.readEntry( "X-SuSE-GeneralDescription", false ); m_strBaseGroupName = config.readEntry( "X-KDE-BaseGroup" ); suppressGenericNames = config.readEntry( "X-KDE-SuppressGenericNames", QStringList() ); // d->sortOrder = config.readEntry("SortOrder", QStringList()); @@ -125,6 +130,10 @@ int KServiceGroupPrivate::childCount() c { if (m_childCount == -1) { + KConfig cfg("kdeglobals"); + KConfigGroup global = cfg.group("KDE"); + bool showUnimportant = global.readEntry("showUnimportant", false); + m_childCount = 0; for( KServiceGroup::List::ConstIterator it = m_serviceList.begin(); @@ -135,7 +144,8 @@ int KServiceGroupPrivate::childCount() c { KService::Ptr service = KService::Ptr::staticCast( p ); if (!service->noDisplay()) - m_childCount++; + if ( showUnimportant || !service->SuSEunimportant() ) + m_childCount++; } else if (p->isType(KST_KServiceGroup)) { @@ -220,6 +230,18 @@ QStringList KServiceGroup::suppressGener return d->suppressGenericNames; } +bool KServiceGroup::SuSEgeneralDescription() const +{ + Q_D(const KServiceGroup); + return d->m_bGeneralDescription; +} + +bool KServiceGroup::SuSEshortMenu() const +{ + Q_D(const KServiceGroup); + return d->m_bShortMenu; +} + void KServiceGroupPrivate::load( QDataStream& s ) { QStringList groupList; @@ -228,16 +250,21 @@ void KServiceGroupPrivate::load( QDataSt qint8 inlineHeader; qint8 _inlineAlias; qint8 _allowInline; + qint8 _shortMenu; + qint8 _generalDescription; s >> m_strCaption >> m_strIcon >> m_strComment >> groupList >> m_strBaseGroupName >> m_childCount >> noDisplay >> suppressGenericNames >> directoryEntryPath >> - sortOrder >> _showEmptyMenu >> inlineHeader >> _inlineAlias >> _allowInline; + sortOrder >> _showEmptyMenu >> inlineHeader >> _inlineAlias >> _allowInline >> + _shortMenu >> _generalDescription; m_bNoDisplay = (noDisplay != 0); m_bShowEmptyMenu = ( _showEmptyMenu != 0 ); m_bShowInlineHeader = ( inlineHeader != 0 ); m_bInlineAlias = ( _inlineAlias != 0 ); m_bAllowInline = ( _allowInline != 0 ); + m_bShortMenu = (_shortMenu != 0); + m_bGeneralDescription = (_generalDescription != 0); if (m_bDeep) { @@ -301,10 +328,12 @@ void KServiceGroupPrivate::save( QDataSt qint8 inlineHeader = m_bShowInlineHeader ? 1 : 0; qint8 _inlineAlias = m_bInlineAlias ? 1 : 0; qint8 _allowInline = m_bAllowInline ? 1 : 0; + qint8 _shortMenu = m_bShortMenu ? 1 : 0; s << m_strCaption << m_strIcon << m_strComment << groupList << m_strBaseGroupName << m_childCount << noDisplay << suppressGenericNames << directoryEntryPath << - sortOrder <<_showEmptyMenu <<inlineHeader<<_inlineAlias<<_allowInline; + sortOrder <<_showEmptyMenu <<inlineHeader<<_inlineAlias<<_allowInline << + _shortMenu << m_bGeneralDescription; } QList<KServiceGroup::Ptr> KServiceGroup::groupEntries(EntriesOptions options) @@ -364,6 +393,13 @@ KServiceGroup::entries(bool sort, bool e return d->entries(this, sort, excludeNoDisplay, allowSeparators, sortByGenericName); } +KServiceGroup::List +KServiceGroup::SuSEsortEntries( KSortableList<KServiceGroup::SPtr,QByteArray> slist, KSortableList<KServiceGroup::SPtr,QByteArray> glist, bool excludeNoDisplay, bool allowSeparators ) +{ + Q_D(KServiceGroup); + return d->SuSEsortEntries( this, slist, glist, excludeNoDisplay, allowSeparators ); +} + static void addItem(KServiceGroup::List &sorted, const KSycocaEntry::Ptr &p, bool &addSeparator) { if (addSeparator && !sorted.isEmpty()) @@ -375,6 +411,12 @@ static void addItem(KServiceGroup::List KServiceGroup::List KServiceGroupPrivate::entries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName) { + return SuSEentries(group, sort, excludeNoDisplay, allowSeparators, sortByGenericName); +} + +KServiceGroup::List +KServiceGroupPrivate::SuSEentries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName, bool excludeSuSEunimportant) +{ KServiceGroup::Ptr grp; // If the entries haven't been loaded yet, we have to reload ourselves @@ -401,11 +443,18 @@ KServiceGroupPrivate::entries(KServiceGr for (KServiceGroup::List::ConstIterator it(group->d_func()->m_serviceList.begin()); it != group->d_func()->m_serviceList.end(); ++it) { KSycocaEntry::Ptr p = (*it); + if( !p->isType(KST_KServiceGroup) && !p->isType(KST_KService)) + continue; bool noDisplay = p->isType(KST_KServiceGroup) ? static_cast<KServiceGroup *>(p.data())->noDisplay() : static_cast<KService *>(p.data())->noDisplay(); if (excludeNoDisplay && noDisplay) continue; + bool SuSEunimportant = p->isType(KST_KService) && + static_cast<KService *>(p.data())->SuSEunimportant(); + if (excludeSuSEunimportant && SuSEunimportant) + continue; + // Choose the right list KSortableList<KServiceGroup::SPtr,QByteArray> & list = p->isType(KST_KServiceGroup) ? glist : slist; QString name; @@ -438,6 +487,12 @@ KServiceGroupPrivate::entries(KServiceGr } list.insert(key,KServiceGroup::SPtr(*it)); } + return SuSEsortEntries( group, slist, glist, excludeNoDisplay, allowSeparators ); +} + +KServiceGroup::List +KServiceGroupPrivate::SuSEsortEntries( KServiceGroup *group, KSortableList<KServiceGroup::SPtr,QByteArray> slist, KSortableList<KServiceGroup::SPtr,QByteArray> glist, bool excludeNoDisplay, bool allowSeparators ) +{ // Now sort slist.sort(); glist.sort(); @@ -479,6 +534,8 @@ KServiceGroupPrivate::entries(KServiceGr // TODO: This prevents duplicates for(KSortableList<KServiceGroup::SPtr,QByteArray>::Iterator it2 = slist.begin(); it2 != slist.end(); ++it2) { + if (!(*it2).value()->isType(KST_KService)) + continue; const KService::Ptr service = KService::Ptr::staticCast( (*it2).value() ); if (service->menuId() == item) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor