diff --git a/konsole/NavigationItem.cpp b/konsole/NavigationItem.cpp index c261ca53..5fa1c6e4 100644 --- a/konsole/NavigationItem.cpp +++ b/konsole/NavigationItem.cpp @@ -1,13 +1,18 @@ -// KDE -#include -#include // Konsole #include "NavigationItem.h" // Terminal Session Navigation -#include "TESession.h" + // KDE + #include + #include + #include + #include + #include + + // Konsole + #include "TESession.h" NavigationItem::NavigationItem() { @@ -31,7 +36,7 @@ void NavigationItem::setIcon( const QIcon& icon ) _icon = icon; } -QList NavigationItem::contextMenuActions( QList viewActions ) const +QList NavigationItem::contextMenuActions( QList viewActions ) { return viewActions; } @@ -46,6 +51,51 @@ SessionNavigationItem::SessionNavigationItem(TESession* session) connect( _session , SIGNAL( updateTitle() ) , this , SLOT( updateTitle() ) ); } +QList SessionNavigationItem::contextMenuActions( QList viewActions ) +{ + QList actionList; + + QAction* monitorSeparator = new QAction(this); + monitorSeparator->setSeparator(true); + QAction* viewSeparator = new QAction(this); + viewSeparator->setSeparator(true); + QAction* closeSeparator = new QAction(this); + closeSeparator->setSeparator(true); + + KAction* renameAction = new KAction(i18n("&Rename Session"),0/*parent*/,"rename_session"); + connect( renameAction , SIGNAL(triggered()) , this , SLOT( renameSession() ) ); + // actionList << new QAction("&Detach Session...",this); + actionList << renameAction; + actionList << monitorSeparator; + // actionList << new KToggleAction( KIcon("activity") i18n("Monitor for &Activity"),this); + // actionList << new KToggleAction("Monitor for &Silence",this); + // actionList << new KToggleAction("Send &Input to All Sessions",this); + // actionList << viewSeparator; + actionList << viewActions; + // actionList << closeSeparator; + // actionList << new QAction("&Close Session",this); + + return actionList; +} + +void SessionNavigationItem::renameSession() +{ + QString newTitle = _session->Title(); + + bool success; + + newTitle = KInputDialog::getText( i18n("Rename Session"), i18n("Session Name:") , + newTitle , + &success ); + + if ( success ) + { + _session->setTitle(newTitle); + + updateTitle(); + } +} + void SessionNavigationItem::updateTitle() { kDebug() << " session title update " << endl; diff --git a/konsole/NavigationItem.h b/konsole/NavigationItem.h index 6cbf6dee..b15ee17a 100644 --- a/konsole/NavigationItem.h +++ b/konsole/NavigationItem.h @@ -31,7 +31,7 @@ public: QString title() const; QIcon icon() const; - virtual QList contextMenuActions( QList viewActions ) const; + virtual QList contextMenuActions( QList viewActions ) ; signals: void titleChanged( NavigationItem* item ); @@ -64,9 +64,14 @@ public: */ SessionNavigationItem(TESession* session); + virtual QList contextMenuActions( QList viewActions ) ; + private slots: void updateTitle(); + //context menu action receivers + void renameSession(); + private: TESession* _session; }; diff --git a/konsole/ViewContainer.cpp b/konsole/ViewContainer.cpp index ef75baca..d9aafe23 100644 --- a/konsole/ViewContainer.cpp +++ b/konsole/ViewContainer.cpp @@ -135,11 +135,11 @@ TabbedViewContainer::~TabbedViewContainer() delete _tabWidget; } -void TabbedViewContainer::showContextMenu(QWidget* /*widget*/ , const QPoint& position) +void TabbedViewContainer::showContextMenu(QWidget* widget , const QPoint& position) { //TODO - Use the tab under the mouse, not just the active tab - _contextMenuTab = _tabWidget->currentIndex(); - NavigationItem* item = navigationItem(_tabWidget->currentWidget()); + _contextMenuTab = _tabWidget->indexOf(widget); + NavigationItem* item = navigationItem( widget ); _tabContextMenu->clear(); _tabContextMenu->addActions( item->contextMenuActions(_viewActions) );