diff --git a/sflphone-client-kde/data/sflphone-client-kdeui.rc b/sflphone-client-kde/data/sflphone-client-kdeui.rc index a9111dba1061b649b2f2ba81eed118ba4deef20a..4402357f0571e624558ff8a88f7497ed08a03501 100644 --- a/sflphone-client-kde/data/sflphone-client-kdeui.rc +++ b/sflphone-client-kde/data/sflphone-client-kdeui.rc @@ -17,12 +17,12 @@ <Action name="action_hold" /> <Action name="action_transfer" /> <Action name="action_record" /> + <Action name="action_mailBox" /> <Separator /> + <Action name="action_main" /> <Action name="action_history" /> <Action name="action_addressBook" /> <Separator /> - <Action name="action_mailBox" /> - <Separator /> <Action name="action_close" /> <Separator /> <Action name="action_quit" /> @@ -32,24 +32,24 @@ <Action name="action_displayVolumeControls" /> <Action name="action_displayDialpad" /> <Separator /> -<!-- <Action name="action_configureAccounts" /> --> -<!-- <Action name="action_configureAudio" /> --> <Action name="action_configureSflPhone" /> <Separator /> <Action name="action_accountCreationWizard" /> </Menu> </MenuBar> - <!--<ToolBar name="mainToolBar" position="Top" noMerge="1" fullWidth="true" newline="true" > + <ToolBar name="callsToolBar" iconText="icononly" position="Top" noMerge="1" fullWidth="true" newline="true" > <Action name="action_accept" /> <Action name="action_refuse" /> <Action name="action_hold" /> <Action name="action_transfer" /> <Action name="action_record" /> - <Separator /> + <Action name="action_mailBox" /> + </ToolBar> + + <ToolBar name="screenToolBar" iconText="icononly" position="Top" noMerge="1" fullWidth="true" newline="true" > + <Action name="action_main" /> <Action name="action_history" /> <Action name="action_addressBook" /> - <Separator /> - <Action name="action_mailBox" /> - </ToolBar> --> + </ToolBar> </gui> \ No newline at end of file diff --git a/sflphone-client-kde/src/SFLPhone.cpp b/sflphone-client-kde/src/SFLPhone.cpp index a0c03e85e15028e24a810a5924a748f7c50f8648..48ebe899897630020606eff4d75aa7ee27e9c22e 100644 --- a/sflphone-client-kde/src/SFLPhone.cpp +++ b/sflphone-client-kde/src/SFLPhone.cpp @@ -52,34 +52,17 @@ SFLPhone::SFLPhone(QWidget *parent) // tell the KXmlGuiWindow that this is indeed the main widget setCentralWidget(view); - - - // add a status bar -// statusBar()->show(); - setWindowIcon(QIcon(ICON_SFLPHONE)); setWindowTitle(i18n("SFLphone")); setupActions(); - qDebug() << "currentPath = " << QDir::currentPath() ; - - - - QString rcFilePath = QString(DATA_INSTALL_DIR) + "/sflphone-client-kde/sflphone-client-kdeui.rc"; - if(! QFile::exists(rcFilePath)) - { - QDir dir; - dir.cdUp(); - dir.cd("data"); - rcFilePath = dir.filePath("sflphone-client-kdeui.rc"); - } - qDebug() << "rcFilePath = " << rcFilePath ; - createGUI(rcFilePath); setObjectNames(); - QMetaObject::connectSlotsByName(this); - view->updateStatusMessage(); + QMetaObject::connectSlotsByName(this); + view->on_stackedWidget_screen_currentChanged(SCREEN_MAIN); + view->loadWindow(); + move(QCursor::pos().x() - geometry().width()/2, QCursor::pos().y() - geometry().height()/2); if( ! configurationManager.isStartHidden()) @@ -90,8 +73,7 @@ SFLPhone::SFLPhone(QWidget *parent) if(configurationManager.getAccountList().value().isEmpty()) { (new AccountWizard())->show(); - } - + } } SFLPhone::~SFLPhone() @@ -108,46 +90,75 @@ void SFLPhone::setObjectNames() void SFLPhone::setupActions() { qDebug() << "setupActions"; + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + + action_accept = new KAction(this); + action_refuse = new KAction(this); + action_hold = new KAction(this); + action_transfer = new KAction(this); + action_record = new KAction(this); + action_mailBox = new KAction(this); + + action_screen = new QActionGroup(this); + action_screen->setExclusive(true); + action_main = new KAction(KIcon(QIcon(ICON_SCREEN_MAIN)), i18n("Main screen"), action_screen); + action_history = new KAction(KIcon(QIcon(ICON_SCREEN_HISTORY)), i18n("Call history"), action_screen); + action_addressBook = new KAction(KIcon(QIcon(ICON_SCREEN_ADDRESS)), i18n("Address book"), action_screen); + action_main->setCheckable(true); + action_history->setCheckable(true); + action_addressBook->setCheckable(true); + action_main->setChecked(true); + action_screen->addAction(action_main); + action_screen->addAction(action_history); + action_screen->addAction(action_addressBook); + + action_close = KStandardAction::close(this, SLOT(close()), this); + action_quit = KStandardAction::quit(this, SLOT(quitButton()), this); + + action_configureSflPhone = KStandardAction::preferences(view, SLOT(configureSflPhone()), this); + action_configureSflPhone->setText(i18n("Configure SFLphone")); + + action_displayVolumeControls = new KAction(KIcon(QIcon(ICON_DISPLAY_VOLUME_CONSTROLS)), i18n("Display volume controls"), this); + action_displayDialpad = new KAction(KIcon(QIcon(ICON_DISPLAY_DIALPAD)), i18n("Display dialpad"), this); + action_displayVolumeControls->setChecked(configurationManager.getVolumeControls()); + action_displayDialpad->setChecked(configurationManager.getDialpad()); + action_accountCreationWizard = new KAction(i18n("Account creation wizard"), this); + + connect(action_accept, SIGNAL(triggered()), view, SLOT(accept())); + connect(action_refuse, SIGNAL(triggered()), view, SLOT(refuse())); + connect(action_hold, SIGNAL(triggered()), view, SLOT(hold())); + connect(action_transfer, SIGNAL(triggered()), view, SLOT(transfer())); + connect(action_record, SIGNAL(triggered()), view, SLOT(record())); + connect(action_screen, SIGNAL(triggered(QAction *)), this, SLOT(updateScreen(QAction *))); + connect(action_mailBox, SIGNAL(triggered()), view, SLOT(mailBox())); + connect(action_displayVolumeControls, SIGNAL(triggered()), view, SLOT(displayVolumeControls())); + connect(action_displayDialpad, SIGNAL(triggered()), view, SLOT(displayDialpad())); + connect(action_accountCreationWizard, SIGNAL(triggered()), view, SLOT(accountCreationWizard())); - actionCollection()->addAction("action_accept", view->action_accept); - actionCollection()->addAction("action_refuse", view->action_refuse); - actionCollection()->addAction("action_hold", view->action_hold); - actionCollection()->addAction("action_transfer", view->action_transfer); - actionCollection()->addAction("action_record", view->action_record); - actionCollection()->addAction("action_history", view->action_history); - actionCollection()->addAction("action_addressBook", view->action_addressBook); - actionCollection()->addAction("action_mailBox", view->action_mailBox); - KAction * action_close = KStandardAction::close(this, SLOT(close()), 0); + action_screen->addAction(action_main); + action_screen->addAction(action_history); + action_screen->addAction(action_addressBook); + + actionCollection()->addAction("action_accept", action_accept); + actionCollection()->addAction("action_refuse", action_refuse); + actionCollection()->addAction("action_hold", action_hold); + actionCollection()->addAction("action_transfer", action_transfer); + actionCollection()->addAction("action_record", action_record); + actionCollection()->addAction("action_main", action_main); + actionCollection()->addAction("action_history", action_history); + actionCollection()->addAction("action_addressBook", action_addressBook); + actionCollection()->addAction("action_mailBox", action_mailBox); actionCollection()->addAction("action_close", action_close); - KAction * action_quit = KStandardAction::quit(this, SLOT(quitButton()), 0); actionCollection()->addAction("action_quit", action_quit); - - actionCollection()->addAction("action_displayVolumeControls", view->action_displayVolumeControls); - actionCollection()->addAction("action_displayDialpad", view->action_displayDialpad); - actionCollection()->addAction("action_configureSflPhone", view->action_configureSflPhone); -// actionCollection()->addAction("action_configureAccounts", view->action_configureAccounts); -// actionCollection()->addAction("action_configureAudio", view->action_configureAudio); - actionCollection()->addAction("action_accountCreationWizard", view->action_accountCreationWizard); + actionCollection()->addAction("action_displayVolumeControls", action_displayVolumeControls); + actionCollection()->addAction("action_displayDialpad", action_displayDialpad); + actionCollection()->addAction("action_configureSflPhone", action_configureSflPhone); + actionCollection()->addAction("action_accountCreationWizard", action_accountCreationWizard); statusBarWidget = new QLabel(); statusBar()->addWidget(statusBarWidget); - QToolBar * toolbar = new QToolBar(this); - this->addToolBar(Qt::TopToolBarArea, toolbar); - toolbar->addAction(view->action_accept); - toolbar->addAction(view->action_refuse); - toolbar->addAction(view->action_hold); - toolbar->addAction(view->action_transfer); - toolbar->addAction(view->action_record); - toolbar->addSeparator(); - toolbar->addAction(view->action_history); - toolbar->addAction(view->action_addressBook); - toolbar->addSeparator(); - toolbar->addAction(view->action_mailBox); - toolbar->setIconSize(QSize(TOOLBAR_SIZE,TOOLBAR_SIZE)); - - trayIconMenu = new QMenu(this); trayIconMenu->addAction(action_quit); @@ -156,6 +167,17 @@ void SFLPhone::setupActions() trayIcon->show(); iconChanged = false; + + QString rcFilePath = QString(DATA_INSTALL_DIR) + "/sflphone-client-kde/sflphone-client-kdeui.rc"; + if(! QFile::exists(rcFilePath)) + { + QDir dir; + dir.cdUp(); + dir.cd("data"); + rcFilePath = dir.filePath("sflphone-client-kdeui.rc"); + } + qDebug() << "rcFilePath = " << rcFilePath ; + createGUI(rcFilePath); } @@ -252,9 +274,102 @@ void SFLPhone::on_trayIcon_activated(QSystemTrayIcon::ActivationReason reason) } -void SFLPhone::on_view_statusMessageChanged(const QString & message) +void SFLPhone::on_view_statusMessageChangeAsked(const QString & message) { - qDebug() << "on_view_statusMessageChanged : " + message; + qDebug() << "on_view_statusMessageChangeAsked : " + message; statusBarWidget->setText(message); } +void SFLPhone::on_view_windowTitleChangeAsked(const QString & message) +{ + qDebug() << "on_view_windowTitleChangeAsked : " + message; + setWindowTitle(message); +} + +void SFLPhone::on_view_enabledActionsChangeAsked(const bool * enabledActions) +{ + qDebug() << "on_view_enabledActionsChangeAsked"; + action_accept->setEnabled(enabledActions[SFLPhone::Accept]); + action_refuse->setEnabled(enabledActions[SFLPhone::Refuse]); + action_hold->setEnabled(enabledActions[SFLPhone::Hold]); + action_transfer->setEnabled(enabledActions[SFLPhone::Transfer]); + action_record->setEnabled(enabledActions[SFLPhone::Record]); + action_mailBox->setEnabled(enabledActions[SFLPhone::Mailbox]); +} + +void SFLPhone::on_view_actionIconsChangeAsked(const QString * actionIcons) +{ + qDebug() << "on_view_actionIconsChangeAsked"; + action_accept->setIcon(QIcon(actionIcons[SFLPhone::Accept])); + action_refuse->setIcon(QIcon(actionIcons[SFLPhone::Refuse])); + action_hold->setIcon(QIcon(actionIcons[SFLPhone::Hold])); + action_transfer->setIcon(QIcon(actionIcons[SFLPhone::Transfer])); + action_record->setIcon(QIcon(actionIcons[SFLPhone::Record])); + action_mailBox->setIcon(QIcon(actionIcons[SFLPhone::Mailbox])); +} + +void SFLPhone::on_view_actionTextsChangeAsked(const QString * actionTexts) +{ + qDebug() << "on_view_actionTextsChangeAsked"; + action_accept->setText(actionTexts[SFLPhone::Accept]); + action_refuse->setText(actionTexts[SFLPhone::Refuse]); + action_hold->setText(actionTexts[SFLPhone::Hold]); + action_transfer->setText(actionTexts[SFLPhone::Transfer]); + action_record->setText(actionTexts[SFLPhone::Record]); + action_mailBox->setText(actionTexts[SFLPhone::Mailbox]); +} + + +void SFLPhone::on_view_transferCheckStateChangeAsked(bool transferCheckState) +{ + qDebug() << "Changing transfer action checkState"; + action_transfer->setChecked(transferCheckState); +} + +void SFLPhone::on_view_recordCheckStateChangeAsked(bool recordCheckState) +{ + qDebug() << "Changing record action checkState"; + action_record->setChecked(recordCheckState); +} + +void SFLPhone::updateScreen(QAction * action) +{ + if(action == action_main) view->changeScreen(SCREEN_MAIN); + else if(action == action_history) view->changeScreen(SCREEN_HISTORY); + else if(action == action_addressBook) view->changeScreen(SCREEN_ADDRESS); +} + +void SFLPhone::on_view_screenChanged(int screen) +{ + qDebug() << "on_view_screenChanged"; + if(screen == SCREEN_MAIN) action_main->setChecked(true); + else if(screen == SCREEN_HISTORY) action_history->setChecked(true); + else if(screen == SCREEN_ADDRESS) action_addressBook->setChecked(true); +} + +QList <QAction *> SFLPhone::getCallActions() +{ + QList<QAction *> callActions = QList<QAction *>(); + callActions.insert((int) Accept, action_accept); + callActions.insert((int) Refuse, action_refuse); + callActions.insert((int) Hold, action_hold); + callActions.insert((int)Transfer, action_transfer); + callActions.insert((int) Record, action_record); + callActions.insert((int) Mailbox, action_mailBox); + return callActions; +} + +void SFLPhone::on_view_incomingCall(const Call * call) +{ + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + trayIconSignal(); + if(configurationManager.popupMode()) + { + putForeground(); + } + if(configurationManager.getNotify()) + { + sendNotif(call->getPeerName().isEmpty() ? call->getPeerPhoneNumber() : call->getPeerName()); + } +} + diff --git a/sflphone-client-kde/src/SFLPhone.h b/sflphone-client-kde/src/SFLPhone.h index c85f58c1e6435db64338482a4e310e4b240ec4a0..f0b3992b3bf54f39dd4e112b2dfcedd5cd250931 100644 --- a/sflphone-client-kde/src/SFLPhone.h +++ b/sflphone-client-kde/src/SFLPhone.h @@ -30,6 +30,8 @@ #include <QSystemTrayIcon> #include <KXmlGuiWindow> +#include <KAction> +#include <QActionGroup> #include "ui_sflphone_kdeview_base.h" #include "CallList.h" @@ -42,10 +44,36 @@ class sflphone_kdeView; class SFLPhone : public KXmlGuiWindow { - Q_OBJECT +public: +enum CallAction { + Accept, + Refuse, + Hold, + Transfer, + Record, + Mailbox, + NumberOfCallActions}; + private: + KAction * action_accept; + KAction * action_refuse; + KAction * action_hold; + KAction * action_transfer; + KAction * action_record; + QActionGroup * action_screen; + KAction * action_main; + KAction * action_history; + KAction * action_addressBook; + KAction * action_mailBox; + KAction * action_close; + KAction * action_quit; + KAction * action_displayVolumeControls; + KAction * action_displayDialpad; + KAction * action_configureSflPhone; + KAction * action_accountCreationWizard; + sflphone_kdeView * view; QMenu *trayIconMenu; bool iconChanged; @@ -68,12 +96,22 @@ public: void putForeground(); void trayIconSignal(); sflphone_kdeView * getView(); + QList<QAction *> getCallActions(); private slots: void on_trayIcon_activated(QSystemTrayIcon::ActivationReason reason); void on_trayIcon_messageClicked(); - void on_view_statusMessageChanged(const QString & message); + void on_view_statusMessageChangeAsked(const QString & message); + void on_view_windowTitleChangeAsked(const QString & message); + void on_view_enabledActionsChangeAsked(const bool * enabledActions); + void on_view_actionIconsChangeAsked(const QString * actionIcons); + void on_view_actionTextsChangeAsked(const QString * actionTexts); + void on_view_transferCheckStateChangeAsked(bool transferCheckState); + void on_view_recordCheckStateChangeAsked(bool recordCheckState); + void updateScreen(QAction * action); + void on_view_screenChanged(int screen); + void on_view_incomingCall(const Call * call); void quitButton(); diff --git a/sflphone-client-kde/src/sflphone_const.h b/sflphone-client-kde/src/sflphone_const.h index 8829799acf68f9384cd2de9191db585ee6b756a2..834209c1cbf9dcbc818580ddb435261be157cf04 100644 --- a/sflphone-client-kde/src/sflphone_const.h +++ b/sflphone-client-kde/src/sflphone_const.h @@ -48,8 +48,11 @@ #define ACTION_LABEL_UNHOLD i18n("Hold off") #define ACTION_LABEL_GIVE_UP_TRANSF i18n("Give up transfer") #define ACTION_LABEL_CALL_BACK i18n("Call back") -// #define ACTION_LABEL_GIVE_UP_SEARCH i18n("Give up search") +#define ACTION_LABEL_MAILBOX i18n("Voicemail") +#define SCREEN_MAIN 0 +#define SCREEN_HISTORY 1 +#define SCREEN_ADDRESS 2 #define ICON_INCOMING ":/images/icons/ring.svg" #define ICON_RINGING ":/images/icons/ring.svg" @@ -70,6 +73,7 @@ #define ICON_EXEC_TRANSF ":/images/icons/call.svg" #define ICON_REC_DEL_OFF ":/images/icons/record_disabled.svg" #define ICON_REC_DEL_ON ":/images/icons/record.svg" +#define ICON_MAILBOX ":/images/icons/mailbox.svg" #define ICON_REC_VOL_0 ":/images/icons/mic.svg" #define ICON_REC_VOL_1 ":/images/icons/mic_25.svg" @@ -81,6 +85,13 @@ #define ICON_SND_VOL_2 ":/images/icons/speaker_50.svg" #define ICON_SND_VOL_3 ":/images/icons/speaker_75.svg" +#define ICON_SCREEN_MAIN ":/images/icons/sflphone.svg" +#define ICON_SCREEN_HISTORY ":/images/icons/history2.svg" +#define ICON_SCREEN_ADDRESS ":/images/icons/x-office-address-book.png" + +#define ICON_DISPLAY_VOLUME_CONSTROLS ":/images/icons/icon_volume_off.svg" +#define ICON_DISPLAY_DIALPAD ":/images/icons/icon_dialpad.svg" + #define ICON_HISTORY_INCOMING ":/images/icons/incoming.svg" #define ICON_HISTORY_OUTGOING ":/images/icons/outgoing.svg" #define ICON_HISTORY_MISSED ":/images/icons/missed.svg" diff --git a/sflphone-client-kde/src/sflphone_kdeview.cpp b/sflphone-client-kde/src/sflphone_kdeview.cpp index 732fabfd42841708a4c419b8f504b79af19eff22..f0f2518a7a8f14a2c8261b0252c44cde1da2a4cc 100644 --- a/sflphone-client-kde/src/sflphone_kdeview.cpp +++ b/sflphone-client-kde/src/sflphone_kdeview.cpp @@ -59,7 +59,6 @@ sflphone_kdeView::sflphone_kdeView(QWidget *parent) { setupUi(this); - action_configureSflPhone->setIcon(KIcon("preferences-other")); ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); @@ -121,9 +120,7 @@ sflphone_kdeView::sflphone_kdeView(QWidget *parent) stackedWidget_screen->setCurrentWidget(page_callList); - loadWindow(); - - emit statusMessageChanged("youhou"); +// loadWindow(); } @@ -139,9 +136,6 @@ sflphone_kdeView::~sflphone_kdeView() void sflphone_kdeView::loadWindow() { qDebug() << "loadWindow"; - ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); - action_displayVolumeControls->setChecked(configurationManager.getVolumeControls()); - action_displayDialpad->setChecked(configurationManager.getDialpad()); updateWindowCallState(); updateRecordButton(); updateVolumeButton(); @@ -152,6 +146,7 @@ void sflphone_kdeView::loadWindow() updateSearchHistory(); updateAddressBookEnabled(); updateAddressBook(); + updateStatusMessage(); } @@ -282,24 +277,6 @@ void sflphone_kdeView::backspace() } } } - if(stackedWidget_screen->currentWidget() == page_callHistory) - { - qDebug() << "In call history."; - int textSize = lineEdit_searchHistory->text().size(); - if(textSize > 0) - { - lineEdit_searchHistory->setText(lineEdit_searchHistory->text().remove(textSize-1, 1)); - } - } - if(stackedWidget_screen->currentWidget() == page_addressBook) - { - qDebug() << "In address book."; - int textSize = lineEdit_addressBook->text().size(); - if(textSize > 0) - { - lineEdit_addressBook->setText(lineEdit_addressBook->text().remove(textSize-1, 1)); - } - } } void sflphone_kdeView::escape() @@ -388,8 +365,9 @@ void sflphone_kdeView::enter() } else { - action_history->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callList); +// action_history->setChecked(false); +// stackedWidget_screen->setCurrentWidget(page_callList); + changeScreen(SCREEN_MAIN); Call * pastCall = callList->findCallByHistoryItem(item); if (!pastCall) @@ -413,8 +391,9 @@ void sflphone_kdeView::enter() } else { - action_addressBook->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callList); +// action_addressBook->setChecked(false); +// stackedWidget_screen->setCurrentWidget(page_callList); + changeScreen(SCREEN_MAIN); ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(item)); Call * call = callList->addDialingCall(w->getContactName()); call->appendItemText(w->getContactNumber()); @@ -466,94 +445,92 @@ void sflphone_kdeView::updateCallItem(Call * call) void sflphone_kdeView::updateWindowCallState() { qDebug() << "updateWindowCallState"; - QListWidgetItem * item; bool enabledActions[6]= {true,true,true,true,true,true}; - QString buttonIconFiles[3] = {ICON_CALL, ICON_HANGUP, ICON_HOLD}; - QString actionTexts[5] = {ACTION_LABEL_CALL, ACTION_LABEL_HANG_UP, ACTION_LABEL_HOLD, ACTION_LABEL_TRANSFER, ACTION_LABEL_RECORD}; + QString buttonIconFiles[6] = {ICON_CALL, ICON_HANGUP, ICON_HOLD, ICON_TRANSFER, ICON_REC_DEL_OFF, ICON_MAILBOX}; + QString actionTexts[6] = {ACTION_LABEL_CALL, ACTION_LABEL_HANG_UP, ACTION_LABEL_HOLD, ACTION_LABEL_TRANSFER, ACTION_LABEL_RECORD, ACTION_LABEL_MAILBOX}; + + QListWidgetItem * item; + bool transfer = false; //tells whether the call is in recording position bool recordActivated = false; - //tells whether the call can be recorded in the state it is right now - bool recordEnabled = false; - enabledActions[5] = firstRegisteredAccount() && ! firstRegisteredAccount()->getAccountDetail(ACCOUNT_MAILBOX).isEmpty(); + enabledActions[SFLPhone::Mailbox] = firstRegisteredAccount() && ! firstRegisteredAccount()->getAccountDetail(ACCOUNT_MAILBOX).isEmpty(); if(stackedWidget_screen->currentWidget() == page_callList) { item = listWidget_callList->currentItem(); if (!item) { qDebug() << "No item selected."; - enabledActions[1] = false; - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; + enabledActions[SFLPhone::Refuse] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; } else { Call * call = (*callList)[item]; call_state state = call->getState(); - //qDebug() << "calling getIsRecording on " << call->getCallId(); - //recordActivated = callManager.getIsRecording(call->getCallId()); recordActivated = call->getRecording(); switch (state) { case CALL_STATE_INCOMING: qDebug() << "Reached CALL_STATE_INCOMING with call " << (*callList)[item]->getCallId(); - buttonIconFiles[0] = ICON_ACCEPT; - buttonIconFiles[1] = ICON_REFUSE; - actionTexts[0] = ACTION_LABEL_ACCEPT; - actionTexts[1] = ACTION_LABEL_REFUSE; + buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; + buttonIconFiles[SFLPhone::Refuse] = ICON_REFUSE; + actionTexts[SFLPhone::Accept] = ACTION_LABEL_ACCEPT; + actionTexts[SFLPhone::Refuse] = ACTION_LABEL_REFUSE; break; case CALL_STATE_RINGING: qDebug() << "Reached CALL_STATE_RINGING with call " << (*callList)[item]->getCallId(); - enabledActions[2] = false; - enabledActions[3] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; break; case CALL_STATE_CURRENT: qDebug() << "details = " << CallManagerInterfaceSingleton::getInstance().getCallDetails(call->getCallId()).value(); qDebug() << "Reached CALL_STATE_CURRENT with call " << (*callList)[item]->getCallId(); - recordEnabled = true; + buttonIconFiles[SFLPhone::Record] = ICON_REC_DEL_ON; break; case CALL_STATE_DIALING: qDebug() << "Reached CALL_STATE_DIALING with call " << (*callList)[item]->getCallId(); - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; - actionTexts[0] = ACTION_LABEL_ACCEPT; - buttonIconFiles[0] = ICON_ACCEPT; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; + actionTexts[SFLPhone::Accept] = ACTION_LABEL_ACCEPT; + buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; break; case CALL_STATE_HOLD: qDebug() << "Reached CALL_STATE_HOLD with call " << (*callList)[item]->getCallId(); - buttonIconFiles[2] = ICON_UNHOLD; - actionTexts[2] = ACTION_LABEL_UNHOLD; + buttonIconFiles[SFLPhone::Hold] = ICON_UNHOLD; + actionTexts[SFLPhone::Hold] = ACTION_LABEL_UNHOLD; break; case CALL_STATE_FAILURE: qDebug() << "Reached CALL_STATE_FAILURE with call " << (*callList)[item]->getCallId(); - enabledActions[0] = false; - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; + enabledActions[SFLPhone::Accept] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; break; case CALL_STATE_BUSY: qDebug() << "Reached CALL_STATE_BUSY with call " << (*callList)[item]->getCallId(); - enabledActions[0] = false; - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; + enabledActions[SFLPhone::Accept] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; break; case CALL_STATE_TRANSFER: qDebug() << "Reached CALL_STATE_TRANSFER with call " << (*callList)[item]->getCallId(); - buttonIconFiles[0] = ICON_EXEC_TRANSF; - actionTexts[3] = ACTION_LABEL_GIVE_UP_TRANSF; + buttonIconFiles[SFLPhone::Accept] = ICON_EXEC_TRANSF; + actionTexts[SFLPhone::Transfer] = ACTION_LABEL_GIVE_UP_TRANSF; transfer = true; - recordEnabled = true; + buttonIconFiles[SFLPhone::Record] = ICON_REC_DEL_ON; break; case CALL_STATE_TRANSF_HOLD: qDebug() << "Reached CALL_STATE_TRANSF_HOLD with call " << (*callList)[item]->getCallId(); - buttonIconFiles[0] = ICON_EXEC_TRANSF; - buttonIconFiles[2] = ICON_UNHOLD; - actionTexts[3] = ACTION_LABEL_GIVE_UP_TRANSF; - actionTexts[2] = ACTION_LABEL_UNHOLD; + buttonIconFiles[SFLPhone::Accept] = ICON_EXEC_TRANSF; + buttonIconFiles[SFLPhone::Hold] = ICON_UNHOLD; + actionTexts[SFLPhone::Transfer] = ACTION_LABEL_GIVE_UP_TRANSF; + actionTexts[SFLPhone::Hold] = ACTION_LABEL_UNHOLD; transfer = true; break; case CALL_STATE_OVER: @@ -571,79 +548,54 @@ void sflphone_kdeView::updateWindowCallState() if(stackedWidget_screen->currentWidget() == page_callHistory) { item = listWidget_callHistory->currentItem(); - buttonIconFiles[0] = ICON_ACCEPT; - actionTexts[0] = ACTION_LABEL_CALL_BACK; -// actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH; + buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; + actionTexts[SFLPhone::Accept] = ACTION_LABEL_CALL_BACK; if (!item) { qDebug() << "No item selected."; - enabledActions[0] = false; - enabledActions[1] = false; - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; + enabledActions[SFLPhone::Accept] = false; + enabledActions[SFLPhone::Refuse] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; } else { - enabledActions[1] = false; - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; + enabledActions[SFLPhone::Refuse] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; } -// if(!lineEdit_searchHistory->text().isEmpty()) -// { -// enabledActions[1] = true; -// } } if(stackedWidget_screen->currentWidget() == page_addressBook) { item = listWidget_addressBook->currentItem(); - buttonIconFiles[0] = ICON_ACCEPT; -// actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH; + buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; if (!item) { qDebug() << "No item selected."; - enabledActions[0] = false; - enabledActions[1] = false; - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; + enabledActions[SFLPhone::Accept] = false; + enabledActions[SFLPhone::Refuse] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; } else { - enabledActions[1] = false; - enabledActions[2] = false; - enabledActions[3] = false; - enabledActions[4] = false; + enabledActions[SFLPhone::Refuse] = false; + enabledActions[SFLPhone::Hold] = false; + enabledActions[SFLPhone::Transfer] = false; + enabledActions[SFLPhone::Record] = false; } -// if(!lineEdit_addressBook->text().isEmpty()) -// { -// enabledActions[1] = true; -// } } qDebug() << "Updating Window."; - action_accept->setEnabled(enabledActions[0]); - action_refuse->setEnabled(enabledActions[1]); - action_hold->setEnabled(enabledActions[2]); - action_transfer->setEnabled(enabledActions[3]); - action_record->setEnabled(enabledActions[4]); - action_mailBox->setEnabled(enabledActions[5]); - - action_record->setIcon(QIcon(recordEnabled ? ICON_REC_DEL_ON : ICON_REC_DEL_OFF)); - action_accept->setIcon(QIcon(buttonIconFiles[0])); - action_refuse->setIcon(QIcon(buttonIconFiles[1])); - action_hold->setIcon(QIcon(buttonIconFiles[2])); - - action_accept->setText(actionTexts[0]); - action_refuse->setText(actionTexts[1]); - action_hold->setText(actionTexts[2]); - action_transfer->setText(actionTexts[3]); - action_record->setText(actionTexts[4]); - - action_transfer->setChecked(transfer); - action_record->setChecked(recordActivated); + emit enabledActionsChangeAsked(enabledActions); + emit actionIconsChangeAsked(buttonIconFiles); + emit actionTextsChangeAsked(actionTexts); + emit transferCheckStateChangeAsked(transfer); + emit recordCheckStateChangeAsked(recordActivated); qDebug() << "Window updated."; } @@ -898,11 +850,11 @@ void sflphone_kdeView::updateStatusMessage() Account * account = firstRegisteredAccount(); if(account == NULL) { - emit statusMessageChanged(i18n("No registered accounts")); + emit statusMessageChangeAsked(i18n("No registered accounts")); } else { - emit statusMessageChanged(i18n("Using account") + " \'" + account->getAlias() + "\' (" + account->getAccountDetail(ACCOUNT_TYPE) + ")") ; + emit statusMessageChangeAsked(i18n("Using account") + " \'" + account->getAlias() + "\' (" + account->getAccountDetail(ACCOUNT_TYPE) + ")") ; } } @@ -912,14 +864,14 @@ void sflphone_kdeView::updateStatusMessage() ************ Autoconnect ************* ************************************************************/ -void sflphone_kdeView::on_action_displayVolumeControls_triggered() +void sflphone_kdeView::displayVolumeControls() { ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); configurationManager.setVolumeControls(); updateVolumeControls(); } -void sflphone_kdeView::on_action_displayDialpad_triggered() +void sflphone_kdeView::displayDialpad() { ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); configurationManager.setDialpad(); @@ -1049,8 +1001,9 @@ void sflphone_kdeView::on_listWidget_callList_itemDoubleClicked(QListWidgetItem void sflphone_kdeView::on_listWidget_callHistory_itemDoubleClicked(QListWidgetItem * item) { qDebug() << "on_listWidget_callHistory_itemDoubleClicked"; - action_history->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callList); +// action_history->setChecked(false); +// stackedWidget_screen->setCurrentWidget(page_callList); + changeScreen(SCREEN_MAIN); Call * pastCall = callList->findCallByHistoryItem(item); Call * call = callList->addDialingCall(pastCall->getPeerName(), pastCall->getAccountId()); call->appendItemText(pastCall->getPeerPhoneNumber()); @@ -1063,8 +1016,9 @@ void sflphone_kdeView::on_listWidget_callHistory_itemDoubleClicked(QListWidgetIt void sflphone_kdeView::on_listWidget_addressBook_itemDoubleClicked(QListWidgetItem * item) { qDebug() << "on_listWidget_addressBook_itemDoubleClicked"; - action_addressBook->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callList); +// action_addressBook->setChecked(false); +// stackedWidget_screen->setCurrentWidget(page_callList); + changeScreen(SCREEN_MAIN); ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(item)); Call * call = callList->addDialingCall(w->getContactName()); call->appendItemText(w->getContactNumber()); @@ -1076,22 +1030,21 @@ void sflphone_kdeView::on_listWidget_addressBook_itemDoubleClicked(QListWidgetIt void sflphone_kdeView::on_stackedWidget_screen_currentChanged(int index) { qDebug() << "on_stackedWidget_screen_currentChanged"; - KXmlGuiWindow * window = (KXmlGuiWindow * ) this->parent(); switch(index) { - case 0: + case SCREEN_MAIN: qDebug() << "Switched to call list screen."; - window->setWindowTitle(i18n("SFLphone") + " - " + i18n("Main screen")); + emit windowTitleChangeAsked(i18n("SFLphone") + " - " + i18n("Main screen")); break; - case 1: + case SCREEN_HISTORY: qDebug() << "Switched to call history screen."; updateCallHistory(); - window->setWindowTitle(i18n("SFLphone") + " - " + i18n("Call history")); + emit windowTitleChangeAsked(i18n("SFLphone") + " - " + i18n("Call history")); break; - case 2: + case SCREEN_ADDRESS: qDebug() << "Switched to address book screen."; updateAddressBook(); - window->setWindowTitle(i18n("SFLphone") + " - " + i18n("Address book")); + emit windowTitleChangeAsked(i18n("SFLphone") + " - " + i18n("Address book")); break; default: qDebug() << "Error : reached an unknown index \"" << index << "\" with stackedWidget_screen."; @@ -1110,12 +1063,13 @@ void sflphone_kdeView::contextMenuEvent(QContextMenuEvent *event) this , SLOT(editBeforeCall())); menu.addAction(action_edit); } - - menu.addAction(action_accept); - menu.addAction(action_refuse); - menu.addAction(action_hold); - menu.addAction(action_transfer); - menu.addAction(action_record); + SFLPhone * window = (SFLPhone * ) this->parent(); + QList<QAction *> callActions = window->getCallActions(); + menu.addAction(callActions.at((int) SFLPhone::Accept)); + menu.addAction(callActions[SFLPhone::Refuse]); + menu.addAction(callActions[SFLPhone::Hold]); + menu.addAction(callActions[SFLPhone::Transfer]); + menu.addAction(callActions[SFLPhone::Record]); menu.addSeparator(); QAction * action = new ActionSetAccountFirst(NULL, &menu); @@ -1136,7 +1090,6 @@ void sflphone_kdeView::contextMenuEvent(QContextMenuEvent *event) menu.addAction(action); } menu.exec(event->globalPos()); - } void sflphone_kdeView::editBeforeCall() @@ -1173,9 +1126,10 @@ void sflphone_kdeView::editBeforeCall() QString newNumber = QInputDialog::getText(this, i18n("Edit before call"), QString(), QLineEdit::Normal, number, &ok); if(ok) { - action_history->setChecked(false); - action_addressBook->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callList); +// action_history->setChecked(false); +// action_addressBook->setChecked(false); +// stackedWidget_screen->setCurrentWidget(page_callList); + changeScreen(SCREEN_MAIN); Call * call = callList->addDialingCall(name); call->appendItemText(newNumber); addCallToCallList(call); @@ -1187,7 +1141,6 @@ void sflphone_kdeView::editBeforeCall() void sflphone_kdeView::setAccountFirst(Account * account) { qDebug() << "setAccountFirst : " << (account ? account->getAlias() : QString()); -// getAccountList()->setAccountFirst(account); if(account) { priorAccountId = account->getAccountId(); @@ -1212,19 +1165,19 @@ void sflphone_kdeView::on_listWidget_addressBook_currentItemChanged() } -void sflphone_kdeView::on_action_configureSflPhone_triggered() +void sflphone_kdeView::configureSflPhone() { configDialog->reload(); configDialog->show(); } -void sflphone_kdeView::on_action_accountCreationWizard_triggered() +void sflphone_kdeView::accountCreationWizard() { wizard->show(); } -void sflphone_kdeView::on_action_accept_triggered() +void sflphone_kdeView::accept() { if(stackedWidget_screen->currentWidget() == page_callList) { @@ -1262,9 +1215,9 @@ void sflphone_kdeView::on_action_accept_triggered() } if(stackedWidget_screen->currentWidget() == page_callHistory) { - action_history->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callList); - +// action_history->setChecked(false); +// stackedWidget_screen->setCurrentWidget(page_callList); + changeScreen(SCREEN_MAIN); Call * pastCall = callList->findCallByHistoryItem(listWidget_callHistory->currentItem()); Call * call = callList->addDialingCall(pastCall->getPeerName()); call->appendItemText(pastCall->getPeerPhoneNumber()); @@ -1274,8 +1227,9 @@ void sflphone_kdeView::on_action_accept_triggered() } if(stackedWidget_screen->currentWidget() == page_addressBook) { - action_addressBook->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callList); +// action_addressBook->setChecked(false); +// stackedWidget_screen->setCurrentWidget(page_callList); + changeScreen(SCREEN_MAIN); ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(listWidget_addressBook->currentItem())); Call * call = callList->addDialingCall(w->getContactName()); call->appendItemText(w->getContactNumber()); @@ -1285,7 +1239,7 @@ void sflphone_kdeView::on_action_accept_triggered() } } -void sflphone_kdeView::on_action_refuse_triggered() +void sflphone_kdeView::refuse() { if(stackedWidget_screen->currentWidget() == page_callList) { @@ -1309,7 +1263,7 @@ void sflphone_kdeView::on_action_refuse_triggered() } } -void sflphone_kdeView::on_action_hold_triggered() +void sflphone_kdeView::hold() { QListWidgetItem * item = listWidget_callList->currentItem(); if(!item) @@ -1322,7 +1276,7 @@ void sflphone_kdeView::on_action_hold_triggered() } } -void sflphone_kdeView::on_action_transfer_triggered() +void sflphone_kdeView::transfer() { QListWidgetItem * item = listWidget_callList->currentItem(); if(!item) @@ -1335,7 +1289,7 @@ void sflphone_kdeView::on_action_transfer_triggered() } } -void sflphone_kdeView::on_action_record_triggered() +void sflphone_kdeView::record() { QListWidgetItem * item = listWidget_callList->currentItem(); if(!item) @@ -1348,37 +1302,7 @@ void sflphone_kdeView::on_action_record_triggered() } } -void sflphone_kdeView::on_action_history_triggered(bool checked) -{ - if(checked == true) - { - action_addressBook->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_callHistory); - } - else - { - stackedWidget_screen->setCurrentWidget(page_callList); - } - updateWindowCallState(); -} - -void sflphone_kdeView::on_action_addressBook_triggered(bool checked) -{ - if(checked == true) - { - action_history->setChecked(false); - stackedWidget_screen->setCurrentWidget(page_addressBook); - if(lineEdit_addressBook->text().isEmpty()) - { lineEdit_addressBook->setFocus(Qt::OtherFocusReason); } - } - else - { - stackedWidget_screen->setCurrentWidget(page_callList); - } - updateWindowCallState(); -} - -void sflphone_kdeView::on_action_mailBox_triggered() +void sflphone_kdeView::mailBox() { Account * account = firstRegisteredAccount(); QString mailBoxNumber = account->getAccountDetail(ACCOUNT_MAILBOX); @@ -1426,16 +1350,7 @@ void sflphone_kdeView::on1_incomingCall(const QString &accountID, const QString Call * call = callList->addIncomingCall(callID); addCallToCallList(call); listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); - SFLPhone * window = (SFLPhone * ) this->parent(); - window->trayIconSignal(); - if(configurationManager.popupMode()) - { - window->putForeground(); - } - if(configurationManager.getNotify()) - { - window->sendNotif(call->getPeerName().isEmpty() ? call->getPeerPhoneNumber() : call->getPeerName()); - } + emit incomingCall(call); } void sflphone_kdeView::on1_incomingMessage(const QString &accountID, const QString &message) @@ -1486,11 +1401,10 @@ bool sflphone_kdeView::loadAddressBook() void sflphone_kdeView::updateAddressBookEnabled() { - action_addressBook->setVisible(isAddressBookEnabled()); + emit addressBookEnableAsked(isAddressBookEnabled()); if(! isAddressBookEnabled() && stackedWidget_screen->currentWidget() == page_addressBook) { - stackedWidget_screen->setCurrentWidget(page_callList); - action_history->setChecked(false); + changeScreen(SCREEN_MAIN); } } @@ -1502,4 +1416,24 @@ bool sflphone_kdeView::isAddressBookEnabled() return addressBookSettings[ADDRESSBOOK_ENABLE]; } +void sflphone_kdeView::changeScreen(int screen) +{ + switch(screen) + { + case SCREEN_MAIN: + stackedWidget_screen->setCurrentWidget(page_callList); + break; + case SCREEN_HISTORY: + stackedWidget_screen->setCurrentWidget(page_callHistory); + break; + case SCREEN_ADDRESS: + stackedWidget_screen->setCurrentWidget(page_addressBook); + break; + default: + break; + } + updateWindowCallState(); + emit screenChanged(screen); +} + #include "sflphone_kdeview.moc" diff --git a/sflphone-client-kde/src/sflphone_kdeview.h b/sflphone-client-kde/src/sflphone_kdeview.h index a9a4e72a779d9a108cc77ea07bd5e586e07c799c..9387fbab46df291f94c2047e6cd486fc6ef54936 100644 --- a/sflphone-client-kde/src/sflphone_kdeview.h +++ b/sflphone-client-kde/src/sflphone_kdeview.h @@ -79,6 +79,15 @@ protected: public: //Constructors & Destructors + /** + * This constructor does not load the window as it would + * better wait for the parent window to connect to the signals + * for updating it (statusMessageChangeAsked...). + * You should call the loadWindow() method once + * you have constructed the object and connected the + * expected signals. + * @param parent + */ sflphone_kdeView(QWidget *parent); virtual ~sflphone_kdeView(); @@ -236,11 +245,13 @@ public slots: void updateStatusMessage(); + /** * Enable the address book search line edit. * To be called once the address book loading has finished. */ void enableAddressBook(); + /** * Loads the address book asynchronously. * Calls enableAddressBook() once the address book @@ -277,20 +288,16 @@ public slots: } } - void on_action_displayVolumeControls_triggered(); - void on_action_displayDialpad_triggered(); -// void on_action_configureAccounts_triggered(); -// void on_action_configureAudio_triggered(); - void on_action_configureSflPhone_triggered(); - void on_action_accountCreationWizard_triggered(); - void on_action_accept_triggered(); - void on_action_refuse_triggered(); - void on_action_hold_triggered(); - void on_action_transfer_triggered(); - void on_action_record_triggered(); - void on_action_history_triggered(bool checked); - void on_action_addressBook_triggered(bool checked); - void on_action_mailBox_triggered(); + void displayVolumeControls(); + void displayDialpad(); + void configureSflPhone(); + void accountCreationWizard(); + void accept(); + void refuse(); + void hold(); + void transfer(); + void record(); + void mailBox(); void on_widget_dialpad_typed(QString text); @@ -320,8 +327,20 @@ public slots: void on1_voiceMailNotify(const QString &accountID, int count); void on1_volumeChanged(const QString &device, double value); + void changeScreen(int screen); + signals: - void statusMessageChanged(const QString & message); + void statusMessageChangeAsked(const QString & message); + void windowTitleChangeAsked(const QString & title); + void enabledActionsChangeAsked(const bool * enabledActions); + void actionIconsChangeAsked(const QString * actionIcons); + void actionTextsChangeAsked(const QString * actionTexts); + void transferCheckStateChangeAsked(bool transferCheckState); + void recordCheckStateChangeAsked(bool recordCheckState); + void addressBookEnableAsked(bool enableAddressBook); + void screenChanged(int screen); + void incomingCall(const Call * call); + }; diff --git a/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui b/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui index 64f801d60205e276c6335bf7bffeb8bc60a28ea5..4d026f13ed56e6cefb2062bc11e6594094f0e1a0 100644 --- a/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui +++ b/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui @@ -327,133 +327,6 @@ </widget> </item> </layout> - <action name="action_accept"> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/call.svg</normaloff>:/images/icons/call.svg</iconset> - </property> - <property name="text"> - <string>Pick up</string> - </property> - </action> - <action name="action_refuse"> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/hang_up.svg</normaloff>:/images/icons/hang_up.svg</iconset> - </property> - <property name="text"> - <string>Hang up</string> - </property> - </action> - <action name="action_hold"> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/hold.svg</normaloff>:/images/icons/hold.svg</iconset> - </property> - <property name="text"> - <string>Hold on</string> - </property> - </action> - <action name="action_transfer"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/transfert.svg</normaloff>:/images/icons/transfert.svg</iconset> - </property> - <property name="text"> - <string>Transfer</string> - </property> - </action> - <action name="action_history"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/history2.svg</normaloff>:/images/icons/history2.svg</iconset> - </property> - <property name="text"> - <string>History</string> - </property> - </action> - <action name="action_mailBox"> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/mailbox.svg</normaloff>:/images/icons/mailbox.svg</iconset> - </property> - <property name="text"> - <string>Voicemail</string> - </property> - </action> - <action name="action_configureSflPhone"> - <property name="text"> - <string>Configure SFLphone</string> - </property> - <property name="toolTip"> - <string>Configure SFLphone</string> - </property> - </action> - <action name="action_displayVolumeControls"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>true</bool> - </property> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/icon_volume_off.svg</normaloff>:/images/icons/icon_volume_off.svg</iconset> - </property> - <property name="text"> - <string>Display volume controls</string> - </property> - </action> - <action name="action_displayDialpad"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>true</bool> - </property> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/icon_dialpad.svg</normaloff>:/images/icons/icon_dialpad.svg</iconset> - </property> - <property name="text"> - <string>Display dialpad</string> - </property> - </action> - <action name="action_record"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="icon"> - <iconset> - <normaloff>:/images/icons/del_off.png</normaloff>:/images/icons/del_off.png</iconset> - </property> - <property name="text"> - <string>Record</string> - </property> - </action> - <action name="action_accountCreationWizard"> - <property name="text"> - <string>Account creation wizard</string> - </property> - </action> - <action name="action_addressBook"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="icon"> - <iconset resource="../qrc/resources.qrc"> - <normaloff>:/images/icons/x-office-address-book.png</normaloff>:/images/icons/x-office-address-book.png</iconset> - </property> - <property name="text"> - <string>Address book</string> - </property> - </action> </widget> <customwidgets> <customwidget>