diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index 6ed204144..9c69191e5 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -782,17 +782,20 @@ void App::initCore() { if (mIsRestarting) { if (CoreModel::getInstance()->mConfigStatus == linphone::ConfiguringState::Failed) { QMetaObject::invokeMethod(thread(), [this]() { + mustBeInMainThread(log().arg(Q_FUNC_INFO)); auto message = CoreModel::getInstance()->mConfigMessage; //: not reachable if (message.isEmpty()) message = tr("configuration_error_detail"); - mustBeInMainThread(log().arg(Q_FUNC_INFO)); + lWarning() << log().arg("Configuration failed (reason: %1)").arg(message); //: Error Utils::showInformationPopup( tr("info_popup_error_title"), //: Remote provisioning failed : %1 tr("info_popup_configuration_failed_message").arg(message), false); }); - } else { + } else if (CoreModel::getInstance()->mConfigStatus == + linphone::ConfiguringState::Successful) { + lInfo() << log().arg("Configuration succeed"); mPossiblyLookForAddedAccount = true; if (mAccountList && mAccountList->getCount() > 0) { auto defaultConnected = diff --git a/Linphone/core/chat/ChatProxy.hpp b/Linphone/core/chat/ChatProxy.hpp index 2356ccfa2..82f808d86 100644 --- a/Linphone/core/chat/ChatProxy.hpp +++ b/Linphone/core/chat/ChatProxy.hpp @@ -30,13 +30,16 @@ class ChatProxy : public SortFilterProxy, public AbstractObject { Q_OBJECT - Q_PROPERTY(QAbstractItemModel *model WRITE setSourceModel NOTIFY modelChanged) + Q_PROPERTY(QAbstractItemModel *model READ getSourceModel WRITE setSourceModel NOTIFY modelChanged) public: ChatProxy(QObject *parent = Q_NULLPTR); ~ChatProxy(); void setSourceModel(QAbstractItemModel *sourceModel) override; + QAbstractItemModel *getSourceModel() const { + return sourceModel(); + } bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override; diff --git a/Linphone/model/cli/CliModel.cpp b/Linphone/model/cli/CliModel.cpp index a38302ddc..ef905e009 100644 --- a/Linphone/model/cli/CliModel.cpp +++ b/Linphone/model/cli/CliModel.cpp @@ -282,17 +282,25 @@ void CliModel::Command::executeUri(QString address, QHash args QUrl url(address); QString query = url.query(); lDebug() << QStringLiteral("CliModel : execute uri : %1").arg(query); + QStringList parameters = query.split('&'); for (int i = 0; i < parameters.size(); ++i) { QStringList parameter = parameters[i].split('='); lDebug() << QStringLiteral("CliModel : Detecting parameter : %1").arg(parameter[0]); - if (parameter[0] != "" && parameter[0] != "method") { - if (parameter.size() > 1) args[parameter[0]] = QByteArray::fromBase64(parameter[1].toUtf8()); - else args[parameter[0]] = ""; + QHash args = parent->parseArgs(parameters[i]); + for (auto it = args.begin(); it != args.end(); ++it) { + auto subfonction = parent->parseFunctionName(it.key(), true); + if (!subfonction.isEmpty()) { + QHash arg; + arg[it.key()] = QByteArray::fromBase64(it.value().toUtf8()); + lDebug() << "parsing parameters" << it.key() << it.value(); + parent->addProcess(ProcessCommand(mCommands[it.key()], arg, 1, parent)); + } } } - args["sip-address"] = address; + args["sip-address"] = address.left(address.indexOf('?')); + lDebug() << "CliModel: getting sip address " << args["sip-address"]; parent->addProcess(ProcessCommand(*this, args, 0, parent)); } @@ -404,7 +412,7 @@ void CliModel::executeCommand(const QString &command) { //, CommandFormat *forma addProcess(ProcessCommand(mCommands["fetch-config"], arg, 5, this)); } else { std::shared_ptr address; - QString qAddress = transformedCommand.left(transformedCommand.indexOf('?')); + QString qAddress = transformedCommand; //.left(transformedCommand.indexOf('?')); if (Utils::isUsername(transformedCommand)) { address = linphone::Factory::get()->createAddress( Utils::appStringToCoreString(transformedCommand + "@to.remove")); @@ -414,7 +422,6 @@ void CliModel::executeCommand(const QString &command) { //, CommandFormat *forma } else { address = linphone::Factory::get()->createAddress( Utils::appStringToCoreString(qAddress)); // Test if command is an address - qAddress = Utils::coreStringToAppString(address->asStringUriOnly()); } // if (format) *format = UriFormat; lInfo() << log().arg("Detecting URI command: `%1`…").arg(command); @@ -434,20 +441,6 @@ void CliModel::executeCommand(const QString &command) { //, CommandFormat *forma if (functionName.isEmpty()) functionName = "call"; } } - QStringList fields = command.split('&'); - for (int i = 0; i < fields.size(); ++i) { - QHash args = parseArgs(fields[i]); - QHash argsToProcess; - for (auto it = args.begin(); it != args.end(); ++it) { - auto subfonction = parseFunctionName(it.key(), true); - if (!subfonction.isEmpty()) { - QHash arg; - arg[it.key()] = it.value(); - // qAddress.remove(fields[i]); - addProcess(ProcessCommand(mCommands[it.key()], arg, 1, this)); - } - } - } functionName = functionName.toLower(); if (functionName.isEmpty()) {