auto switch to away/online status when app is inactive/active #LINQT-2172

fix loading ui for chats/meetings lists

use uri only for account uris to remove the < and >
This commit is contained in:
Gaelle Braud 2025-11-28 12:12:00 +01:00
parent cca8db9055
commit f405754e24
18 changed files with 154 additions and 116 deletions

View file

@ -335,7 +335,7 @@ void App::setSelf(QSharedPointer<App>(me)) {
auto callCore = CallCore::create(call);
mCoreModelConnection->invokeToCore([this, callCore] {
auto callGui = new CallGui(callCore);
auto win = getCallsWindow(QVariant::fromValue(callGui));
auto win = getOrCreateCallsWindow(QVariant::fromValue(callGui));
Utils::smartShowWindow(win);
auto mainwin = getMainWindow();
QMetaObject::invokeMethod(mainwin, "callCreated");
@ -1068,7 +1068,39 @@ bool App::notify(QObject *receiver, QEvent *event) {
return done;
}
QQuickWindow *App::getCallsWindow(QVariant callGui) {
void App::handleAppActivity() {
auto handle = [this](AccountGui *currentAcount) {
auto accountCore = currentAcount->mCore;
Q_ASSERT(accountCore);
auto accountPresence = accountCore->getPresence();
if ((mMainWindow && mMainWindow->isActive() || (mCallsWindow && mCallsWindow->isActive())) &&
accountPresence == LinphoneEnums::Presence::Away)
accountCore->lSetPresence(LinphoneEnums::Presence::Online);
if (((!mMainWindow || !mMainWindow->isActive()) && (!mCallsWindow || !mCallsWindow->isActive())) &&
accountPresence == LinphoneEnums::Presence::Online)
accountCore->lSetPresence(LinphoneEnums::Presence::Away);
};
if (mAccountList) {
if (mAccountList->getDefaultAccount()) {
handle(mAccountList->getDefaultAccount());
} else {
connect(
mAccountList.get(), &AccountList::defaultAccountChanged, this,
[this, handle] {
if (mAccountList->getDefaultAccount()) {
handle(mAccountList->getDefaultAccount());
}
},
Qt::SingleShotConnection);
}
}
}
QQuickWindow *App::getCallsWindow() {
return mCallsWindow;
}
QQuickWindow *App::getOrCreateCallsWindow(QVariant callGui) {
mustBeInMainThread(getClassName());
if (!mCallsWindow) {
const QUrl callUrl("qrc:/qt/qml/Linphone/view/Page/Window/Call/CallsWindow.qml");
@ -1103,6 +1135,7 @@ QQuickWindow *App::getCallsWindow(QVariant callGui) {
}
// window->setParent(mMainWindow);
mCallsWindow = window;
connect(mCallsWindow, &QQuickWindow::activeChanged, this, &App::handleAppActivity);
}
if (!callGui.isNull() && callGui.isValid()) mCallsWindow->setProperty("call", callGui);
return mCallsWindow;
@ -1125,8 +1158,11 @@ QQuickWindow *App::getMainWindow() const {
}
void App::setMainWindow(QQuickWindow *data) {
if (mMainWindow) disconnect(mMainWindow, &QQuickWindow::activeChanged, this, nullptr);
if (mMainWindow != data) {
mMainWindow = data;
connect(mMainWindow, &QQuickWindow::activeChanged, this, &App::handleAppActivity);
handleAppActivity();
emit mainWindowChanged();
}
}

View file

@ -139,7 +139,9 @@ public:
bool getCoreStarted() const;
void setCoreStarted(bool started);
QQuickWindow *getCallsWindow(QVariant callGui = QVariant());
QQuickWindow *getCallsWindow();
Q_INVOKABLE void handleAppActivity();
QQuickWindow *getOrCreateCallsWindow(QVariant callGui = QVariant());
void setCallsWindowProperty(const char *id, QVariant property);
void closeCallsWindow();

View file

@ -213,7 +213,7 @@ void CallCore::setSelf(QSharedPointer<CallCore> me) {
Utils::showInformationPopup(tr("call_record_end_message"),
//: "L'appel a été enregistré dans le fichier : %1"
tr("call_record_saved_in_file_message").arg(recordFile), true,
App::getInstance()->getCallsWindow());
App::getInstance()->getOrCreateCallsWindow());
}
});
});

