X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Ftoolbaractionprovider.cpp;h=43cb41d7e063748b2ba1a7b1c06dd68dcf8ddbc3;hp=72d9e5e62f2bca00778ab107beb6205c76924d8d;hb=7c9c1b348382b8b77f96a883945c522d32a478d5;hpb=429b13a0af3acc0599ceb560fef61feee93b068e diff --git a/src/uisupport/toolbaractionprovider.cpp b/src/uisupport/toolbaractionprovider.cpp index 72d9e5e6..43cb41d7 100644 --- a/src/uisupport/toolbaractionprovider.cpp +++ b/src/uisupport/toolbaractionprovider.cpp @@ -64,15 +64,24 @@ ToolBarActionProvider::ToolBarActionProvider(QObject *parent) connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), SLOT(networkCreated(NetworkId))); connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), SLOT(networkRemoved(NetworkId))); + + updateStates(); } ToolBarActionProvider::~ToolBarActionProvider() { } +void ToolBarActionProvider::updateStates() { + action(BufferPart)->setEnabled(_currentBuffer.isValid() + && _currentBuffer.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer + && _currentBuffer.data(NetworkModel::ItemActiveRole).toBool()); + +} + void ToolBarActionProvider::addActions(QToolBar *bar, ToolBarType type) { switch(type) { - case NetworkToolBar: + case MainToolBar: bar->addAction(action(NetworkConnectAll)); bar->addAction(action(NetworkDisconnectAll)); bar->addAction(action(JoinChannel)); @@ -95,6 +104,37 @@ void ToolBarActionProvider::addActions(QToolBar *bar, ToolBarType type) { } } +void ToolBarActionProvider::currentBufferChanged(const QModelIndex &index) { + _currentBuffer = index; + updateStates(); +} + +void ToolBarActionProvider::nickSelectionChanged(const QModelIndexList &indexList) { + _selectedNicks = indexList; + updateStates(); +} + +// override those to set indexes right +void ToolBarActionProvider::handleNetworkAction(ActionType type, QAction *action) { + setIndexList(_currentBuffer); + NetworkModelController::handleNetworkAction(type, action); +} + +void ToolBarActionProvider::handleBufferAction(ActionType type, QAction *action) { + setIndexList(_currentBuffer); + NetworkModelController::handleBufferAction(type, action); +} + +void ToolBarActionProvider::handleNickAction(ActionType type, QAction *action) { + setIndexList(_selectedNicks); + NetworkModelController::handleNickAction(type, action); +} + +void ToolBarActionProvider::handleGeneralAction(ActionType type, QAction *action) { + setIndexList(_currentBuffer); + NetworkModelController::handleGeneralAction(type, action); +} + void ToolBarActionProvider::networkCreated(NetworkId id) { const Network *net = Client::network(id); Action *act = new Action(net->networkName(), this);