@@ -395,14 +395,13 @@ void ParticipantWidget::updateServiceTabs()
395395 addServiceTab (service);
396396 }
397397
398- // Remove tabs not anymore present
399- /* for(QWidget* tab: std::as_const(m_services_tabs)){
400- if (!ids_service.contains(m_services_tabs.key(tab))){
401- ui->tabNav->removeTab(ui->tabNav->indexOf(tab));
402- tab->deleteLater();
403- m_services_tabs.remove(m_services_tabs.key(tab));
398+ if (m_services_tabs.count () == 0 ){
399+ // No config widget (maybe because no widget) - hide tab
400+ int indexTabServices = ui->tabNav ->indexOf (ui->tabServices );
401+ if (ui->tabNav ->isTabVisible (indexTabServices)){
402+ ui->tabNav ->setTabVisible (indexTabServices, false );
404403 }
405- }*/
404+ }
406405}
407406
408407void ParticipantWidget::addServiceTab (const TeraData &service)
@@ -444,8 +443,19 @@ void ParticipantWidget::addServiceTab(const TeraData &service)
444443
445444void ParticipantWidget::refreshWebAccessUrl ()
446445{
447- int index = ui->cmbServices ->currentIndex ();
448- if (index >= m_services.count () || index <0 || dataIsNew ())
446+ if (dataIsNew ())
447+ return ;
448+
449+ QString service_key = ui->cmbServices ->currentData ().toString ();
450+ int index = -1 ;
451+ for (int i=0 ; i<m_services.count (); i++){
452+ if (m_services.at (i).getFieldValue (" service_key" ).toString () == service_key){
453+ index = i;
454+ break ;
455+ }
456+ }
457+
458+ if (index < 0 )
449459 return ;
450460
451461 QString service_url = TeraData::getServiceParticipantUrl (m_services[index],
@@ -505,6 +515,9 @@ void ParticipantWidget::processSessionTypesReply(QList<TeraData> session_types)
505515 }
506516 }
507517
518+ if (ui->cmbSessionType ->count () == 0 )
519+ ui->cmbSessionType ->hide ();
520+
508521 // Query sessions for that participant
509522 if (!m_data->isNew ()){
510523 // Select current session type based on last session type used with that participant
@@ -596,14 +609,22 @@ void ParticipantWidget::processServicesReply(QList<TeraData> services, QUrlQuery
596609 bool has_email_service = false ;
597610 foreach (TeraData service, services){
598611 QString service_key = service.getFieldValue (" service_key" ).toString ();
599- if (service_key != " FileTransferService" && service.getFieldValue (" service_has_assets" ).toBool ()){
600- m_services.append (service);
601- ui->cmbServices ->addItem (service.getName (), service_key);
602- }else {
603- m_allowFileTransfers = true ; // We have a file transfer service with that project - allow uploads!
604- ui->wdgSessions ->enableFileTransfers (true );
612+ m_services.append (service);
613+
614+ // Web access combo box
615+ if (service.hasFieldName (" service_endpoint_participant" )){
616+ if (!service.getFieldValue (" service_endpoint_participant" ).isNull ()){
617+ // Ignore specific services...
618+ if (service_key != " FileTransferService" && service_key != " ActimetryService" && service_key != " EmailService" )
619+ ui->cmbServices ->addItem (service.getName (), service_key);
620+ }
605621 }
606622
623+ // Assets
624+ m_allowFileTransfers = service.getFieldValue (" service_has_assets" ).toBool (); // We have a file transfer service with that project - allow uploads!
625+ ui->wdgSessions ->enableFileTransfers (m_allowFileTransfers);
626+
627+ // Email
607628 if (service_key == " EmailService" ){
608629 has_email_service = true ;
609630 }
@@ -629,6 +650,8 @@ void ParticipantWidget::processServicesReply(QList<TeraData> services, QUrlQuery
629650 int default_index = ui->cmbServices ->findData (" VideoRehabService" );
630651 if (default_index>=0 )
631652 ui->cmbServices ->setCurrentIndex (default_index);
653+ ui->chkWebAccess ->setEnabled (ui->cmbServices ->count () > 0 );
654+ ui->chkLogin ->setEnabled (ui->cmbServices ->count () > 0 );
632655
633656 // Add specific services configuration tabs
634657 updateServiceTabs ();
0 commit comments