diff --git a/linphone-app/assets/languages/it.ts b/linphone-app/assets/languages/it.ts
index 5068de483..5e11d6559 100644
--- a/linphone-app/assets/languages/it.ts
+++ b/linphone-app/assets/languages/it.ts
@@ -3369,7 +3369,7 @@ Clicca: <a href="%1">%1</a>
cancelButton
'Cancel' : Cancel button.
-
+ ANNULLA
startButton
diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp
index f8df585a8..24bfe7a55 100644
--- a/linphone-app/src/components/call/CallModel.cpp
+++ b/linphone-app/src/components/call/CallModel.cpp
@@ -501,10 +501,9 @@ void CallModel::accept (bool withVideo) {
params->enableVideo(withVideo);
setRecordFile(params);
auto localAddress = mCall->getCallLog()->getLocalAddress();
- std::list> proxies = core->getProxyConfigList() ;
- for(auto proxy : proxies){
- if(proxy->getIdentityAddress()->weakEqual(localAddress)) {
- params->setProxyConfig(proxy);
+ for(auto account : core->getAccountList()){
+ if( account->getParams()->getIdentityAddress()->weakEqual(localAddress)){
+ params->setAccount(account);
break;
}
}
diff --git a/linphone-app/src/components/calls/CallsListModel.cpp b/linphone-app/src/components/calls/CallsListModel.cpp
index 8d02478e0..6493e09f2 100644
--- a/linphone-app/src/components/calls/CallsListModel.cpp
+++ b/linphone-app/src/components/calls/CallsListModel.cpp
@@ -323,11 +323,16 @@ QVariantMap CallsListModel::createChatRoom(const QString& subject, const int& se
chatRoom = core->searchChatRoom(params, localAddress
, nullptr
, chatRoomParticipants);
+ if(chatRoom && ChatRoomModel::isTerminated(chatRoom))
+ chatRoom = nullptr;
params->setSubject(subject != ""?Utils::appStringToCoreString(subject):"Dummy Subject");
+
if(!chatRoom)
chatRoom = core->searchChatRoom(params, localAddress
, nullptr
, chatRoomParticipants);
+ if(chatRoom && ChatRoomModel::isTerminated(chatRoom))
+ chatRoom = nullptr;
}else
params->setSubject(subject != ""?Utils::appStringToCoreString(subject):"Dummy Subject");
if( !chatRoom) {
diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp
index 9b9df4473..bea32c713 100644
--- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp
+++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp
@@ -849,6 +849,10 @@ int ChatRoomModel::loadTillMessage(ChatMessageModel * message){
return -1;
}
+bool ChatRoomModel::isTerminated(const std::shared_ptr& chatRoom){
+ return chatRoom->getState() == linphone::ChatRoom::State::Terminated || chatRoom->getState() == linphone::ChatRoom::State::Deleted;
+}
+
void ChatRoomModel::initEntries(){
if( mList.size() > mLastEntriesStep)
resetData();
diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.hpp b/linphone-app/src/components/chat-room/ChatRoomModel.hpp
index 7fa941864..abb884cb9 100644
--- a/linphone-app/src/components/chat-room/ChatRoomModel.hpp
+++ b/linphone-app/src/components/chat-room/ChatRoomModel.hpp
@@ -173,6 +173,7 @@ public:
void callEnded(std::shared_ptr call);
void updateNewMessageNotice(const int& count);
Q_INVOKABLE int loadTillMessage(ChatMessageModel * message);// Load all entries till message and return its index. -1 if not found.
+ static bool isTerminated(const std::shared_ptr& chatRoom);
QDateTime mLastUpdateTime;
int mUnreadMessagesCount = 0;
diff --git a/linphone-app/src/components/conference/ConferenceListener.cpp b/linphone-app/src/components/conference/ConferenceListener.cpp
index 82738d5f8..07b2b633c 100644
--- a/linphone-app/src/components/conference/ConferenceListener.cpp
+++ b/linphone-app/src/components/conference/ConferenceListener.cpp
@@ -52,6 +52,9 @@ void ConferenceListener::onParticipantRemoved(const std::shared_ptr & conference, const std::shared_ptr & participantDevice){
qDebug() << "onParticipantDeviceAdded";
qDebug() << "Me devices : " << conference->getMe()->getDevices().size();
+ if( conference->getMe()->getDevices().size() > 1)
+ for(auto d : conference->getMe()->getDevices())
+ qDebug() << "\t--> " << d->getAddress()->asString().c_str();
emit participantDeviceAdded(participantDevice);
}
void ConferenceListener::onParticipantDeviceRemoved(const std::shared_ptr & conference, const std::shared_ptr & participantDevice){
diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp
index d816724a9..b60794fdb 100644
--- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp
+++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp
@@ -221,6 +221,18 @@ void ConferenceInfoModel::setTimeZoneModel(TimeZoneModel * model){
void ConferenceInfoModel::setIsScheduled(const bool& on){
if( mIsScheduled != on){
mIsScheduled = on;
+ if(!mIsScheduled){
+ mConferenceInfo->setDateTime(0);
+ mConferenceInfo->setDuration(0);
+ }else{
+ mTimeZone = QTimeZone::systemTimeZone();
+ QDateTime currentDateTime = QDateTime::currentDateTime();
+ QDateTime utc = currentDateTime.addSecs( -mTimeZone.offsetFromUtc(currentDateTime));
+ mConferenceInfo->setDateTime(utc.toMSecsSinceEpoch() / 1000);
+ mConferenceInfo->setDuration(1200);
+ }
+ emit dateTimeChanged();
+ emit durationChanged();
emit isScheduledChanged();
}
}
@@ -232,23 +244,15 @@ void ConferenceInfoModel::createConference(const int& securityLevel, const int&
shared_ptr core = CoreManager::getInstance()->getCore();
static std::shared_ptr conference;
qInfo() << "Conference creation of " << getSubject() << " at " << securityLevel << " security, organized by " << getOrganizer();
+ qInfo() << "Participants:";
+ for(auto p : mConferenceInfo->getParticipants())
+ qInfo() << "\t" << p->asString().c_str();
- if( isScheduled()){
- mConferenceScheduler = ConferenceScheduler::create();
- connect(mConferenceScheduler.get(), &ConferenceScheduler::invitationsSent, this, &ConferenceInfoModel::onInvitationsSent);
- connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onStateChanged);
- mConferenceScheduler->getConferenceScheduler()->setInfo(mConferenceInfo);
- }else{
- auto conferenceParameters = core->createConferenceParams(nullptr);
- conferenceParameters->enableAudio(true);
- conferenceParameters->enableVideo(true);
- conferenceParameters->setDescription(mConferenceInfo->getDescription());
- conferenceParameters->setSubject(mConferenceInfo->getSubject());
- conferenceParameters->setStartTime(0);
- conferenceParameters->setEndTime(0);
- conferenceParameters->enableLocalParticipant(true);
- conference = core->createConferenceWithParams(conferenceParameters);
- }
+
+ mConferenceScheduler = ConferenceScheduler::create();
+ connect(mConferenceScheduler.get(), &ConferenceScheduler::invitationsSent, this, &ConferenceInfoModel::onInvitationsSent);
+ connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onStateChanged);
+ mConferenceScheduler->getConferenceScheduler()->setInfo(mConferenceInfo);
}
//-------------------------------------------------------------------------------------------------
diff --git a/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp b/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp
index deff56552..1f74d6315 100644
--- a/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp
+++ b/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp
@@ -38,6 +38,8 @@ QSharedPointer ConferenceScheduler::create( QObject *parent
ConferenceScheduler::ConferenceScheduler (QObject * parent) : QObject(parent){
App::getInstance()->getEngine()->setObjectOwnership(this, QQmlEngine::CppOwnership);// Avoid QML to destroy it when passing by Q_INVOKABLE
mConferenceScheduler = CoreManager::getInstance()->getCore()->createConferenceScheduler();
+ qDebug() << "Create Scheduler with this account : " << CoreManager::getInstance()->getCore()->getDefaultAccount()->getContactAddress()->asString().c_str();
+ mConferenceScheduler->setAccount(CoreManager::getInstance()->getCore()->getDefaultAccount());
mConferenceSchedulerListener = std::make_shared();
connectTo(mConferenceSchedulerListener.get());
mConferenceScheduler->addListener(mConferenceSchedulerListener);
diff --git a/linphone-app/src/components/timeline/TimelineListModel.cpp b/linphone-app/src/components/timeline/TimelineListModel.cpp
index b400ed02a..65c3d6423 100644
--- a/linphone-app/src/components/timeline/TimelineListModel.cpp
+++ b/linphone-app/src/components/timeline/TimelineListModel.cpp
@@ -208,11 +208,9 @@ void TimelineListModel::updateTimelines () {
// Clean terminated chat rooms and conferences from timeline.
allChatRooms.remove_if([](std::shared_ptr chatRoom){
- bool toRemove = chatRoom->getState() == linphone::ChatRoom::State::Terminated || chatRoom->getState() == linphone::ChatRoom::State::Deleted
- || (chatRoom->getConferenceAddress() && chatRoom->getHistoryEventsSize() == 0);
- if( toRemove)
+ if( ChatRoomModel::isTerminated(chatRoom) && chatRoom->getUnreadMessagesCount() > 0)
chatRoom->markAsRead();
- return toRemove;
+ return chatRoom->getConferenceAddress() && chatRoom->getHistoryEventsSize() == 0;
});
//Remove no more chat rooms
diff --git a/linphone-app/src/components/timeline/TimelineModel.cpp b/linphone-app/src/components/timeline/TimelineModel.cpp
index 6edb8a680..f680a5a44 100644
--- a/linphone-app/src/components/timeline/TimelineModel.cpp
+++ b/linphone-app/src/components/timeline/TimelineModel.cpp
@@ -150,7 +150,7 @@ ChatRoomModel *TimelineModel::getChatRoomModel() const{
}
void TimelineModel::setSelected(const bool& selected){
- if(selected != mSelected){
+ if(mChatRoomModel && selected != mSelected){
mSelected = selected;
if(mSelected){
qInfo() << "Chat room selected : Subject :" << mChatRoomModel->getSubject()
diff --git a/linphone-app/ui/views/App/Dialog/NewConference.qml b/linphone-app/ui/views/App/Dialog/NewConference.qml
index ed0eb47ea..3e47210da 100644
--- a/linphone-app/ui/views/App/Dialog/NewConference.qml
+++ b/linphone-app/ui/views/App/Dialog/NewConference.qml
@@ -362,6 +362,7 @@ DialogPlus {
Layout.fillHeight: true
Layout.rightMargin: 15
spacing:5
+ visible: scheduledSwitch.checked
Text{
Layout.fillWidth: true
Layout.preferredHeight: 20
diff --git a/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml b/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml
index 0d02d113e..22c33498c 100644
--- a/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml
+++ b/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml
@@ -118,7 +118,7 @@ QtObject {
property color backgroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_d', icon, 'me_d_b_inv_bg').color
property color backgroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_h', icon, 'me_h_b_inv_bg').color
property color backgroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_p', icon, 'me_p_b_inv_bg').color
- property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_n_b_inv_fg').color
+ property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_h_b_inv_fg').color
property color foregroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_d', icon, 'me_d_b_inv_fg').color
property color foregroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_h', icon, 'me_h_b_inv_fg').color
property color foregroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_p', icon, 'me_p_b_inv_fg').color
diff --git a/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml b/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml
index f1313b992..47c1fb3a6 100644
--- a/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml
+++ b/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml
@@ -118,7 +118,7 @@ QtObject {
property color backgroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_d', icon, 'me_d_b_inv_bg').color
property color backgroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_h', icon, 'me_h_b_inv_bg').color
property color backgroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_p', icon, 'me_p_b_inv_bg').color
- property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_n_b_inv_fg').color
+ property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_h_b_inv_fg').color
property color foregroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_d', icon, 'me_d_b_inv_fg').color
property color foregroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_h', icon, 'me_h_b_inv_fg').color
property color foregroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_p', icon, 'me_p_b_inv_fg').color