Sophie

Sophie

distrib > Mandriva > 2006.0 > i586 > media > main-src > by-pkgid > a6bc312ce50b5c8d0c51736e58ac32bc > files > 349

kdebase-3.4.2-55mdk.src.rpm

--- kdebase-3.4.0/kicker/ui/service_mnu.h.support_complet_xdg_menu	2005-04-08 12:02:39.000000000 -0400
+++ kdebase-3.4.0/kicker/ui/service_mnu.h	2005-04-12 05:30:07.366246258 -0400
@@ -29,7 +29,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE 
 #include <ksycocaentry.h>
 #include <kservice.h>
 #include <kpanelmenu.h>
-
+#include <kservicegroup.h>
 /**
  * PanelServiceMenu is filled with KDE services and service groups. The sycoca
  * database is queried and the hierarchical structure built by creating child
@@ -49,7 +49,7 @@ class KDE_EXPORT PanelServiceMenu : publ
 
 public:
     PanelServiceMenu(const QString & label, const QString & relPath,
-		     QWidget* parent  = 0, const char* name = 0, bool addmenumode = false);
+		     QWidget* parent  = 0, const char* name = 0, bool addmenumode = false,const QString &insertInlineHeader = QString::null);
 
     virtual ~PanelServiceMenu();
 
@@ -65,7 +65,8 @@ public:
     void selectFirstItem();
 
 private:
-    void insertMenuItem(KService::Ptr & s, int nId, int nIndex = -1, const QStringList *suppressGenericNames=0);
+    void insertMenuItem(KService::Ptr & s, int nId, int nIndex = -1, const QStringList *suppressGenericNames=0, const QString &aliasname = QString::null);
+    void fillMenu( KServiceGroup::Ptr &_root, KServiceGroup::List &_list, const QString &_relPath, int & id );
 
 protected slots:
     virtual void initialize();
@@ -79,7 +80,7 @@ protected slots:
 
 protected:
     virtual PanelServiceMenu * newSubMenu(const QString & label, const QString & relPath,
-					  QWidget * parent, const char * name);
+					  QWidget * parent, const char * name, const QString & _inlineHeader=QString::null);
 
     virtual void mousePressEvent(QMouseEvent *);
     virtual void mouseReleaseEvent(QMouseEvent *);
@@ -97,7 +98,7 @@ protected:
 
     bool loaded_;
     bool excludeNoDisplay_;
-
+    QString insertInlineHeader_;
     QPopupMenu * opPopup_;
     bool clearOnClose_;
     bool addmenumode_;
--- kdebase-3.4.0/kicker/ui/service_mnu.cpp.support_complet_xdg_menu	2005-04-08 12:02:39.000000000 -0400
+++ kdebase-3.4.0/kicker/ui/service_mnu.cpp	2005-04-12 06:58:06.509220576 -0400
@@ -61,10 +61,11 @@ const int kRecentMenusOffset = 1001;
 static RecentlyLaunchedApps s_RecentApps;
 
 PanelServiceMenu::PanelServiceMenu(const QString & label, const QString & relPath, QWidget * parent,
-                                   const char * name, bool addmenumode)
+                                   const char * name, bool addmenumode,const QString &insertInlineHeader)
     : KPanelMenu(label, parent, name),
       relPath_(relPath),
       clearOnClose_(false),
+	insertInlineHeader_( insertInlineHeader ),
       addmenumode_(addmenumode),
       popupMenu_(0)
 {
@@ -266,11 +267,25 @@ void PanelServiceMenu::doInitialize()
             id++;
         }
     }
+    if ( !insertInlineHeader_.isEmpty() )
+    {
+        int mid = insertItem(new PopupMenuTitle(insertInlineHeader_, font()), -1, 0);
+        setItemEnabled( mid, false );
+    }
+    fillMenu( root, list, relPath_, id );
 
-    QStringList suppressGenericNames = root->suppressGenericNames();
 
-    KServiceGroup::List::ConstIterator it = list.begin();
-    for (; it != list.end(); ++it) {
+}
+
+void PanelServiceMenu::fillMenu(KServiceGroup::Ptr& _root,
+                                KServiceGroup::List& _list,
+                                const QString& /* _relPath */,
+                                int& id)
+{
+    QStringList suppressGenericNames = _root->suppressGenericNames();
+
+    KServiceGroup::List::ConstIterator it = _list.begin();
+    for (; it != _list.end(); ++it) {
 
         KSycocaEntry * e = *it;
 
@@ -279,35 +294,72 @@ void PanelServiceMenu::doInitialize()
             KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e));
             QString groupCaption = g->caption();
 
-            // Avoid adding empty groups.
+           // Avoid adding empty groups.
             KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(g->relPath());
-            if (subMenuRoot->childCount() == 0)
-                continue;
 
-            // Ignore dotfiles.
-            if ((g->name().at(0) == '.'))
+            int nbChildCount = subMenuRoot->childCount();
+            if ( nbChildCount == 0 && !g->showEmptyMenu())
                 continue;