View file

@ -25,13 +25,13 @@
<context>
<name>AbstractWindow</name>
<message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="77"/>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="79"/>
<source>contact_dialog_pick_phone_number_or_sip_address_title</source>
<extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment>
<translation>Telefonnummer oder SIP-Adresse wählen</translation>
</message>
<message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="304"/>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="306"/>
<source>fps_counter</source>
<translation>%1 FPS</translation>
</message>
@ -752,30 +752,30 @@
<translation>Nur Anwendungs-Logs ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1373"/>
<location filename="../../core/App.cpp" line="1407"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Ausblenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1373"/>
<location filename="../../core/App.cpp" line="1407"/>
<source>show_action</source>
<translation>Zeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1388"/>
<location filename="../../core/App.cpp" line="1422"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Beenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1406"/>
<location filename="../../core/App.cpp" line="1440"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1524"/>
<location filename="../../core/App.cpp" line="1558"/>
<source>mark_all_read_action</source>
<translation type="unfinished"></translation>
</message>
@ -2529,74 +2529,74 @@ Error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="96"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="97"/>
<source>chat_dialog_delete_chat_title</source>
<extracomment>Supprimer la conversation ?</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="98"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="99"/>
<source>chat_dialog_delete_chat_message</source>
<extracomment>&quot;La conversation et tous ses messages seront supprimés.&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="131"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="132"/>
<source>chat_list_title</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Konversationen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="149"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="150"/>
<source>menu_mark_all_as_read</source>
<extracomment>&quot;mark all as read&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="179"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="180"/>
<source>chat_search_in_history</source>
<extracomment>&quot;Rechercher une conversation&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="202"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="203"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Kein Ergebnis</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="204"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="205"/>
<source>chat_list_empty_history</source>
<extracomment>&quot;Aucune conversation dans votre historique&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="273"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="274"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="311"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="312"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="313"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="314"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Erstellen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="329"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="352"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="357"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="353"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="358"/>
<source>information_popup_error_title</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="331"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="332"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation type="unfinished"></translation>
@ -2607,25 +2607,25 @@ Error</extracomment>
<translation type="obsolete">Der Codec konnte nicht installiert werden.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="349"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="350"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="354"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="355"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="359"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="360"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Sie sind nicht verbunden</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="365"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="366"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation type="unfinished"></translation>
@ -4606,19 +4606,19 @@ Error</extracomment>
<context>
<name>MeetingListView</name>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="280"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="277"/>
<source>meeting_info_cancelled</source>
<extracomment>&quot;Réunion annulée&quot;</extracomment>
<translation>Besprechung abgesagt</translation>
</message>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="304"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="301"/>
<source>meetings_list_no_meeting_for_today</source>
<extracomment>&quot;Aucune réunion aujourd&apos;hui&quot;</extracomment>
<translation>Heute keine Besprechungen</translation>
</message>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="338"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="335"/>
<source>meeting_info_delete</source>
<extracomment>&quot;Supprimer la réunion&quot;</extracomment>
<translation>Besprechung löschen</translation>

View file

