--- 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);