-
+		groupCaption.replace("&", "&&");
+	    QString inlineHeaderName = g->showInlineHeader() ? groupCaption : "";
             // Item names may contain ampersands. To avoid them being converted
             // to accelerators, replace them with two ampersands.
             groupCaption.replace("&", "&&");
 
+            if ( nbChildCount == 1 && g->allowInline() && g->inlineAlias())
+            {
+                KServiceGroup::Ptr element = KServiceGroup::group(g->relPath());
+                if ( element )
+                {
+                    //just one element
+                    KServiceGroup::List listElement = element->entries(true, excludeNoDisplay_, true, KickerSettings::detailedMenuEntries() &&!KickerSettings::detailedEntriesNamesFirst());
+                    KSycocaEntry * e1 = *( listElement.begin() );
+                    if ( e1->isType( KST_KService ) )
+                    {
+                        KService::Ptr s(static_cast<KService *>(e1));
+                        insertMenuItem(s, id++, -1, &suppressGenericNames,g->caption());
+                        continue;
+                    }
+                }
+            }
+            if ( g->allowInline() && ( ( nbChildCount <= g->inlineValue() ) ||   ( g->inlineValue()==0 ) ))
+            {
+                //inline all entries
+                KServiceGroup::Ptr rootElement = KServiceGroup::group(g->relPath());
+
+                if (!rootElement || !rootElement->isValid())
+                    break;
+
+                KServiceGroup::List listElement = rootElement->entries(true, excludeNoDisplay_, true, KickerSettings::detailedMenuEntries() &&!KickerSettings::detailedEntriesNamesFirst());
+
+                if ( !g->inlineAlias() && !inlineHeaderName.isEmpty() )
+                {
+                    int mid = insertItem(new PopupMenuTitle(inlineHeaderName, font()), id + 1, id++);
+                    setItemEnabled( mid, false );
+                }
+
+                fillMenu( rootElement, listElement,  g->relPath(), id );
+                continue;
+            }
+            // Ignore dotfiles.
+            if ((g->name().at(0) == '.'))
+                continue;
             PanelServiceMenu * m =
-                newSubMenu(g->name(), g->relPath(), this, g->name().utf8());
+                newSubMenu(g->name(), g->relPath(), this, g->name().utf8(), inlineHeaderName);
             m->setCaption( groupCaption );
 
             QIconSet iconset;
 
             if (KickerSettings::menuEntryHeight() > 0)
             {
-                iconset = KGlobal::instance()->iconLoader()->loadIconSet(
+                iconset = KGlobal::iconLoader()->loadIconSet(
                                                             g->icon(),
                                                             KIcon::NoGroup,
                                          KickerSettings::menuEntryHeight());
             }
             else if (KickerSettings::menuEntryHeight() == 0)
             {
-                QPixmap normal = KGlobal::instance()->iconLoader()->loadIcon(
+                QPixmap normal = KGlobal::iconLoader()->loadIcon(
                                                             g->icon(),
                                                             KIcon::Small,
                                                             0,
@@ -315,7 +367,7 @@ void PanelServiceMenu::doInitialize()
                                                             0L,
                                                             true);
 
-                QPixmap active = KGlobal::instance()->iconLoader()->loadIcon(
+                QPixmap active = KGlobal::iconLoader()->loadIcon(
                                                             g->icon(),
                                                             KIcon::Small,
                                                             0,
@@ -359,8 +411,10 @@ void PanelServiceMenu::doInitialize()
       if (KGlobalSettings::insertTearOffHandle())
         insertTearOffHandle();
 #endif
+
 }
 
+
 void PanelServiceMenu::configChanged()
 {
     s_RecentApps.m_bNeedToUpdate = false;
@@ -368,9 +422,9 @@ void PanelServiceMenu::configChanged()
     deinitialize();
 }
 
-void PanelServiceMenu::insertMenuItem(KService::Ptr & s, int nId, int nIndex/*= -1*/, const QStringList *suppressGenericNames /* = 0 */)
+void PanelServiceMenu::insertMenuItem(KService::Ptr & s, int nId, int nIndex/*= -1*/, const QStringList *suppressGenericNames /* = 0 */, const QString & aliasname)
 {
-    QString serviceName = s->name();
+	QString serviceName = aliasname.isEmpty() ? s->name():aliasname;
     // add comment
     if (KickerSettings::detailedMenuEntries()) {
       QString comment = s->genericName();
@@ -777,9 +831,9 @@ void PanelServiceMenu::slotDragObjectDes
 }
 
 PanelServiceMenu *PanelServiceMenu::newSubMenu(const QString & label, const QString & relPath,
-                                               QWidget * parent, const char * name)
+                                               QWidget * parent, const char * name, const QString& _inlineHeader)
 {
-    return new PanelServiceMenu(label, relPath, parent, name);
+    return new PanelServiceMenu(label, relPath, parent, name, false,_inlineHeader);
 }
 
 void PanelServiceMenu::slotClearOnClose()