@ -25,13 +25,13 @@
<context>
<name>AbstractWindow</name>
<message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="77"/>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="79"/>
<source>contact_dialog_pick_phone_number_or_sip_address_title</source>
<extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment>
<translation>Choose a SIP number or address</translation>
</message>
<message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="304"/>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="306"/>
<source>fps_counter</source>
<translation>%1 FPS</translation>
</message>
@ -757,30 +757,30 @@
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1373"/>
<location filename="../../core/App.cpp" line="1407"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Hide</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1373"/>
<location filename="../../core/App.cpp" line="1407"/>
<source>show_action</source>
<translation>Show</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1388"/>
<location filename="../../core/App.cpp" line="1422"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quit</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1406"/>
<location filename="../../core/App.cpp" line="1440"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Check for update</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1524"/>
<location filename="../../core/App.cpp" line="1558"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -2513,98 +2513,98 @@ Only your correspondent can decrypt them.</translation>
<translation>Chat room is being created...</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="96"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="97"/>
<source>chat_dialog_delete_chat_title</source>
<extracomment>Supprimer la conversation ?</extracomment>
<translation>Delete conversation ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="98"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="99"/>
<source>chat_dialog_delete_chat_message</source>
<extracomment>&quot;La conversation et tous ses messages seront supprimés.&quot;</extracomment>
<translation>This conversation and all its messages will be deleted.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="131"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="132"/>
<source>chat_list_title</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="149"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="150"/>
<source>menu_mark_all_as_read</source>
<extracomment>&quot;mark all as read&quot;</extracomment>
<translation>Mark all as read</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="179"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="180"/>
<source>chat_search_in_history</source>
<extracomment>&quot;Rechercher une conversation&quot;</extracomment>
<translation>Search for a chat</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="202"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="203"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>No result</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="204"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="205"/>
<source>chat_list_empty_history</source>
<extracomment>&quot;Aucune conversation dans votre historique&quot;</extracomment>
<translation>No conversation in history</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="273"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="274"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation>New conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="311"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="312"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation>New group</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="313"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="314"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Create</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="329"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="352"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="357"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="353"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="358"/>
<source>information_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="331"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="332"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation>Creation failed</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="349"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="350"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation>A name must be set for the group</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="354"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="355"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation>Please select at least one participant</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="359"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="360"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>You are not connected</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="365"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="366"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation>Chat creation pending</translation>
@ -4532,19 +4532,19 @@ Expiration : %1</translation>
<context>
<name>MeetingListView</name>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="280"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="277"/>
<source>meeting_info_cancelled</source>
<extracomment>&quot;Réunion annulée&quot;</extracomment>
<translation>Meeting canceled</translation>
</message>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="304"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="301"/>
<source>meetings_list_no_meeting_for_today</source>
<extracomment>&quot;Aucune réunion aujourd&apos;hui&quot;</extracomment>
<translation>No meeting for today</translation>
</message>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="338"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="335"/>
<source>meeting_info_delete</source>
<extracomment>&quot;Supprimer la réunion&quot;</extracomment>
<translation>Delete meeting</translation>

View file

@ -25,13 +25,13 @@
<context>
<name>AbstractWindow</name>
<message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="77"/>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="79"/>
<source>contact_dialog_pick_phone_number_or_sip_address_title</source>
<extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment>
<translation>Choisissez un numéro ou adresse SIP</translation>
</message>
<message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="304"/>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="306"/>
<source>fps_counter</source>
<translation>%1 FPS</translation>
</message>
@ -757,30 +757,30 @@
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1373"/>
<location filename="../../core/App.cpp" line="1407"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Cacher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1373"/>
<location filename="../../core/App.cpp" line="1407"/>
<source>show_action</source>
<translation>Afficher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1388"/>
<location filename="../../core/App.cpp" line="1422"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quitter</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1406"/>
<location filename="../../core/App.cpp" line="1440"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Rechercher une mise à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1524"/>
<location filename="../../core/App.cpp" line="1558"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -2513,98 +2513,98 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Création de la conversation en cours...</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="96"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="97"/>
<source>chat_dialog_delete_chat_title</source>
<extracomment>Supprimer la conversation ?</extracomment>
<translation>Supprimer la conversation ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="98"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="99"/>
<source>chat_dialog_delete_chat_message</source>
<extracomment>&quot;La conversation et tous ses messages seront supprimés.&quot;</extracomment>
<translation>La conversation et tous ses messages seront supprimés.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="131"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="132"/>
<source>chat_list_title</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="149"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="150"/>
<source>menu_mark_all_as_read</source>
<extracomment>&quot;mark all as read&quot;</extracomment>
<translation>Tout marquer comme lu</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="179"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="180"/>
<source>chat_search_in_history</source>
<extracomment>&quot;Rechercher une conversation&quot;</extracomment>
<translation>Rechercher une conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="202"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="203"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Aucun résultat</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="204"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="205"/>
<source>chat_list_empty_history</source>
<extracomment>&quot;Aucune conversation dans votre historique&quot;</extracomment>
<translation>Aucune conversation dans votre historique</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="273"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="274"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation>Nouvelle conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="311"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="312"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation>Nouveau groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="313"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="314"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Créer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="329"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="352"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="357"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="353"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="358"/>
<source>information_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="331"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="332"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation>La création a échoué</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="349"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="350"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation>Un nom doit être donné au groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="354"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="355"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation>Veuillez sélectionner au moins un participant</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="359"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="360"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Vous n&apos;êtes pas connecté</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="365"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="366"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation>Création de la conversation en cours</translation>
@ -4532,19 +4532,19 @@ Expiration : %1</translation>
<context>
<name>MeetingListView</name>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="280"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="277"/>
<source>meeting_info_cancelled</source>
<extracomment>&quot;Réunion annulée&quot;</extracomment>
<translation>Réunion annulée</translation>
</message>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="304"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="301"/>
<source>meetings_list_no_meeting_for_today</source>
<extracomment>&quot;Aucune réunion aujourd&apos;hui&quot;</extracomment>
<translation>Aucune réunion aujourd&apos;hui</translation>
</message>
<message>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="338"/>
<location filename="../../view/Control/Display/Meeting/MeetingListView.qml" line="335"/>
<source>meeting_info_delete</source>
<extracomment>&quot;Supprimer la réunion&quot;</extracomment>
<translation>Supprimer la réunion</translation>

