diff options
Diffstat (limited to 'opensuse/core/tdelibs/clever-menu.diff')
-rw-r--r-- | opensuse/core/tdelibs/clever-menu.diff | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/opensuse/core/tdelibs/clever-menu.diff b/opensuse/core/tdelibs/clever-menu.diff new file mode 100644 index 000000000..e2ae876c5 --- /dev/null +++ b/opensuse/core/tdelibs/clever-menu.diff @@ -0,0 +1,221 @@ +Index: kio/kio/kservice.cpp +=================================================================== +--- kio/kio/kservice.cpp.orig ++++ kio/kio/kservice.cpp +@@ -725,6 +725,20 @@ QString KService::untranslatedGenericNam + return v.isValid() ? v.toString() : QString::null; + } + ++bool KService::SuSEunimportant() const { ++ QMap<QString,QVariant>::ConstIterator it = m_mapProps.find( "X-SuSE-Unimportant" ); ++ if ( (it == m_mapProps.end()) || (!it.data().isValid())) ++ { ++ return false; ++ } ++ ++ QString aValue = it.data().toString(); ++ if (aValue == "true" || aValue == "on" || aValue == "yes") ++ return true; ++ else ++ return false; ++} ++ + QString KService::parentApp() const { + QMap<QString,QVariant>::ConstIterator it = m_mapProps.find( "X-KDE-ParentApp" ); + if ( (it == m_mapProps.end()) || (!it.data().isValid())) +Index: kio/kio/kservice.h +=================================================================== +--- kio/kio/kservice.h.orig ++++ kio/kio/kservice.h +@@ -327,6 +327,10 @@ public: + * @return true to suppress this service + */ + bool noDisplay() const; ++ /** ++ * check if the application entry is important ++ */ ++ bool SuSEunimportant() const; + + /** + * Name of the application this service belongs to. +Index: kio/kio/kservicegroup.cpp +=================================================================== +--- kio/kio/kservicegroup.cpp.orig ++++ kio/kio/kservicegroup.cpp +@@ -31,8 +31,10 @@ + class KServiceGroup::Private + { + public: +- Private() { m_bNoDisplay = false; m_bShowEmptyMenu = false;m_bShowInlineHeader=false;m_bInlineAlias=false; m_bAllowInline = false;m_inlineValue = 4;} ++ Private() { m_bNoDisplay = false; m_bShowEmptyMenu = false;m_bShowInlineHeader=false;m_bInlineAlias=false; m_bAllowInline = false; m_inlineValue = 4; m_bShortMenu = false; m_bGeneralDescription = false;} + bool m_bNoDisplay; ++ bool m_bShortMenu; ++ bool m_bGeneralDescription; + bool m_bShowEmptyMenu; + bool m_bShowInlineHeader; + bool m_bInlineAlias; +@@ -73,6 +75,11 @@ KServiceGroup::KServiceGroup( const QStr + m_strComment = config.readEntry( "Comment" ); + m_bDeleted = config.readBoolEntry( "Hidden", false ); + d->m_bNoDisplay = config.readBoolEntry( "NoDisplay", false ); ++ if (d->directoryEntryPath.startsWith(QDir::homeDirPath())) ++ d->m_bShortMenu = false; ++ else ++ d->m_bShortMenu = config.readBoolEntry( "X-SuSE-AutoShortMenu", true ); ++ d->m_bGeneralDescription = config.readBoolEntry( "X-SuSE-GeneralDescription", false ); + QStringList tmpList; + if (config.hasKey("OnlyShowIn")) + { +@@ -120,6 +127,10 @@ int KServiceGroup::childCount() + { + if (m_childCount == -1) + { ++ KConfig global("kdeglobals"); ++ global.setGroup("KDE"); ++ bool showUnimportant = global.readBoolEntry("showUnimportant", false); ++ + m_childCount = 0; + + for( List::ConstIterator it = m_serviceList.begin(); +@@ -130,7 +141,8 @@ int KServiceGroup::childCount() + { + KService *service = static_cast<KService *>(p); + if (!service->noDisplay()) +- m_childCount++; ++ if ( showUnimportant || !service->SuSEunimportant() ) ++ m_childCount++; + } + else if (p->isType(KST_KServiceGroup)) + { +@@ -203,6 +215,16 @@ QStringList KServiceGroup::suppressGener + return d->suppressGenericNames; + } + ++bool KServiceGroup::SuSEgeneralDescription() const ++{ ++ return d->m_bGeneralDescription; ++} ++ ++bool KServiceGroup::SuSEshortMenu() const ++{ ++ return d->m_bShortMenu; ++} ++ + void KServiceGroup::load( QDataStream& s ) + { + QStringList groupList; +@@ -214,7 +236,8 @@ void KServiceGroup::load( QDataStream& s + s >> m_strCaption >> m_strIcon >> + m_strComment >> groupList >> m_strBaseGroupName >> m_childCount >> + noDisplay >> d->suppressGenericNames >> d->directoryEntryPath >> +- d->sortOrder >> _showEmptyMenu >> inlineHeader >> _inlineAlias >> _allowInline; ++ d->sortOrder >> _showEmptyMenu >> inlineHeader >> _inlineAlias >> ++ _allowInline >> d->m_bShortMenu >> d->m_bGeneralDescription; + + d->m_bNoDisplay = (noDisplay != 0); + d->m_bShowEmptyMenu = ( _showEmptyMenu != 0 ); +@@ -286,7 +309,8 @@ void KServiceGroup::save( QDataStream& s + s << m_strCaption << m_strIcon << + m_strComment << groupList << m_strBaseGroupName << m_childCount << + noDisplay << d->suppressGenericNames << d->directoryEntryPath << +- d->sortOrder <<_showEmptyMenu <<inlineHeader<<_inlineAlias<<_allowInline; ++ d->sortOrder <<_showEmptyMenu <<inlineHeader<<_inlineAlias<<_allowInline << ++ d->m_bShortMenu << d->m_bGeneralDescription; + } + + KServiceGroup::List +@@ -312,6 +336,12 @@ static void addItem(KServiceGroup::List + KServiceGroup::List + KServiceGroup::entries(bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName) + { ++ return SuSEentries(sort, excludeNoDisplay, allowSeparators, sortByGenericName); ++} ++ ++KServiceGroup::List ++KServiceGroup::SuSEentries(bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName, bool excludeSuSEunimportant) ++{ + KServiceGroup *group = this; + + // If the entries haven't been loaded yet, we have to reload ourselves +@@ -338,11 +368,18 @@ KServiceGroup::entries(bool sort, bool e + for (List::ConstIterator it(group->m_serviceList.begin()); it != group->m_serviceList.end(); ++it) + { + KSycocaEntry *p = (*it); ++ if( !p->isType(KST_KServiceGroup) && !p->isType(KST_KService)) ++ continue; + bool noDisplay = p->isType(KST_KServiceGroup) ? + static_cast<KServiceGroup *>(p)->noDisplay() : + static_cast<KService *>(p)->noDisplay(); + if (excludeNoDisplay && noDisplay) + continue; ++ bool SuSEunimportant = p->isType(KST_KService) && ++ static_cast<KService *>(p)->SuSEunimportant(); ++ if (excludeSuSEunimportant && SuSEunimportant) ++ continue; ++ + // Choose the right list + KSortableValueList<SPtr,QCString> & list = p->isType(KST_KServiceGroup) ? glist : slist; + QString name; +@@ -374,6 +411,15 @@ KServiceGroup::entries(bool sort, bool e + } + list.insert(key,SPtr(*it)); + } ++ ++ return group->SuSEsortEntries( slist, glist, excludeNoDisplay, allowSeparators ); ++} ++ ++KServiceGroup::List ++KServiceGroup::SuSEsortEntries( KSortableValueList<SPtr,QCString> slist, KSortableValueList<SPtr,QCString> glist, bool excludeNoDisplay, bool allowSeparators ) ++{ ++ KServiceGroup *group = this; ++ + // Now sort + slist.sort(); + glist.sort(); +@@ -415,6 +461,8 @@ KServiceGroup::entries(bool sort, bool e + // TODO: This prevents duplicates + for(KSortableValueList<SPtr,QCString>::Iterator it2 = slist.begin(); it2 != slist.end(); ++it2) + { ++ if (!(*it2).value()->isType(KST_KService)) ++ continue; + KService *service = (KService *)((KSycocaEntry *)((*it2).value())); + if (service->menuId() == item) + { +Index: kio/kio/kservicegroup.h +=================================================================== +--- kio/kio/kservicegroup.h.orig ++++ kio/kio/kservicegroup.h +@@ -26,6 +26,7 @@ + #include <qvariant.h> + + #include <kdesktopfile.h> ++#include <ksortablevaluelist.h> + + #include "ksycocaentry.h" + #include "ksycocatype.h" +@@ -201,6 +202,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. + */ +@@ -238,6 +245,12 @@ public: + */ + virtual List entries(bool sorted = false); + ++ /* ++ * UNOFFICIAL SuSE special ++ */ ++ virtual List SuSEentries(bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName, bool excludeSuSEunimportant = true); ++ virtual List SuSEsortEntries( KSortableValueList<SPtr,QCString> slist, KSortableValueList<SPtr,QCString> glist, bool excludeNoDisplay, bool allowSeparators ); ++ + /** + * Returns a non-empty string if the group is a special base group. + * By default, "Settings/" is the kcontrol base group ("settings") |