X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Ftoolbaractionprovider.cpp;h=c3ea90a044a8d03208b34b4713295e5d04162b75;hp=72d9e5e62f2bca00778ab107beb6205c76924d8d;hb=8221ad101ceadfdfbd2bfe9a441ff3d959122014;hpb=4e9b713cf4941e9d1d8341ed2dea3cbdf4a22a8a diff --git a/src/uisupport/toolbaractionprovider.cpp b/src/uisupport/toolbaractionprovider.cpp index 72d9e5e6..c3ea90a0 100644 --- a/src/uisupport/toolbaractionprovider.cpp +++ b/src/uisupport/toolbaractionprovider.cpp @@ -64,12 +64,21 @@ 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: @@ -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);