diff --git a/callwidget.cpp b/callwidget.cpp index 9c63093aa9bc9e19c933b788c747302a74d5cd2b..effcfaa01807832da306425d22f134773854809d 100644 --- a/callwidget.cpp +++ b/callwidget.cpp @@ -135,8 +135,11 @@ CallWidget::CallWidget(QWidget* parent) : auto idx = selected.indexes().first(); auto realIdx = RecentModel::instance().peopleProxy()->mapFromSource(idx); ui->smartList->selectionModel()->setCurrentIndex(realIdx, QItemSelectionModel::ClearAndSelect); - } else + } else { + RecentModel::instance().selectionModel()->clearCurrentIndex(); ui->smartList->clearSelection(); + ui->smartList->selectionModel()->clearCurrentIndex(); + } }); connect(&NameDirectory::instance(), SIGNAL(registeredNameFound(Account*,NameDirectory::LookupStatus,const QString&,const QString&)), @@ -150,7 +153,10 @@ CallWidget::CallWidget(QWidget* parent) : connect(ui->sendContactRequestWidget, &SendContactRequestWidget::sendCRclicked, [=]{slidePage(ui->messagingPage);}); connect(ui->contactRequestWidget, &ContactRequestWidget::choiceMade, [this]() { - slidePage(ui->welcomePage); + if (getSelectedAccount()->pendingContactRequestModel()->rowCount() == 0) + ui->mainTabMenu->setCurrentWidget(ui->mainTabMenuPage1); + else + ui->contactRequestList->selectionModel()->clear(); }); connect(AvailableAccountModel::instance().selectionModel(), &QItemSelectionModel::currentChanged, @@ -538,8 +544,14 @@ void CallWidget::smartListCurrentChanged(const QModelIndex ¤tIdx, const QModelIndex &previousIdx) { Q_UNUSED(previousIdx); - if (not currentIdx.isValid()) + if (not currentIdx.isValid()) { + auto widget = ui->stackedWidget->currentWidget(); + if (widget == ui->messagingPage || widget == ui->videoPage) + slidePage(ui->welcomePage); + if(actualCall_) + setActualCall(nullptr); return; + } //catch call of current index auto currentIdxCall = RecentModel::instance().getActiveCall(currentIdx); @@ -587,8 +599,14 @@ CallWidget::contactReqListCurrentChanged(const QModelIndex ¤tIdx, const QM { Q_UNUSED(previousIdx) - ui->contactRequestWidget->setCurrentContactRequest(currentIdx); - ui->stackedWidget->setCurrentWidget(ui->contactRequestPage); + if (currentIdx.isValid()) { + ui->contactRequestWidget->setCurrentContactRequest(currentIdx); + ui->stackedWidget->setCurrentWidget(ui->contactRequestPage); + } else { + ui->contactRequestWidget->setCurrentContactRequest(QModelIndex()); + if (ui->stackedWidget->currentWidget() == ui->contactRequestPage) + slidePage(ui->welcomePage); + } } void @@ -713,11 +731,11 @@ CallWidget::selectedAccountChanged(const QModelIndex ¤t, const QModelIndex // Then, we update the pending CR list with those from the newly selected account if (disconnect(crListSelectionConnection_)) { + ui->contactRequestList->selectionModel()->clear(); // The selection model must be deleted by the application (see QT doc). QItemSelectionModel* sMod = ui->contactRequestList->selectionModel(); delete sMod; RecentModel::instance().selectionModel()->clear(); - slidePage(ui->welcomePage); } ui->contactRequestList->setItemModel(ac->pendingContactRequestModel()); @@ -839,7 +857,6 @@ void CallWidget::backToWelcomePage() { RecentModel::instance().selectionModel()->clear(); - slidePage(ui->welcomePage); disconnect(imConnection_); } @@ -931,14 +948,13 @@ CallWidget::on_sendContactRequestPageButton_clicked() void CallWidget::on_sendCRBackButton_clicked() { - slidePage(ui->messagingPage); + ui->stackedWidget->setCurrentWidget(ui->messagingPage); } void CallWidget::on_pendingCRBackButton_clicked() { ui->contactRequestList->selectionModel()->clear(); - slidePage(ui->welcomePage); } Account* @@ -951,3 +967,15 @@ CallWidget::getSelectedAccount() } return nullptr; } + +void CallWidget::on_mainTabMenu_currentChanged(int index) +{ + Q_UNUSED(index) + + auto current = ui->mainTabMenu->currentWidget(); + + if(current == ui->mainTabMenuPage1) + ui->contactRequestList->selectionModel()->clear(); + else if (current == ui->mainTabMenuPage2) + RecentModel::instance().selectionModel()->clear(); +} diff --git a/callwidget.h b/callwidget.h index 3aa7b517f3f9f14e69cefdf5cde051db9b3496ca..087fb763baf4d5a187561e06659220cb56489459 100644 --- a/callwidget.h +++ b/callwidget.h @@ -83,6 +83,7 @@ private slots: void on_qrButton_toggled(bool checked); void on_shareButton_clicked(); void on_pendingCRBackButton_clicked(); + void on_mainTabMenu_currentChanged(int index); private slots: void callIncoming(Call* call); diff --git a/callwidget.ui b/callwidget.ui index 3e66272b65df2294d884fe5d8c609b38691882c3..35597785fce35c4e47787c522529bf3d33ba545f 100644 --- a/callwidget.ui +++ b/callwidget.ui @@ -306,8 +306,21 @@ <property name="currentIndex"> <number>0</number> </property> - <widget class="QWidget" name="mainTabMenuPage1_2"> + <property name="iconSize"> + <size> + <width>24</width> + <height>24</height> + </size> + </property> + <widget class="QWidget" name="mainTabMenuPage1"> + <attribute name="icon"> + <iconset resource="ressources.qrc"> + <normaloff>:/images/icons/ic_chat_black_24dp_2x.png</normaloff>:/images/icons/ic_chat_black_24dp_2x.png</iconset> + </attribute> <attribute name="title"> + <string/> + </attribute> + <attribute name="toolTip"> <string>Conversations</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_6"> @@ -351,8 +364,15 @@ </layout> </widget> <widget class="QWidget" name="mainTabMenuPage2"> + <attribute name="icon"> + <iconset resource="ressources.qrc"> + <normaloff>:/images/icons/ic_person_add_black_24dp_2x.png</normaloff>:/images/icons/ic_person_add_black_24dp_2x.png</iconset> + </attribute> <attribute name="title"> - <string>Contact Requests</string> + <string/> + </attribute> + <attribute name="toolTip"> + <string>Contact requests</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_7"> <property name="spacing"> diff --git a/images/icons/ic_chat_black_24dp_2x.png b/images/icons/ic_chat_black_24dp_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e92e5f809cd0a62b9a5867d57319d1a86fe31e Binary files /dev/null and b/images/icons/ic_chat_black_24dp_2x.png differ diff --git a/images/icons/ic_person_add_black_24dp_2x.png b/images/icons/ic_person_add_black_24dp_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e8931b62c359a28c6cdd1151f3c1b49c5d9889 Binary files /dev/null and b/images/icons/ic_person_add_black_24dp_2x.png differ diff --git a/ressources.qrc b/ressources.qrc index 6b259abf7a4da9a6213627c7feb0854138f9b594..35ae24cff158e077359a6a55be3f1eba70c890cb 100644 --- a/ressources.qrc +++ b/ressources.qrc @@ -41,5 +41,7 @@ <file>images/icons/ic_share_black_48dp_2x.png</file> <file>images/loading.gif</file> <file>images/FontAwesome.otf</file> + <file>images/icons/ic_chat_black_24dp_2x.png</file> + <file>images/icons/ic_person_add_black_24dp_2x.png</file> </qresource> </RCC> diff --git a/stylesheet.css b/stylesheet.css index 8838f6101307a7a69a2d0f95bdbf145bbbca733d..474f0d4dac14b1ca394a867b33b2a1b24f36bd53 100644 --- a/stylesheet.css +++ b/stylesheet.css @@ -460,7 +460,6 @@ QPushButton#quickBanCRBtn:hover{ } QTabBar::tab{ - background: transparent; color: rgb(77, 77, 77); border-radius: 0px; border-style: solid; @@ -475,9 +474,22 @@ QTabBar::tab{ height: 20px; } +QTabWidget#mainTabMenu QTabBar::tab { + height: 24px; + width: auto; + padding-left: 14px; + margin-left:auto; + margin-right:auto; +} + +QTabWidget#mainTabMenu QTabBar::tab:hover { + background-color: rgb(242, 242, 242); +} + QTabWidget::tab-bar{ alignment: center; } + QTabBar QToolButton{ height: 9; width : 9;