away.diff
| src/common/network.cpp | ||
|---|---|---|
| 41 | 41 |
_networkName(QString("<not initialized>")),
|
| 42 | 42 |
_currentServer(QString()), |
| 43 | 43 |
_connected(false), |
| 44 |
_away(false), |
|
| 44 | 45 |
_connectionState(Disconnected), |
| 45 | 46 |
_prefixes(QString()), |
| 46 | 47 |
_prefixModes(QString()), |
| ... | ... | |
| 499 | 500 |
if(!_myNick.isEmpty() && !ircUser(myNick())) {
|
| 500 | 501 |
newIrcUser(myNick()); |
| 501 | 502 |
} |
| 503 |
//Sets this->_away and avoids duplicating connection if nick is changed, there's probably a better way of doing this? |
|
| 504 |
setAway(me()->isAway()); |
|
| 505 |
disconnect(me(), SIGNAL(awaySet(bool)), this, 0); |
|
| 506 |
connect(me(), SIGNAL(awaySet(bool)), this, SLOT(setAway(bool))); |
|
| 502 | 507 |
emit myNickSet(nickname); |
| 503 | 508 |
} |
| 504 | 509 | |
| ... | ... | |
| 514 | 519 |
emit identitySet(id); |
| 515 | 520 |
} |
| 516 | 521 | |
| 522 |
void Network::setAway(const bool &away) {
|
|
| 523 |
if(away != _away) {
|
|
| 524 |
_away = away; |
|
| 525 |
emit awaySet(away); |
|
| 526 |
} |
|
| 527 |
} |
|
| 528 | ||
| 517 | 529 |
void Network::setServerList(const QVariantList &serverList) {
|
| 518 | 530 |
_serverList = fromVariantList<Server>(serverList); |
| 519 | 531 |
emit serverListSet(serverList); |
| src/common/network.h | ||
|---|---|---|
| 56 | 56 |
Q_PROPERTY(QByteArray codecForDecoding READ codecForDecoding WRITE setCodecForDecoding STORED false) |
| 57 | 57 |
Q_PROPERTY(IdentityId identityId READ identity WRITE setIdentity STORED false) |
| 58 | 58 |
Q_PROPERTY(bool isConnected READ isConnected WRITE setConnected STORED false) |
| 59 |
Q_PROPERTY(bool away READ isAway WRITE setAway STORED false) |
|
| 59 | 60 |
//Q_PROPERTY(Network::ConnectionState connectionState READ connectionState WRITE setConnectionState STORED false) |
| 60 | 61 |
Q_PROPERTY(int connectionState READ connectionState WRITE setConnectionState STORED false) |
| 61 | 62 |
Q_PROPERTY(bool useRandomServer READ useRandomServer WRITE setUseRandomServer STORED false) |
| ... | ... | |
| 143 | 144 |
inline const QString &myNick() const { return _myNick; }
|
| 144 | 145 |
inline int latency() const { return _latency; }
|
| 145 | 146 |
inline IrcUser *me() const { return ircUser(myNick()); }
|
| 147 |
inline bool isAway() const { return _away; }
|
|
| 146 | 148 |
inline IdentityId identity() const { return _identity; }
|
| 147 | 149 |
QStringList nicks() const; |
| 148 | 150 |
inline QStringList channels() const { return _ircChannels.keys(); }
|
| ... | ... | |
| 215 | 217 |
virtual void setMyNick(const QString &mynick); |
| 216 | 218 |
void setLatency(int latency); |
| 217 | 219 |
void setIdentity(IdentityId); |
| 220 |
void setAway(const bool &away); |
|
| 218 | 221 | |
| 219 | 222 |
void setServerList(const QVariantList &serverList); |
| 220 | 223 |
void setUseRandomServer(bool); |
| ... | ... | |
| 276 | 279 |
void myNickSet(const QString &mynick); |
| 277 | 280 |
void latencySet(int latency); |
| 278 | 281 |
void identitySet(IdentityId); |
| 282 |
void awaySet(bool away); |
|
| 279 | 283 | |
| 280 | 284 |
void serverListSet(QVariantList serverList); |
| 281 | 285 |
void useRandomServerSet(bool); |
| ... | ... | |
| 319 | 323 |
QString _networkName; |
| 320 | 324 |
QString _currentServer; |
| 321 | 325 |
bool _connected; |
| 326 |
bool _away; |
|
| 322 | 327 |
ConnectionState _connectionState; |
| 323 | 328 | |
| 324 | 329 |
QString _prefixes; |
| src/uisupport/networkmodelcontroller.cpp | ||
|---|---|---|
| 196 | 196 |
} |
| 197 | 197 | |
| 198 | 198 |
void NetworkModelController::handleNetworkAction(ActionType type, QAction *) {
|
| 199 |
if(type == NetworkConnectAll || type == NetworkDisconnectAll) {
|
|
| 199 |
if(type == NetworkConnectAll || type == NetworkDisconnectAll || type == NetworkAwayAll || type == NetworkBackAll) {
|
|
| 200 | 200 |
foreach(NetworkId id, Client::networkIds()) {
|
| 201 | 201 |
const Network *net = Client::network(id); |
| 202 | 202 |
if(type == NetworkConnectAll && net->connectionState() == Network::Disconnected) |
| 203 | 203 |
net->requestConnect(); |
| 204 |
if(type == NetworkDisconnectAll && net->connectionState() != Network::Disconnected) |
|
| 204 |
else if(type == NetworkDisconnectAll && net->connectionState() != Network::Disconnected)
|
|
| 205 | 205 |
net->requestDisconnect(); |
| 206 |
else if(type == NetworkBackAll && net->connectionState() != Network::Disconnected && net->isAway()) |
|
| 207 |
Client::userInput(BufferInfo::fakeStatusBuffer(id), QString("/AWAY"));
|
|
| 208 |
else if(type == NetworkAwayAll && net->connectionState() != Network::Disconnected && !net->isAway()) |
|
| 209 |
Client::userInput(BufferInfo::fakeStatusBuffer(id), QString("/AWAY %1").arg(Client::identity(net->identity())->awayReason()));
|
|
| 206 | 210 |
} |
| 207 | 211 |
return; |
| 208 | 212 |
} |
| 209 | 213 | |
| 210 | 214 |
if(!indexList().count()) |
| 211 | 215 |
return; |
| 212 | ||
| 216 |
|
|
| 213 | 217 |
const Network *network = Client::network(indexList().at(0).data(NetworkModel::NetworkIdRole).value<NetworkId>()); |
| 214 | 218 |
Q_CHECK_PTR(network); |
| 215 | 219 |
if(!network) |
| ... | ... | |
| 222 | 226 |
case NetworkDisconnect: |
| 223 | 227 |
network->requestDisconnect(); |
| 224 | 228 |
break; |
| 229 |
case NetworkBack: |
|
| 230 |
Client::userInput(BufferInfo::fakeStatusBuffer(network->networkId()), QString("/AWAY"));
|
|
| 231 |
break; |
|
| 232 |
case NetworkAway: |
|
| 233 |
Client::userInput(BufferInfo::fakeStatusBuffer(network->networkId()), |
|
| 234 |
QString("/AWAY %1").arg(Client::identity(network->identity())->awayReason()));
|
|
| 225 | 235 |
default: |
| 226 | 236 |
break; |
| 227 | 237 |
} |
| src/uisupport/networkmodelcontroller.h | ||
|---|---|---|
| 46 | 46 |
NetworkDisconnect = 0x02, |
| 47 | 47 |
NetworkConnectAll = 0x03, |
| 48 | 48 |
NetworkDisconnectAll = 0x04, |
| 49 |
NetworkAway = 0x05, |
|
| 50 |
NetworkBack = 0x06, |
|
| 51 |
NetworkAwayAll = 0x07, |
|
| 52 |
NetworkBackAll = 0x08, |
|
| 49 | 53 | |
| 50 | 54 |
// Buffer actions |
| 51 | 55 |
BufferMask = 0xf0, |
| src/uisupport/tabcompleter.cpp | ||
|---|---|---|
| 62 | 62 |
return; |
| 63 | 63 | |
| 64 | 64 |
QString tabAbbrev = inputLine->text().left(inputLine->cursorPosition()).section(' ',-1,-1);
|
| 65 |
QRegExp regex(QString("^[^a-zA-Z]*").append(QRegExp::escape(tabAbbrev)), Qt::CaseInsensitive);
|
|
| 65 |
QRegExp regex(QString("^[^a-zA-Z#]*").append(QRegExp::escape(tabAbbrev)), Qt::CaseInsensitive);
|
|
| 66 | 66 | |
| 67 |
//Adds each channel on network to CompletionMap for all buffers. |
|
| 68 |
foreach(QString channel, _currentNetwork->channels()) {
|
|
| 69 |
if(regex.indexIn(channel) > -1) |
|
| 70 |
completionMap[channel.toLower()] = channel; |
|
| 71 |
} |
|
| 67 | 72 |
switch(static_cast<BufferInfo::Type>(currentIndex.data(NetworkModel::BufferTypeRole).toInt())) {
|
| 68 | 73 |
case BufferInfo::ChannelBuffer: |
| 69 | 74 |
{ // scope is needed for local var declaration
|
| src/uisupport/toolbaractionprovider.cpp | ||
|---|---|---|
| 24 | 24 |
#include "toolbaractionprovider.h" |
| 25 | 25 | |
| 26 | 26 |
#include "iconloader.h" |
| 27 |
#include "identity.h" |
|
| 27 | 28 | |
| 28 | 29 |
ToolBarActionProvider::ToolBarActionProvider(QObject *parent) |
| 29 | 30 |
: NetworkModelController(parent) |
| 30 | 31 |
{
|
| 31 |
registerAction(NetworkConnectAll, MainBarIcon("network-connect"), tr("Connect"))->setToolTip(tr("Connect to IRC"));
|
|
| 32 |
registerAction(NetworkDisconnectAll, MainBarIcon("network-disconnect"), tr("Disconnect"))->setToolTip(tr("Disconnect from IRC"));
|
|
| 32 |
registerAction(NetworkConnectAll, MainBarIcon("network-connect"), tr("Connect"))->setToolTip(tr("Connect to all"));
|
|
| 33 |
registerAction(NetworkDisconnectAll, MainBarIcon("network-disconnect"), tr("Disconnect"))->setToolTip(tr("Disconnect from all"));
|
|
| 34 |
registerAction(NetworkBackAll, MainBarIcon("im-user"), tr("Back"))->setToolTip(tr("Back to all"));
|
|
| 35 |
registerAction(NetworkAwayAll, MainBarIcon("im-user-away"), tr("Away"))->setToolTip(tr("Away from all"));
|
|
| 33 | 36 | |
| 34 | 37 |
registerAction(BufferPart, MainBarIcon("irc-close-channel"), tr("Part"))->setToolTip(tr("Leave currently selected channel"));
|
| 35 | 38 |
registerAction(JoinChannel, MainBarIcon("irc-join-channel"), tr("Join"))->setToolTip(tr("Join a channel"));
|
| ... | ... | |
| 47 | 50 | |
| 48 | 51 |
//registerAction(ShowChannelList, SmallIcon("format-list-unordered"), tr("Show Channel List"));
|
| 49 | 52 |
//registerAction(ShowIgnoreList, tr("Show Ignore List"));
|
| 50 | ||
| 51 |
_networksConnectMenu = new QMenu(); |
|
| 52 |
_networksConnectMenu->setSeparatorsCollapsible(false); |
|
| 53 |
_networksConnectMenu->addSeparator(); |
|
| 54 |
_networksConnectMenu->addAction(tr("Connect to all"));
|
|
| 55 |
action(NetworkConnectAll)->setMenu(_networksConnectMenu); |
|
| 56 |
action(NetworkConnectAll)->setEnabled(false); |
|
| 57 | ||
| 58 |
_networksDisconnectMenu = new QMenu(); |
|
| 59 |
_networksDisconnectMenu->setSeparatorsCollapsible(false); |
|
| 60 |
_networksDisconnectMenu->addSeparator(); |
|
| 61 |
_networksDisconnectMenu->addAction(tr("Disconnect from all"));
|
|
| 62 |
action(NetworkDisconnectAll)->setMenu(_networksDisconnectMenu); |
|
| 63 |
action(NetworkDisconnectAll)->setEnabled(false); |
|
| 53 |
|
|
| 54 |
//A cleaner way to do this, rather than basically copy-pasting code. Allows for easy adding of menus if needed. |
|
| 55 |
_actionMenus[NetworkConnectAll] = new QMenu(); |
|
| 56 |
_actionMenus[NetworkDisconnectAll] = new QMenu(); |
|
| 57 |
_actionMenus[NetworkBackAll] = new QMenu(); |
|
| 58 |
_actionMenus[NetworkAwayAll] = new QMenu(); |
|
| 59 | ||
| 60 |
foreach(ActionType type, _actionMenus.keys()) {
|
|
| 61 |
_actionMenus[type] = new QMenu(); |
|
| 62 |
Action *act = action(type); |
|
| 63 |
QMenu *menu = _actionMenus[type]; |
|
| 64 |
|
|
| 65 |
menu->setSeparatorsCollapsible(false); |
|
| 66 |
menu->addSeparator(); |
|
| 67 |
menu->addAction(act->toolTip(), act, SLOT(trigger())); |
|
| 68 |
act->setMenu(menu); |
|
| 69 |
act->setEnabled(false); |
|
| 70 |
} |
|
| 64 | 71 | |
| 65 | 72 |
connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), SLOT(networkCreated(NetworkId))); |
| 66 | 73 |
connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), SLOT(networkRemoved(NetworkId))); |
| ... | ... | |
| 84 | 91 |
case MainToolBar: |
| 85 | 92 |
bar->addAction(action(NetworkConnectAll)); |
| 86 | 93 |
bar->addAction(action(NetworkDisconnectAll)); |
| 94 |
bar->addAction(action(NetworkBackAll)); |
|
| 95 |
bar->addAction(action(NetworkAwayAll)); |
|
| 87 | 96 |
bar->addAction(action(JoinChannel)); |
| 88 | 97 |
bar->addAction(action(BufferPart)); |
| 89 | 98 |
break; |
| ... | ... | |
| 137 | 146 | |
| 138 | 147 |
void ToolBarActionProvider::networkCreated(NetworkId id) {
|
| 139 | 148 |
const Network *net = Client::network(id); |
| 140 |
Action *act = new Action(net->networkName(), this); |
|
| 141 |
_networkActions[id] = act; |
|
| 142 |
act->setObjectName(QString("NetworkAction-%1").arg(id.toInt()));
|
|
| 143 |
act->setData(QVariant::fromValue<NetworkId>(id)); |
|
| 149 |
Action *connectAct = new Action(net->networkName(), this); |
|
| 150 |
_connectActions[id] = connectAct; |
|
| 151 |
connectAct->setObjectName(QString("ConnectAction-%1").arg(id.toInt()));
|
|
| 152 |
connectAct->setData(QVariant::fromValue<NetworkId>(id)); |
|
| 153 |
|
|
| 154 |
Action *awayAct = new Action(net->networkName(), this); |
|
| 155 |
_awayActions[id] = awayAct; |
|
| 156 |
awayAct->setObjectName(QString("AwayAction-%1").arg(id.toInt()));
|
|
| 157 |
awayAct->setData(QVariant::fromValue<NetworkId>(id)); |
|
| 158 |
|
|
| 144 | 159 |
connect(net, SIGNAL(updatedRemotely()), SLOT(networkUpdated())); |
| 145 |
connect(act, SIGNAL(triggered()), SLOT(connectOrDisconnectNet())); |
|
| 160 |
connect(net, SIGNAL(awaySet(bool)), SLOT(awayUpdated())); |
|
| 161 |
connect(connectAct, SIGNAL(triggered()), SLOT(connectOrDisconnectNet())); |
|
| 162 |
connect(awayAct, SIGNAL(triggered()), SLOT(awayOrBackNet())); |
|
| 146 | 163 |
networkUpdated(net); |
| 147 | 164 |
} |
| 148 | 165 | |
| 149 | 166 |
void ToolBarActionProvider::networkRemoved(NetworkId id) {
|
| 150 |
Action *act = _networkActions.take(id); |
|
| 151 |
if(act) |
|
| 152 |
act->deleteLater(); |
|
| 167 |
Action *awayAct = _awayActions.take(id); |
|
| 168 |
if(awayAct) |
|
| 169 |
awayAct->deleteLater(); |
|
| 170 |
Action *connectAct = _connectActions.take(id); |
|
| 171 |
if(connectAct) |
|
| 172 |
connectAct->deleteLater(); |
|
| 153 | 173 |
} |
| 154 | 174 | |
| 155 | 175 |
void ToolBarActionProvider::networkUpdated(const Network *net) {
|
| ... | ... | |
| 157 | 177 |
net = qobject_cast<const Network *>(sender()); |
| 158 | 178 |
if(!net) |
| 159 | 179 |
return; |
| 160 |
Action *act = _networkActions.value(net->networkId()); |
|
| 161 |
if(!act) |
|
| 180 |
Action *connectAct = _connectActions.value(net->networkId()); |
|
| 181 |
Action *awayAct = _awayActions.value(net->networkId()); |
|
| 182 |
if(!connectAct || !awayAct) |
|
| 162 | 183 |
return; |
| 163 | 184 | |
| 164 |
_networksConnectMenu->removeAction(act); |
|
| 165 |
_networksDisconnectMenu->removeAction(act); |
|
| 185 |
foreach(QMenu *menu, _actionMenus) {
|
|
| 186 |
menu->removeAction(connectAct); |
|
| 187 |
menu->removeAction(awayAct); |
|
| 188 |
} |
|
| 189 |
|
|
| 190 |
connectAct->setText(net->networkName()); |
|
| 191 |
awayAct->setText(net->networkName()); |
|
| 192 |
if (net->connectionState() == Network::Disconnected) {
|
|
| 193 |
addActionToMenu(connectAct, menu(NetworkConnectAll)); |
|
| 194 |
} else {
|
|
| 195 |
addActionToMenu(connectAct, menu(NetworkDisconnectAll)); |
|
| 196 |
if (net->isAway()) |
|
| 197 |
addActionToMenu(awayAct, menu(NetworkBackAll)); |
|
| 198 |
else |
|
| 199 |
addActionToMenu(awayAct, menu(NetworkAwayAll)); |
|
| 200 |
} |
|
| 201 |
|
|
| 202 |
foreach(ActionType type, _actionMenus.keys()) |
|
| 203 |
action(type)->setEnabled(menu(type)->actions().count() > 2); |
|
| 166 | 204 | |
| 167 |
QMenu *newMenu = net->connectionState() != Network::Disconnected ? _networksDisconnectMenu : _networksConnectMenu;
|
|
| 168 |
act->setText(net->networkName()); |
|
| 205 |
action(JoinChannel)->setEnabled(menu(NetworkDisconnectAll)->actions().count() > 2);
|
|
| 206 |
} |
|
| 169 | 207 | |
| 170 |
const int lastidx = newMenu->actions().count() - 2; |
|
| 171 |
QAction *beforeAction = newMenu->actions().at(lastidx); |
|
| 172 |
for(int i = 0; i < newMenu->actions().count() - 2; i++) {
|
|
| 173 |
QAction *action = newMenu->actions().at(i); |
|
| 174 |
if(net->networkName().localeAwareCompare(action->text()) < 0) {
|
|
| 208 |
void ToolBarActionProvider::awayUpdated(const Network *net) {
|
|
| 209 |
if(!net) |
|
| 210 |
net = qobject_cast<const Network *>(sender()); |
|
| 211 |
if(!net || net->connectionState() == Network::Disconnected) |
|
| 212 |
return; |
|
| 213 |
Action *awayAct = _awayActions.value(net->networkId()); |
|
| 214 |
if (!awayAct) |
|
| 215 |
return; |
|
| 216 |
|
|
| 217 |
menu(NetworkBackAll)->removeAction(awayAct); |
|
| 218 |
menu(NetworkAwayAll)->removeAction(awayAct); |
|
| 219 |
if (net->isAway()) |
|
| 220 |
addActionToMenu(awayAct, menu(NetworkBackAll)); |
|
| 221 |
else |
|
| 222 |
addActionToMenu(awayAct, menu(NetworkAwayAll)); |
|
| 223 |
|
|
| 224 |
action(NetworkBackAll)->setEnabled(menu(NetworkBackAll)->actions().count() > 2); |
|
| 225 |
action(NetworkAwayAll)->setEnabled(menu(NetworkAwayAll)->actions().count() > 2); |
|
| 226 |
} |
|
| 227 | ||
| 228 |
void ToolBarActionProvider::addActionToMenu(Action *act, QMenu *menu) {
|
|
| 229 |
const int lastidx = menu->actions().count() - 2; |
|
| 230 |
QAction *beforeAction = menu->actions().at(lastidx); |
|
| 231 |
for(int i = 0; i < menu->actions().count() - 2; i++) {
|
|
| 232 |
QAction *action = menu->actions().at(i); |
|
| 233 |
if(act->text().localeAwareCompare(action->text()) < 0) {
|
|
| 175 | 234 |
beforeAction = action; |
| 176 | 235 |
break; |
| 177 | 236 |
} |
| 178 | 237 |
} |
| 179 |
newMenu->insertAction(beforeAction, act); |
|
| 180 | ||
| 181 |
action(NetworkConnectAll)->setEnabled(_networksConnectMenu->actions().count() > 2); |
|
| 182 |
action(NetworkDisconnectAll)->setEnabled(_networksDisconnectMenu->actions().count() > 2); |
|
| 183 |
action(JoinChannel)->setEnabled(_networksDisconnectMenu->actions().count() > 2); |
|
| 238 |
menu->insertAction(beforeAction, act); |
|
| 184 | 239 |
} |
| 185 | 240 | |
| 186 | 241 |
void ToolBarActionProvider::connectOrDisconnectNet() {
|
| ... | ... | |
| 191 | 246 |
if(!net) |
| 192 | 247 |
return; |
| 193 | 248 | |
| 194 |
if(net->connectionState() == Network::Disconnected) net->requestConnect(); |
|
| 195 |
else net->requestDisconnect(); |
|
| 249 |
if(net->connectionState() == Network::Disconnected) |
|
| 250 |
net->requestConnect(); |
|
| 251 |
else |
|
| 252 |
net->requestDisconnect(); |
|
| 253 |
} |
|
| 254 | ||
| 255 |
void ToolBarActionProvider::awayOrBackNet() {
|
|
| 256 |
QAction *act = qobject_cast<QAction *>(sender()); |
|
| 257 |
if(!act) |
|
| 258 |
return; |
|
| 259 |
const Network *net = Client::network(act->data().value<NetworkId>()); |
|
| 260 |
if(!net) |
|
| 261 |
return; |
|
| 262 | ||
| 263 |
BufferInfo bufferInfo = BufferInfo::fakeStatusBuffer(net->networkId()); |
|
| 264 |
if(net->isAway()) |
|
| 265 |
Client::userInput(bufferInfo, QString("/AWAY"));
|
|
| 266 |
else |
|
| 267 |
Client::userInput(bufferInfo, QString("/AWAY %1").arg(Client::identity(net->identity())->awayReason()));
|
|
| 196 | 268 |
} |
| 197 | 269 | |
| 198 | 270 |
//void ToolBarActionProvider:: |
| src/uisupport/toolbaractionprovider.h | ||
|---|---|---|
| 41 | 41 |
void addActions(QToolBar *, ToolBarType type); |
| 42 | 42 | |
| 43 | 43 |
protected: |
| 44 |
inline QMenu *menu(ActionType action) const; |
|
| 44 | 45 |
virtual void handleNetworkAction(ActionType, QAction *); |
| 45 | 46 |
virtual void handleBufferAction(ActionType, QAction *); |
| 46 | 47 |
virtual void handleNickAction(ActionType, QAction *); |
| ... | ... | |
| 50 | 51 |
void networkCreated(NetworkId id); |
| 51 | 52 |
void networkRemoved(NetworkId id); |
| 52 | 53 |
void networkUpdated(const Network *net = 0); |
| 54 |
void awayUpdated(const Network *net = 0); |
|
| 53 | 55 |
void connectOrDisconnectNet(); |
| 56 |
void awayOrBackNet(); |
|
| 54 | 57 | |
| 55 | 58 |
void currentBufferChanged(const QModelIndex &); |
| 56 | 59 |
void nickSelectionChanged(const QModelIndexList &); |
| ... | ... | |
| 58 | 61 |
void updateStates(); |
| 59 | 62 | |
| 60 | 63 |
private: |
| 61 |
QMenu *_networksConnectMenu, *_networksDisconnectMenu;
|
|
| 62 |
QHash<NetworkId, Action *> _networkActions;
|
|
| 64 |
QHash<ActionType, QMenu *> _actionMenus;
|
|
| 65 |
QHash<NetworkId, Action *> _connectActions, _awayActions;
|
|
| 63 | 66 |
QModelIndex _currentBuffer; |
| 64 | 67 |
QModelIndexList _selectedNicks; |
| 68 |
|
|
| 69 |
void addActionToMenu(Action *action, QMenu *menu); |
|
| 65 | 70 |
}; |
| 66 | 71 | |
| 72 |
QMenu *ToolBarActionProvider::menu(ActionType type) const { return _actionMenus.value(type); }
|
|
| 73 | ||
| 67 | 74 |
#endif |