| 2137 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_PRV, |
| 2138 | | o->StatusInvisible()); |
| 2139 | | |
| 2140 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_ONLINE | (nAt << 8), |
| 2141 | | o->Status() == ICQ_STATUS_ONLINE); |
| 2142 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_AWAY | (nAt << 8), |
| 2143 | | o->Status() == ICQ_STATUS_AWAY); |
| 2144 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_NA | (nAt << 8), |
| 2145 | | o->Status() == ICQ_STATUS_NA); |
| 2146 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_OCC | (nAt << 8), |
| 2147 | | o->Status() == ICQ_STATUS_OCCUPIED); |
| 2148 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_DND | (nAt << 8), |
| 2149 | | o->Status() == ICQ_STATUS_DND); |
| 2150 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_FFC | (nAt << 8), |
| 2151 | | o->Status() == ICQ_STATUS_FREEFORCHAT); |
| 2152 | | mnuProtocolStatus[nAt]->setItemChecked(CHANGE_STATUS_OFFLINE | (nAt << 8), |
| 2153 | | o->Status() == ICQ_STATUS_OFFLINE); |
| | 2138 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_PRV | (nAt << 8))) |
| | 2139 | mapProtocolStatusActions[CHANGE_STATUS_PRV | (nAt << 8)]->setChecked(o->StatusInvisible()); |
| | 2140 | |
| | 2141 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_ONLINE | (nAt << 8))) |
| | 2142 | mapProtocolStatusActions[CHANGE_STATUS_ONLINE | (nAt << 8)]->setChecked(o->Status() == ICQ_STATUS_ONLINE); |
| | 2143 | |
| | 2144 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_AWAY | (nAt << 8))) |
| | 2145 | mapProtocolStatusActions[CHANGE_STATUS_AWAY | (nAt << 8)]->setChecked(o->Status() == ICQ_STATUS_AWAY); |
| | 2146 | |
| | 2147 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_NA | (nAt << 8))) |
| | 2148 | mapProtocolStatusActions[CHANGE_STATUS_NA | (nAt << 8)]->setChecked(o->Status() == ICQ_STATUS_NA); |
| | 2149 | |
| | 2150 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_OCC | (nAt << 8))) |
| | 2151 | mapProtocolStatusActions[CHANGE_STATUS_OCC | (nAt << 8)]->setChecked(o->Status() == ICQ_STATUS_OCCUPIED); |
| | 2152 | |
| | 2153 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_DND | (nAt << 8))) |
| | 2154 | mapProtocolStatusActions[CHANGE_STATUS_DND | (nAt << 8)]->setChecked(o->Status() == ICQ_STATUS_DND); |
| | 2155 | |
| | 2156 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_FFC | (nAt << 8))) |
| | 2157 | mapProtocolStatusActions[CHANGE_STATUS_FFC | (nAt << 8)]->setChecked(o->Status() == ICQ_STATUS_FREEFORCHAT); |
| | 2158 | |
| | 2159 | if (mapProtocolStatusActions.contains(CHANGE_STATUS_OFFLINE | (nAt << 8))) |
| | 2160 | mapProtocolStatusActions[CHANGE_STATUS_OFFLINE | (nAt << 8)]->setChecked(o->Status() == ICQ_STATUS_OFFLINE); |
| 3114 | | mnuProtocolStatus[m_nProtoNum] = new QMenu(NULL); |
| 3115 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmOnline), tr("&Online"), |
| 3116 | | CHANGE_STATUS_ONLINE); |
| 3117 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmAway), tr("&Away"), |
| 3118 | | CHANGE_STATUS_AWAY); |
| 3119 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmNa), tr("&Not Available"), |
| 3120 | | CHANGE_STATUS_NA); |
| 3121 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmOccupied), tr("O&ccupied"), |
| 3122 | | CHANGE_STATUS_OCC); |
| 3123 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmDnd), tr("&Do Not Disturb"), |
| 3124 | | CHANGE_STATUS_DND); |
| 3125 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmFFC), tr("Free for C&hat"), |
| 3126 | | CHANGE_STATUS_FFC); |
| 3127 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmOffline), tr("O&ffline"), |
| 3128 | | CHANGE_STATUS_OFFLINE); |
| 3129 | | mnuProtocolStatus[m_nProtoNum]->insertSeparator(); |
| 3130 | | mnuProtocolStatus[m_nProtoNum]->insertItem(QIcon(pmPrivate), tr("&Invisible"), |
| 3131 | | CHANGE_STATUS_PRV); |
| 3132 | | mnuStatus->insertItem("ICQ", mnuProtocolStatus[m_nProtoNum], -1, m_nProtoNum); |
| 3133 | | connect(mnuProtocolStatus[m_nProtoNum], SIGNAL(activated(int)), |
| 3134 | | this, SLOT(changeStatusManualProtocol(int))); |
| | 3135 | mnuProtocolStatus[0] = new QMenu("ICQ"); |
| | 3136 | mnuStatusSeparator->setVisible(true); |
| | 3137 | mnuStatus->insertMenu(mnuStatusSeparator, mnuProtocolStatus[0]); |
| | 3138 | |
| | 3139 | a = mnuProtocolStatus[0]->addAction(QIcon(pmOnline), tr("&Online"), this, SLOT(changeStatusManualProtocol())); |
| | 3140 | a->setCheckable(true); |
| | 3141 | a->setData(static_cast<int>(CHANGE_STATUS_ONLINE)); |
| | 3142 | mapProtocolStatusActions[CHANGE_STATUS_ONLINE] = a; |
| | 3143 | |
| | 3144 | a = mnuProtocolStatus[0]->addAction(QIcon(pmAway), tr("&Away"), this, SLOT(changeStatusManualProtocol())); |
| | 3145 | a->setCheckable(true); |
| | 3146 | a->setData(static_cast<int>(CHANGE_STATUS_AWAY)); |
| | 3147 | mapProtocolStatusActions[CHANGE_STATUS_AWAY] = a; |
| | 3148 | |
| | 3149 | a = mnuProtocolStatus[0]->addAction(QIcon(pmNa), tr("&Not Available"), this, SLOT(changeStatusManualProtocol())); |
| | 3150 | a->setCheckable(true); |
| | 3151 | a->setData(static_cast<int>(CHANGE_STATUS_NA)); |
| | 3152 | mapProtocolStatusActions[CHANGE_STATUS_NA] = a; |
| | 3153 | |
| | 3154 | a = mnuProtocolStatus[0]->addAction(QIcon(pmOccupied), tr("O&ccupied"), this, SLOT(changeStatusManualProtocol())); |
| | 3155 | a->setCheckable(true); |
| | 3156 | a->setData(static_cast<int>(CHANGE_STATUS_OCC)); |
| | 3157 | mapProtocolStatusActions[CHANGE_STATUS_OCC] = a; |
| | 3158 | |
| | 3159 | a = mnuProtocolStatus[0]->addAction(QIcon(pmDnd), tr("&Do Not Disturb"), this, SLOT(changeStatusManualProtocol())); |
| | 3160 | a->setCheckable(true); |
| | 3161 | a->setData(static_cast<int>(CHANGE_STATUS_DND)); |
| | 3162 | mapProtocolStatusActions[CHANGE_STATUS_DND] = a; |
| | 3163 | |
| | 3164 | a = mnuProtocolStatus[0]->addAction(QIcon(pmFFC), tr("Free for C&hat"), this, SLOT(changeStatusManualProtocol())); |
| | 3165 | a->setCheckable(true); |
| | 3166 | a->setData(static_cast<int>(CHANGE_STATUS_FFC)); |
| | 3167 | mapProtocolStatusActions[CHANGE_STATUS_FFC] = a; |
| | 3168 | |
| | 3169 | a = mnuProtocolStatus[0]->addAction(QIcon(pmOffline), tr("O&ffline"), this, SLOT(changeStatusManualProtocol())); |
| | 3170 | a->setCheckable(true); |
| | 3171 | a->setData(static_cast<int>(CHANGE_STATUS_OFFLINE)); |
| | 3172 | mapProtocolStatusActions[CHANGE_STATUS_OFFLINE] = a; |
| | 3173 | |
| | 3174 | mnuProtocolStatus[0]->addSeparator(); |
| | 3175 | |
| | 3176 | a = mnuProtocolStatus[0]->addAction(QIcon(pmPrivate), tr("&Invisible"), this, SLOT(changeStatusManualProtocol())); |
| | 3177 | a->setCheckable(true); |
| | 3178 | a->setData(static_cast<int>(CHANGE_STATUS_PRV)); |
| | 3179 | mapProtocolStatusActions[CHANGE_STATUS_PRV] = a; |
| | 3180 | |
| 4431 | | // Skins without a menubar (frame.hasMenuBar = 0) cannot use |
| 4432 | | // QMenuData accelerators, so we need a accel that is available |
| 4433 | | // even without a menubar: |
| 4434 | | Q3Accel *a = new Q3Accel(this, "CMainWindow change Status Accel"); |
| 4435 | | a->insertItem(Qt::ALT + Qt::Key_O, ICQ_STATUS_ONLINE); |
| 4436 | | a->insertItem(Qt::ALT + Qt::Key_A, ICQ_STATUS_AWAY); |
| 4437 | | a->insertItem(Qt::ALT + Qt::Key_N, ICQ_STATUS_NA); |
| 4438 | | a->insertItem(Qt::ALT + Qt::Key_C, ICQ_STATUS_OCCUPIED); |
| 4439 | | a->insertItem(Qt::ALT + Qt::Key_D, ICQ_STATUS_DND); |
| 4440 | | a->insertItem(Qt::ALT + Qt::Key_H, ICQ_STATUS_FREEFORCHAT); |
| 4441 | | a->insertItem(Qt::ALT + Qt::Key_F, ICQ_STATUS_OFFLINE); |
| 4442 | | a->insertItem(Qt::ALT + Qt::Key_I, ICQ_STATUS_FxPRIVATE); |
| 4443 | | connect(a, SIGNAL(activated(int)), this, SLOT(changeStatusManual(int))); |
| 4444 | | #if QT_VERSION >= 0x030100 |
| 4445 | | connect(a, SIGNAL(activatedAmbiguously(int)), this, SLOT(changeStatusManual(int))); |
| 4446 | | #endif |
| 4447 | | |
| 4448 | | mnuStatus = new QMenu(NULL); |
| 4449 | | mnuPFM = new QMenu(NULL); |
| 4450 | | mnuPFM->insertItem(tr("Don't Show"), (int)ICQ_PLUGIN_STATUSxINACTIVE); |
| 4451 | | mnuPFM->insertItem(tr("Available"), ICQ_PLUGIN_STATUSxACTIVE); |
| 4452 | | mnuPFM->insertItem(tr("Busy"), ICQ_PLUGIN_STATUSxBUSY); |
| 4453 | | connect(mnuPFM, SIGNAL(activated(int)), this, SLOT(changePFMStatus(int))); |
| 4454 | | mnuStatus->insertItem(tr("Phone \"Follow Me\""), mnuPFM); |
| 4455 | | mnuStatus->insertSeparator(); |
| 4456 | | mnuStatus->insertItem(QIcon(pmOnline), tr("&Online"), ICQ_STATUS_ONLINE); |
| 4457 | | mnuStatus->insertItem(QIcon(pmAway), tr("&Away"), ICQ_STATUS_AWAY); |
| 4458 | | mnuStatus->insertItem(QIcon(pmNa), tr("&Not Available"), ICQ_STATUS_NA); |
| 4459 | | mnuStatus->insertItem(QIcon(pmOccupied), tr("O&ccupied"), ICQ_STATUS_OCCUPIED); |
| 4460 | | mnuStatus->insertItem(QIcon(pmDnd), tr("&Do Not Disturb"), ICQ_STATUS_DND); |
| 4461 | | mnuStatus->insertItem(QIcon(pmFFC), tr("Free for C&hat"), ICQ_STATUS_FREEFORCHAT); |
| 4462 | | mnuStatus->insertItem(QIcon(pmOffline), tr("O&ffline"), ICQ_STATUS_OFFLINE); |
| 4463 | | mnuStatus->insertSeparator(); |
| 4464 | | mnuStatus->insertItem(QIcon(pmPrivate), tr("&Invisible"), ICQ_STATUS_FxPRIVATE); |
| 4465 | | mnuStatus->setAccel(a->key(ICQ_STATUS_ONLINE), ICQ_STATUS_ONLINE); |
| 4466 | | mnuStatus->setAccel(a->key(ICQ_STATUS_AWAY), ICQ_STATUS_AWAY); |
| 4467 | | mnuStatus->setAccel(a->key(ICQ_STATUS_NA), ICQ_STATUS_NA); |
| 4468 | | mnuStatus->setAccel(a->key(ICQ_STATUS_OCCUPIED), ICQ_STATUS_OCCUPIED); |
| 4469 | | mnuStatus->setAccel(a->key(ICQ_STATUS_DND), ICQ_STATUS_DND); |
| 4470 | | mnuStatus->setAccel(a->key(ICQ_STATUS_FREEFORCHAT), ICQ_STATUS_FREEFORCHAT); |
| 4471 | | mnuStatus->setAccel(a->key(ICQ_STATUS_OFFLINE), ICQ_STATUS_OFFLINE); |
| 4472 | | mnuStatus->setAccel(a->key(ICQ_STATUS_FxPRIVATE), ICQ_STATUS_FxPRIVATE); |
| 4473 | | |
| 4474 | | connect(mnuStatus, SIGNAL(activated(int)), this, SLOT(changeStatusManual(int))); |
| | 4502 | mnuStatus = new QMenu(this); |
| | 4503 | QAction *a; |
| | 4504 | |
| | 4505 | // Start with a separator that will be below the status menu for individual protocols but hide it until it is needed |
| | 4506 | mnuStatusSeparator = mnuStatus->addSeparator(); |
| | 4507 | mnuStatusSeparator->setVisible(false); |
| | 4508 | |
| | 4509 | QMenu* mnuPFM = mnuStatus->addMenu(tr("Phone \"Follow Me\"")); |
| | 4510 | QActionGroup* agrPFM = new QActionGroup(this); |
| | 4511 | |
| | 4512 | a = mnuPFM->addAction(tr("Don't Show"), this, SLOT(changePFMStatus())); |
| | 4513 | a->setCheckable(true); |
| | 4514 | a->setData(static_cast<uint>(ICQ_PLUGIN_STATUSxINACTIVE)); |
| | 4515 | mapPFMActions[ICQ_PLUGIN_STATUSxINACTIVE] = a; |
| | 4516 | agrPFM->addAction(a); |
| | 4517 | |
| | 4518 | a = mnuPFM->addAction(tr("Available"), this, SLOT(changePFMStatus())); |
| | 4519 | a->setCheckable(true); |
| | 4520 | a->setData(static_cast<uint>(ICQ_PLUGIN_STATUSxACTIVE)); |
| | 4521 | mapPFMActions[ICQ_PLUGIN_STATUSxACTIVE] = a; |
| | 4522 | agrPFM->addAction(a); |
| | 4523 | |
| | 4524 | a = mnuPFM->addAction(tr("Busy"), this, SLOT(changePFMStatus())); |
| | 4525 | a->setCheckable(true); |
| | 4526 | a->setData(static_cast<uint>(ICQ_PLUGIN_STATUSxBUSY)); |
| | 4527 | mapPFMActions[ICQ_PLUGIN_STATUSxBUSY] = a; |
| | 4528 | agrPFM->addAction(a); |
| | 4529 | |
| | 4530 | mnuStatus->addSeparator(); |
| | 4531 | |
| | 4532 | // Add the global statuses to the status menu |
| | 4533 | // Adding the actions to the main window (this) allows the shortcuts to also be used when the skin has no menubar |
| | 4534 | |
| | 4535 | a = mnuStatus->addAction(QIcon(pmOnline), tr("&Online"), this, SLOT(changeStatusManual())); |
| | 4536 | a->setData(static_cast<uint>(ICQ_STATUS_ONLINE)); |
| | 4537 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_O)); |
| | 4538 | this->addAction(a); |
| | 4539 | mapStatusActions[ICQ_STATUS_ONLINE] = a; |
| | 4540 | |
| | 4541 | a = mnuStatus->addAction(QIcon(pmAway), tr("&Away"), this, SLOT(changeStatusManual())); |
| | 4542 | a->setData(static_cast<uint>(ICQ_STATUS_AWAY)); |
| | 4543 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_A)); |
| | 4544 | this->addAction(a); |
| | 4545 | mapStatusActions[ICQ_STATUS_AWAY] = a; |
| | 4546 | |
| | 4547 | a = mnuStatus->addAction(QIcon(pmNa), tr("&Not Available"), this, SLOT(changeStatusManual())); |
| | 4548 | a->setData(static_cast<uint>(ICQ_STATUS_NA)); |
| | 4549 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_N)); |
| | 4550 | this->addAction(a); |
| | 4551 | mapStatusActions[ICQ_STATUS_NA] = a; |
| | 4552 | |
| | 4553 | a = mnuStatus->addAction(QIcon(pmOccupied), tr("O&ccupied"), this, SLOT(changeStatusManual())); |
| | 4554 | a->setData(static_cast<uint>(ICQ_STATUS_OCCUPIED)); |
| | 4555 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_C)); |
| | 4556 | this->addAction(a); |
| | 4557 | mapStatusActions[ICQ_STATUS_OCCUPIED] = a; |
| | 4558 | |
| | 4559 | a = mnuStatus->addAction(QIcon(pmDnd), tr("&Do Not Disturb"), this, SLOT(changeStatusManual())); |
| | 4560 | a->setData(static_cast<uint>(ICQ_STATUS_DND)); |
| | 4561 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_D)); |
| | 4562 | this->addAction(a); |
| | 4563 | mapStatusActions[ICQ_STATUS_DND] = a; |
| | 4564 | |
| | 4565 | a = mnuStatus->addAction(QIcon(pmFFC), tr("Free for C&hat"), this, SLOT(changeStatusManual())); |
| | 4566 | a->setData(static_cast<uint>(ICQ_STATUS_FREEFORCHAT)); |
| | 4567 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_H)); |
| | 4568 | this->addAction(a); |
| | 4569 | mapStatusActions[ICQ_STATUS_FREEFORCHAT] = a; |
| | 4570 | |
| | 4571 | a = mnuStatus->addAction(QIcon(pmOffline), tr("O&ffline"), this, SLOT(changeStatusManual())); |
| | 4572 | a->setData(static_cast<uint>(ICQ_STATUS_OFFLINE)); |
| | 4573 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_F)); |
| | 4574 | this->addAction(a); |
| | 4575 | mapStatusActions[ICQ_STATUS_OFFLINE] = a; |
| | 4576 | |
| | 4577 | mnuStatus->addSeparator(); |
| | 4578 | |
| | 4579 | a = mnuStatus->addAction(QIcon(pmPrivate), tr("&Invisible"), this, SLOT(changeStatusManual())); |
| | 4580 | a->setData(static_cast<uint>(ICQ_STATUS_FxPRIVATE)); |
| | 4581 | a->setCheckable(true); |
| | 4582 | a->setShortcut(QKeySequence(Qt::ALT + Qt::Key_I)); |
| | 4583 | this->addAction(a); |
| | 4584 | mapStatusActions[ICQ_STATUS_FxPRIVATE] = a; |
| | 4585 | |