Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 901b66721cd8b67ee1adbc6604574c15 > files > 10

kdebase-3.5.10-6mdv2009.0.src.rpm

--- kdebase-3.5.10/konqueror/sidebar/sidebar_widget.cpp	2008-08-19 14:17:09.000000000 -0400
+++ kdebase-3.5.10/konqueror/sidebar/sidebar_widget.cpp.new	2008-08-26 12:04:34.000000000 -0400
@@ -43,6 +43,7 @@
 #include <kinputdialog.h>
 #include <kfiledialog.h>
 #include <kdesktopfile.h>
+#include <kapplication.h>
 #include "konqsidebar.h"
 
 #include "sidebar_widget.h"
@@ -64,11 +65,19 @@
 
 void addBackEnd::aboutToShowAddMenu()
 {
+	QStringList m_restrictedViews( dynamic_cast<Sidebar_Widget *>( m_parent )->getRestrictedViews() );
 	if (!menu)
 		return;
 	KStandardDirs *dirs = KGlobal::dirs();
-	QStringList list = dirs->findAllResources("data","konqsidebartng/add/*.desktop",true,true);
-	libNames.setAutoDelete(true);
+	
+    QStringList list;
+  	
+     if ( ! m_restrictedViews.empty() )
+        for ( QStringList::Iterator it = m_restrictedViews.begin(); it != m_restrictedViews.end(); ++it )
+            list += dirs->findAllResources("data","konqsidebartng/add/" + *it + ".desktop",true,true);
+     else
+        list = dirs->findAllResources( "data","konqsidebartng/add/*.desktop",true,true );
+     libNames.setAutoDelete(true);
 	libNames.resize(0);
 	libParam.setAutoDelete(true);
 	libParam.resize(0);
@@ -655,6 +664,7 @@
         m_immutableShowTabsLeft = m_config->entryIsImmutable("ShowTabsLeft");
 	m_hideTabs = m_config->readBoolEntry("HideTabs", false);
         m_immutableHideTabs = m_config->entryIsImmutable("HideTabs");
+	m_restrictedViews = m_config->readListEntry( "RestrictViews" );
 
 	if (m_initial) {
 		m_openViews = m_config->readListEntry("OpenViews");
@@ -721,11 +731,20 @@
 	{
 		kdDebug()<<"m_path: "<<m_path<<endl;
 		QDir dir(m_path);
-		QStringList list=dir.entryList("*.desktop");
+		
+      QStringList list;
+      
+      if ( ! m_restrictedViews.empty() )
+         for ( QStringList::Iterator it = m_restrictedViews.begin(); it != m_restrictedViews.end(); ++it )
+            list += dir.entryList( *it + ".desktop");
+      else
+         list = dir.entryList("*.desktop");
+		
 		for (QStringList::Iterator it=list.begin(); it!=list.end(); ++it)
-		{
-			addButton(*it);
-		}
+      {
+         kdDebug() << "Sidebar buttons: " << *it << endl;
+         addButton(*it);
+      }
 	}
 
 	if (!m_buttonBar->button(-1)) {
@@ -832,58 +851,58 @@
 
 bool Sidebar_Widget::eventFilter(QObject *obj, QEvent *ev)
 {
+   if ( kapp->authorize( "action/konqsidebarmenu" ) )
+      if (ev->type()==QEvent::MouseButtonPress && ((QMouseEvent *)ev)->button()==QMouseEvent::RightButton)
+      {
+         KMultiTabBarTab *bt=dynamic_cast<KMultiTabBarTab*>(obj);
+         if (bt)
+         {
+            kdDebug()<<"Request for popup"<<endl;
+            m_currentButton = 0;
+            for (uint i=0;i<m_buttons.count();i++)
+            {
+               if (bt==m_buttonBar->tab(i))
+               {
+                  m_currentButton = m_buttons.at(i);
+                  break;
+               }
+            }
+            
+            if (m_currentButton)
+            {
+               if (!m_buttonPopup)
+               {
+                  m_buttonPopup=new KPopupMenu(this, "Sidebar_Widget::ButtonPopup");
+                  m_buttonPopup->insertTitle(SmallIcon("unknown"), "", 50);
+                  m_buttonPopup->insertItem(SmallIconSet("text"), i18n("Set Name..."),4); // Item to open a dialog to change the name of the sidebar item (by Pupeno)
+                  m_buttonPopup->insertItem(SmallIconSet("www"), i18n("Set URL..."),2);
+                  m_buttonPopup->insertItem(SmallIconSet("icons"), i18n("Set Icon..."),1);
+                  m_buttonPopup->insertSeparator();
+                  m_buttonPopup->insertItem(SmallIconSet("editdelete"), i18n("Remove"),3);
+                  m_buttonPopup->insertSeparator();
+                  m_buttonPopup->insertItem(SmallIconSet("configure"), i18n("Configure Navigation Panel"), m_menu, 4);
+                  connect(m_buttonPopup, SIGNAL(activated(int)),
+                        this, SLOT(buttonPopupActivate(int)));
+               }
+               m_buttonPopup->setItemEnabled(2,!m_currentButton->URL.isEmpty());
+               m_buttonPopup->changeTitle(50,SmallIcon(m_currentButton->iconName),
+                     m_currentButton->displayName);
+               m_buttonPopup->exec(QCursor::pos());
+            }
+            return true;
+         }
+      }
+   return false;
 
-	if (ev->type()==QEvent::MouseButtonPress && ((QMouseEvent *)ev)->button()==QMouseEvent::RightButton)
-	{
-		KMultiTabBarTab *bt=dynamic_cast<KMultiTabBarTab*>(obj);
-		if (bt)
-		{
-			kdDebug()<<"Request for popup"<<endl;
-			m_currentButton = 0;
-			for (uint i=0;i<m_buttons.count();i++)
-			{
-				if (bt==m_buttonBar->tab(i))
-				{
-					m_currentButton = m_buttons.at(i);
-					break;
-				}
-			}
-
-			if (m_currentButton)
-			{
-				if (!m_buttonPopup)
-				{
-					m_buttonPopup=new KPopupMenu(this, "Sidebar_Widget::ButtonPopup");
-					m_buttonPopup->insertTitle(SmallIcon("unknown"), "", 50);
-					m_buttonPopup->insertItem(SmallIconSet("text"), i18n("Set Name..."),4); // Item to open a dialog to change the name of the sidebar item (by Pupeno)
-					m_buttonPopup->insertItem(SmallIconSet("www"), i18n("Set URL..."),2);
-					m_buttonPopup->insertItem(SmallIconSet("icons"), i18n("Set Icon..."),1);
-					m_buttonPopup->insertSeparator();
-					m_buttonPopup->insertItem(SmallIconSet("editdelete"), i18n("Remove"),3);
-					m_buttonPopup->insertSeparator();
-					m_buttonPopup->insertItem(SmallIconSet("configure"), i18n("Configure Navigation Panel"), m_menu, 4);
-					connect(m_buttonPopup, SIGNAL(activated(int)),
-						this, SLOT(buttonPopupActivate(int)));
-				}
-				m_buttonPopup->setItemEnabled(2,!m_currentButton->URL.isEmpty());
-			        m_buttonPopup->changeTitle(50,SmallIcon(m_currentButton->iconName),
-						m_currentButton->displayName);
-				if (!m_disableConfig)
-                                { m_buttonPopup->exec(QCursor::pos()); }
-			}
-			return true;
-
-		}
-	}
-	return false;
 }
 
 void Sidebar_Widget::mousePressEvent(QMouseEvent *ev)
 {
-	if (ev->type()==QEvent::MouseButtonPress &&
-            ((QMouseEvent *)ev)->button()==QMouseEvent::RightButton &&
-            !m_disableConfig)
-        { m_menu->exec(QCursor::pos()); }
+   if ( kapp->authorize( "action/konqsidebarmenu" ) )
+   {
+      if (ev->type()==QEvent::MouseButtonPress && ((QMouseEvent *)ev)->button()==QMouseEvent::RightButton)
+         m_menu->exec(QCursor::pos());
+   }
 }
 
 KonqSidebarPlugin *Sidebar_Widget::loadModule(QWidget *par,QString &desktopName,QString lib_name,ButtonInfo* bi)
--- kdebase-3.5.10/konqueror/sidebar/sidebar_widget.h	2008-08-19 14:17:09.000000000 -0400
+++ kdebase-3.5.10/konqueror/sidebar/sidebar_widget.h.new	2008-08-26 11:50:09.000000000 -0400
@@ -141,7 +141,7 @@
 //        virtual void showError(QString &);      for later extension
 //        virtual void showMessage(QString &);    for later extension
 	/* end of interface implementation */
-
+	QStringList getRestrictedViews() const { return m_restrictedViews; }
 
  /* The following public slots are wrappers for browserextension fields */
 public slots:
@@ -217,6 +217,7 @@
 	QString m_currentProfile;
 	QStringList m_visibleViews; // The views that are actually open
 	QStringList m_openViews; // The views that should be opened
+	QStringList m_restrictedViews;
 
 signals:
 	void panelHasBeenExpanded(bool);