You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
8.1 KiB
222 lines
8.1 KiB
13 years ago
|
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")
|