View file

@ -274,7 +274,7 @@ void AccountModel::setTransport(linphone::TransportType value, bool save) {
QString AccountModel::getRegistrarUri() const {
if (mMonitor->getParams()->getServerAddress())
return Utils::coreStringToAppString(mMonitor->getParams()->getServerAddress()->asString());
return Utils::coreStringToAppString(mMonitor->getParams()->getServerAddress()->asStringUriOnly());
else return "";
}
@ -297,7 +297,7 @@ void AccountModel::setRegistrarUri(QString value) {
QString AccountModel::getOutboundProxyUri() const {
auto routeAddresses = mMonitor->getParams()->getRoutesAddresses();
auto outbound =
routeAddresses.empty() ? QString() : Utils::coreStringToAppString(routeAddresses.front()->asString());
routeAddresses.empty() ? QString() : Utils::coreStringToAppString(routeAddresses.front()->asStringUriOnly());
return outbound;
}
@ -399,7 +399,7 @@ void AccountModel::setExpire(int value) {
QString AccountModel::getConferenceFactoryAddress() const {
auto confAddress = mMonitor->getParams()->getConferenceFactoryAddress();
return confAddress ? Utils::coreStringToAppString(confAddress->asString()) : QString();
return confAddress ? Utils::coreStringToAppString(confAddress->asStringUriOnly()) : QString();
}
void AccountModel::setConferenceFactoryAddress(QString value) {
@ -421,7 +421,7 @@ void AccountModel::setConferenceFactoryAddress(QString value) {
QString AccountModel::getAudioVideoConferenceFactoryAddress() const {
auto confAddress = mMonitor->getParams()->getAudioVideoConferenceFactoryAddress();
return confAddress ? Utils::coreStringToAppString(confAddress->asString()) : QString();
return confAddress ? Utils::coreStringToAppString(confAddress->asStringUriOnly()) : QString();
}
void AccountModel::setAudioVideoConferenceFactoryAddress(QString value) {
@ -490,7 +490,7 @@ void AccountModel::setVoicemailAddress(QString value) {
QString AccountModel::getVoicemailAddress() const {
auto addr = mMonitor->getParams()->getVoicemailAddress();
return addr ? Utils::coreStringToAppString(addr->asString()) : "";
return addr ? Utils::coreStringToAppString(addr->asStringUriOnly()) : "";
}
// UserData (see hpp for explanations)

View file

@ -209,22 +209,22 @@ void Utils::createGroupCall(QString subject, const std::list<QString> &participa
// Comment on annule ? Si on ferme la fenêtre ça va finir l'appel en cours
void Utils::setupConference(ConferenceInfoGui *confGui) {
if (!confGui) return;
auto window = App::getInstance()->getCallsWindow(QVariant());
auto window = App::getInstance()->getOrCreateCallsWindow(QVariant());
window->setProperty("conferenceInfo", QVariant::fromValue(confGui));
window->show();
}
void Utils::openCallsWindow(CallGui *call) {
if (call) {
auto window = App::getInstance()->getCallsWindow(QVariant::fromValue(call));
auto window = App::getInstance()->getOrCreateCallsWindow(QVariant::fromValue(call));
window->show();
window->raise();
}
}
QQuickWindow *Utils::getCallsWindow(CallGui *callGui) {
QQuickWindow *Utils::getOrCreateCallsWindow(CallGui *callGui) {
auto app = App::getInstance();
auto window = app->getCallsWindow(QVariant::fromValue(callGui));
auto window = app->getOrCreateCallsWindow(QVariant::fromValue(callGui));
return window;
}
@ -1604,7 +1604,7 @@ VariantObject *Utils::getCurrentCallChat(CallGui *call) {
showInformationPopup(tr("information_popup_error_title"),
//: Failed to create 1-1 conversation with %1 !
tr("information_popup_chatroom_creation_error_message"), false,
getCallsWindow());
getOrCreateCallsWindow());
});
return QVariant();
}
@ -1638,7 +1638,7 @@ VariantObject *Utils::getChatForAddress(QString address) {
data->mConnection->invokeToCore([] {
showInformationPopup(tr("information_popup_error_title"),
tr("information_popup_chatroom_creation_error_message"), false,
getCallsWindow());
getOrCreateCallsWindow());
});
return QVariant();
}

View file

@ -84,7 +84,7 @@ public:
const QString &description,
bool isSuccess = true,
QQuickWindow *window = nullptr);
Q_INVOKABLE static QQuickWindow *getCallsWindow(CallGui *callGui = nullptr);
Q_INVOKABLE static QQuickWindow *getOrCreateCallsWindow(CallGui *callGui = nullptr);
Q_INVOKABLE static void closeCallsWindow();
Q_INVOKABLE static VariantObject *haveAccount();
Q_INVOKABLE static void smartShowWindow(QQuickWindow *window);

View file

@ -113,7 +113,7 @@ ColumnLayout {
style: ButtonStyle.grey
onClicked: {
if (mainItem.conferenceInfo) {
var callsWindow = UtilsCpp.getCallsWindow()
var callsWindow = UtilsCpp.getOrCreateCallsWindow()
callsWindow.setupConference(mainItem.conferenceInfo)
UtilsCpp.smartShowWindow(callsWindow)
}

View file

@ -205,7 +205,7 @@ ListView {
Accessible.name: qsTr("call_name_accessible_button").arg(historyAvatar.displayNameVal)
onClicked: {
if (modelData.core.isConference) {
var callsWindow = UtilsCpp.getCallsWindow()
var callsWindow = UtilsCpp.getOrCreateCallsWindow()
callsWindow.setupConference(
modelData.core.conferenceInfo)
UtilsCpp.smartShowWindow(callsWindow)

View file

@ -286,7 +286,7 @@ ColumnLayout {
text: qsTr("ics_bubble_join")
visible: !SettingsCpp.disableMeetingsFeature && conferenceInfo.state != LinphoneEnums.ConferenceInfoState.Cancelled
onClicked: {
var callsWindow = UtilsCpp.getCallsWindow()
var callsWindow = UtilsCpp.getOrCreateCallsWindow()
callsWindow.setupConference(mainItem.conferenceInfoGui)
UtilsCpp.smartShowWindow(callsWindow)
}

View file

@ -102,18 +102,15 @@ ListView {
initialDisplayItems: Math.max(20, Math.round(2 * mainItem.height / Utils.getSizeWithScreenRatio(63)))
displayItemsStep: initialDisplayItems/2
Component.onCompleted: {
mainItem.loading = !confInfoProxy.accountConnected
mainItem.loading = false
}
onModelAboutToBeReset: {
mainItem.loading = true
}
onModelReset: {
mainItem.loading = !confInfoProxy.accountConnected
mainItem.loading = false
selectData(getCurrentDateConfInfo())
}
onAccountConnectedChanged: (connected) => {
mainItem.loading = !connected
}
function selectData(confInfoGui){
mainItem.currentIndex = loadUntil(confInfoGui)
}

View file

@ -113,7 +113,7 @@ Item {
style: ButtonStyle.toast
text: currentCallNotif.currentCall ? currentCallNotif.currentCall.core.conference ? ("Réunion en cours : ") + currentCallNotif.currentCall.core.conference.core.subject : (("Appel en cours : ") + currentCallNotif.remoteName) : "appel en cours"
onClicked: {
var callsWindow = UtilsCpp.getCallsWindow(currentCallNotif.currentCall);
var callsWindow = UtilsCpp.getOrCreateCallsWindow(currentCallNotif.currentCall);
UtilsCpp.smartShowWindow(callsWindow);
}
}

View file

@ -81,7 +81,8 @@ AbstractMainPage {
showDefaultItem: listStackView.currentItem
&& listStackView.currentItem.objectName == "chatListItem"
&& listStackView.currentItem.listView.count === 0 || false
&& listStackView.currentItem.listView.count === 0
&& !listStackView.currentItem.listView.loading || false
function goToNewChat() {
if (listStackView.currentItem

View file

@ -910,7 +910,7 @@ AbstractMainPage {
KeyNavigation.right: leftPanelStackView.currentItem
onClicked: {
console.log(mainItem.selectedConference.core.uri)
var callsWindow = UtilsCpp.getCallsWindow()
var callsWindow = UtilsCpp.getOrCreateCallsWindow()
callsWindow.setupConference(mainItem.selectedConference)
UtilsCpp.smartShowWindow(callsWindow)
}

View file

@ -16,7 +16,9 @@ ApplicationWindow {
width: Math.min(Utils.getSizeWithScreenRatio(1512), Screen.desktopAvailableWidth)
height: Math.min(Utils.getSizeWithScreenRatio(982), Screen.desktopAvailableHeight)
onActiveChanged: if (active) UtilsCpp.setLastActiveWindow(this)
onActiveChanged: {
if (active) UtilsCpp.setLastActiveWindow(this)
}
Component.onDestruction: if (UtilsCpp.getLastActiveWindow() === this) UtilsCpp.setLastActiveWindow(null)
property bool isFullscreen: visibility == Window.FullScreen

View file

@ -65,7 +65,7 @@ AbstractWindow {
onTransferStateChanged: {
console.log("Transfer state:", transferState)
if (mainWindow.transferState === LinphoneEnums.CallState.OutgoingInit) {
var callsWin = UtilsCpp.getCallsWindow()
var callsWin = UtilsCpp.getOrCreateCallsWindow()
if (!callsWin)
return
//: "Transfert en cours, veuillez patienter"
@ -74,7 +74,7 @@ AbstractWindow {
|| mainWindow.transferState === LinphoneEnums.CallState.End
|| mainWindow.transferState === LinphoneEnums.CallState.Released
|| mainWindow.transferState === LinphoneEnums.CallState.Connected) {
var callsWin = UtilsCpp.getCallsWindow()
var callsWin = UtilsCpp.getOrCreateCallsWindow()
callsWin.closeLoadingPopup()
if (transferState === LinphoneEnums.CallState.Error)
UtilsCpp.showInformationPopup(
@ -786,7 +786,7 @@ AbstractWindow {
searchBarBorderColor: DefaultStyle.grey_200
searchBarRightMaring: 0
onContactClicked: contact => {
var callsWin = UtilsCpp.getCallsWindow()
var callsWin = UtilsCpp.getOrCreateCallsWindow()
if (contact)
//: "Confirmer le transfert"
callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"),
@ -799,7 +799,7 @@ AbstractWindow {
})
}
onTransferCallToAnotherRequested: dest => {
var callsWin = UtilsCpp.getCallsWindow()
var callsWin = UtilsCpp.getOrCreateCallsWindow()
console.log("transfer to",dest)
callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"),
qsTr("call_transfer_confirm_dialog_message").arg(mainWindow.call.core.remoteName).arg(dest.core.remoteName),"",