bool Sidebar_Widget::addButton(const QString &desktoppath,int pos) { int lastbtn = m_buttons.count(); m_buttons.resize(m_buttons.size()+1); KSimpleConfig *confFile; kdDebug() << "addButton:" << (m_path+desktoppath) << endl; confFile = new KSimpleConfig(m_path+desktoppath,true); confFile->setGroup("Desktop Entry"); QString icon = confFile->readEntry("Icon"); QString name = confFile->readEntry("Name"); QString comment = confFile->readEntry("Comment"); QString url = confFile->readPathEntry("URL",QString::null); QString lib = confFile->readEntry("X-KDE-KonqSidebarModule"); delete confFile; if (pos == -1) { m_buttonBar->appendTab(SmallIcon(icon), lastbtn, name); ButtonInfo *bi = new ButtonInfo(desktoppath, ((KonqSidebar*)m_partParent),0, url, lib, name, icon, this); /*int id=*/m_buttons.insert(lastbtn, bi); KMultiTabBarTab *tab = m_buttonBar->tab(lastbtn); tab->installEventFilter(this); connect(tab,SIGNAL(clicked(int)),this,SLOT(showHidePage(int))); // Set Whats This help // This uses the comments in the .desktop files QWhatsThis::add(tab, comment); }
bool Sidebar_Widget::openURL(const class KURL &url) { if (url.protocol()=="sidebar") { for (unsigned int i=0;i<m_buttons.count();i++) if (m_buttons.at(i)->file==url.path()) { KMultiTabBarTab *tab = m_buttonBar->tab(i); if (!tab->isOn()) tab->animateClick(); return true; } return false; } m_storedUrl=url; m_hasStoredUrl=true; bool ret = false; for (unsigned int i=0;i<m_buttons.count();i++) { ButtonInfo *button = m_buttons.at(i); if (button->dock) { if ((button->dock->isVisibleTo(this)) && (button->module)) { ret = true; button->module->openURL(url); } } } return ret; }
void KMdiDockContainer::setPixmap( KDockWidget* widget , const TQPixmap& pixmap ) { int id = m_ws->id( widget ); if ( id == -1 ) return ; KMultiTabBarTab *tab = m_tb->tab( id ); tab->setIcon( pixmap.isNull() ? SmallIcon( "misc" ) : pixmap ); }
KMultiTabBarTab* KMultiTabBarInternal::tab(int id) const { QListIterator<KMultiTabBarTab*> it(m_tabs); while (it.hasNext()) { KMultiTabBarTab *tab = it.next(); if (tab->id()==id) return tab; } return 0; }
int KMultiTabBarInternal::appendTab(const QPixmap &pic, int id, const QString& text) { KMultiTabBarTab *tab; m_tabs.append(tab= new KMultiTabBarTab(pic,text,id,this,m_position,m_style)); // Insert before the stretch.. mainLayout->insertWidget(m_tabs.size()-1, tab); tab->show(); return 0; }
bool Sidebar::eventFilter(QObject *obj, QEvent *ev) { if (ev->type() == QEvent::ContextMenu) { QContextMenuEvent *e = (QContextMenuEvent *) ev; KMultiTabBarTab *bt = dynamic_cast<KMultiTabBarTab*>(obj); if (bt) { //kDebug() << "Request for popup"; m_popupButton = bt->id(); ToolView *w = m_idToWidget[m_popupButton]; if (w) { KMenu *p = new KMenu (this); if (!w->plugin.isNull()) { Kate::PluginConfigPageInterface* pcpi=dynamic_cast<Kate::PluginConfigPageInterface*>(w->plugin.data()); if (pcpi) { if (pcpi->configPages()>0) p->addAction(i18n("Configure ..."))->setData(20); } } p->addTitle(SmallIcon("view_remove"), i18n("Behavior")); p->addAction(w->persistent ? KIcon("view-restore") : KIcon("view-fullscreen"), w->persistent ? i18n("Make Non-Persistent") : i18n("Make Persistent") ) -> setData(10); p->addTitle(SmallIcon("move"), i18n("Move To")); if (position() != 0) p->addAction(KIcon("go-previous"), i18n("Left Sidebar"))->setData(0); if (position() != 1) p->addAction(KIcon("go-next"), i18n("Right Sidebar"))->setData(1); if (position() != 2) p->addAction(KIcon("go-up"), i18n("Top Sidebar"))->setData(2); if (position() != 3) p->addAction(KIcon("go-down"), i18n("Bottom Sidebar"))->setData(3); connect(p, SIGNAL(triggered(QAction*)), this, SLOT(buttonPopupActivate(QAction*))); p->exec(e->globalPos()); delete p; return true; } } }
void SideBar::setPageVisible(QWidget *w, bool b) { int nTabs = m_tabStack->count(); int index = m_tabStack->indexOf(w); int currentIndex = currentTab(); KMultiTabBarTab *tab = m_tabBar->tab(index); tab->setVisible(b); if(!b && index == currentIndex && nTabs >= 2) { switchToTab(findNextShownTab(index)); } }
void DockContainer::nextToolView() { QPtrList< KMultiTabBarTab > *tabs = m_tb->tabs(); int pos = tabs->findRef(m_tb->tab(oldtab)); if(pos == -1) return; pos++; if(pos >= (int)tabs->count()) pos = 0; KMultiTabBarTab *tab = tabs->at(pos); if(!tab) return; // can never happen here, but who knows m_tb->setTab(tab->id(), true); tabClicked(tab->id()); }
bool Sidebar::eventFilter(QObject *obj, QEvent *ev) { if (ev->type()==QEvent::ContextMenu) { QContextMenuEvent *e = (QContextMenuEvent *) ev; KMultiTabBarTab *bt = dynamic_cast<KMultiTabBarTab*>(obj); if (bt) { kdDebug()<<"Request for popup"<<endl; m_popupButton = bt->id(); ToolView *w = m_idToWidget[m_popupButton]; if (w) { KPopupMenu *p = new KPopupMenu (this); p->insertTitle(SmallIcon("view_remove"), i18n("Behavior"), 50); p->insertItem(w->persistent ? SmallIconSet("window_nofullscreen") : SmallIconSet("window_fullscreen"), w->persistent ? i18n("Make Non-Persistent") : i18n("Make Persistent"), 10); p->insertTitle(SmallIcon("move"), i18n("Move To"), 51); if (position() != 0) p->insertItem(SmallIconSet("back"), i18n("Left Sidebar"),0); if (position() != 1) p->insertItem(SmallIconSet("forward"), i18n("Right Sidebar"),1); if (position() != 2) p->insertItem(SmallIconSet("up"), i18n("Top Sidebar"),2); if (position() != 3) p->insertItem(SmallIconSet("down"), i18n("Bottom Sidebar"),3); connect(p, SIGNAL(activated(int)), this, SLOT(buttonPopupActivate(int))); p->exec(e->globalPos()); delete p; return true; } } }
void KMdiDockContainer::prevToolView() { kdDebug( 760 ) << k_funcinfo << endl; TQPtrList<KMultiTabBarTab>* tabs = m_tb->tabs(); int pos = tabs->findRef( m_tb->tab( oldtab ) ); if ( pos == -1 ) return ; pos--; if ( pos < 0 ) pos = tabs->count() - 1; KMultiTabBarTab *tab = tabs->at( pos ); if ( !tab ) return ; //can never happen here, but who knows m_tb->setTab( tab->id(), true ); tabClicked( tab->id() ); }
int KMultiTabBarInternal::appendTab(const QPixmap &pic ,int id,const QString& text) { KMultiTabBarTab *tab; m_tabs.append(tab= new KMultiTabBarTab(pic,text,id,box,m_position,m_style)); tab->showActiveTabText(m_showActiveTabTexts); if (m_style==KMultiTabBar::KONQSBC) { if (m_expandedTabSize<tab->neededSize()) { m_expandedTabSize=tab->neededSize(); for (uint i=0;i<m_tabs.count();i++) m_tabs.at(i)->setSize(m_expandedTabSize); } else tab->setSize(m_expandedTabSize); } else tab->updateState(); tab->show(); return 0; }
bool KMdiDockContainer::eventFilter( TQObject *obj, TQEvent *event ) { switch ( event->type() ) { case TQEvent::MouseButtonPress: { KMultiTabBarTab* kmtbTab = tqt_dynamic_cast<KMultiTabBarTab*>( obj ); if ( !kmtbTab ) { kdDebug(760) << k_funcinfo << "Got a mouse button press but we have no tab" << endl; break; } KDockWidget* w = m_revMap[ kmtbTab->id() ]; if ( !w ) { kdDebug(760) << k_funcinfo << "Got a mouse button press but we have no widget" << endl; break; } if ( !w->getHeader() ) { kdDebug(760) << k_funcinfo << "Got a mouse button press but we have no header" << endl; break; } KDockWidgetHeader *hdr = ::tqqt_cast<KDockWidgetHeader*>( w->getHeader() ); if ( !hdr ) { kdDebug(760) << "Wrong header type in KMdiDockContainer::eventFilter" << endl; break; } m_dockManager = w->dockManager(); m_dragPanel = TQT_TQOBJECT(hdr->dragPanel()); if ( m_dragPanel ) m_movingState = WaitingForMoveStart; delete m_startEvent; m_startEvent = new TQMouseEvent( * ( ( TQMouseEvent* ) event ) ); } break; case TQEvent::MouseButtonRelease: if ( m_movingState == Moving ) { m_movingState = NotMoving; TQApplication::postEvent( m_dragPanel, new TQMouseEvent( * ( ( TQMouseEvent* ) event ) ) ); delete m_startEvent; m_startEvent = 0; } case TQEvent::MouseMove: if ( m_movingState == WaitingForMoveStart ) { TQPoint p( ( ( TQMouseEvent* ) event )->pos() - m_startEvent->pos() ); if ( p.manhattanLength() > TDEGlobalSettings::dndEventDelay() ) { m_dockManager->eventFilter( m_dragPanel, TQT_TQEVENT(m_startEvent) ); m_dockManager->eventFilter( m_dragPanel, event ); m_movingState = Moving; } } else if ( m_movingState == Moving ) m_dockManager->eventFilter( m_dragPanel, event ); break; default: break; } return false; }
void KMultiTabBarInternal::resizeEvent(QResizeEvent *ev) { /* kdDebug()<<"KMultiTabBarInternal::resizeEvent"<<endl; kdDebug()<<"KMultiTabBarInternal::resizeEvent - box geometry"<<box->geometry()<<endl; kdDebug()<<"KMultiTabBarInternal::resizeEvent - geometry"<<geometry()<<endl;*/ if(ev) QScrollView::resizeEvent(ev); if((m_style == KMultiTabBar::KDEV3) || (m_style == KMultiTabBar::KDEV3ICON)) { box->setGeometry(0, 0, width(), height()); int lines = 1; uint space; float tmp = 0; if((m_position == KMultiTabBar::Bottom) || (m_position == KMultiTabBar::Top)) space = width(); else space = height(); int cnt = 0; // CALCULATE LINES const uint tabCount = m_tabs.count(); for(uint i = 0; i < tabCount; i++) { cnt++; tmp += m_tabs.at(i)->neededSize(); if(tmp > space) { if(cnt > 1) i--; else if(i == (tabCount - 1)) break; cnt = 0; tmp = 0; lines++; } } // SET SIZE & PLACE float diff = 0; cnt = 0; if((m_position == KMultiTabBar::Bottom) || (m_position == KMultiTabBar::Top)) { setFixedHeight(lines * 24); box->setFixedHeight(lines * 24); m_lines = height() / 24 - 1; lines = 0; CALCDIFF(m_tabs, diff, 0) tmp = -diff; // kdDebug()<<"m_lines recalculated="<<m_lines<<endl; for(uint i = 0; i < tabCount; i++) { KMultiTabBarTab *tab = m_tabs.at(i); cnt++; tmp += tab->neededSize() + diff; if(tmp > space) { // kdDebug()<<"about to start new line"<<endl; if(cnt > 1) { CALCDIFF(m_tabs, diff, i) i--; } else { // kdDebug()<<"placing line on old line"<<endl; kdDebug() << "diff=" << diff << endl; tab->removeEventFilter(this); tab->move(NEARBYINT(tmp - tab->neededSize()), lines * 24); // tab->setFixedWidth(tab->neededSize()+diff); tab->setFixedWidth(NEARBYINT(tmp + diff) - tab->x()); ; tab->installEventFilter(this); CALCDIFF(m_tabs, diff, (i + 1)) } tmp = -diff; cnt = 0; lines++; // kdDebug()<<"starting new line:"<<lines<<endl; } else { // kdDebug()<<"Placing line on line:"<<lines<<" pos: (x/y)=("<<tmp-m_tabs.at(i)->neededSize()<<"/"<<lines*24<<")"<<endl; // kdDebug()<<"diff="<<diff<<endl; tab->removeEventFilter(this); tab->move(NEARBYINT(tmp - tab->neededSize()), lines * 24); tab->setFixedWidth(NEARBYINT(tmp + diff) - tab->x()); ; // tab->setFixedWidth(tab->neededSize()+diff); tab->installEventFilter(this); } }