mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-27 08:49:19 +00:00
feat(app): add sip-addresses/* components
This commit is contained in:
parent
4a7dd0b88a
commit
e69d7fcdf3
7 changed files with 65 additions and 27 deletions
|
|
@ -66,6 +66,8 @@ set(SOURCES
|
|||
src/components/notifier/Notifier.cpp
|
||||
src/components/settings/AccountSettingsModel.cpp
|
||||
src/components/settings/SettingsModel.cpp
|
||||
src/components/sip-addresses/SipAddressesModel.cpp
|
||||
src/components/sip-addresses/SipAddressModel.cpp
|
||||
src/components/smart-search-bar/SmartSearchBarModel.cpp
|
||||
src/components/smart-search-bar/SmartSearchBarProxyModel.cpp
|
||||
src/components/timeline/TimelineModel.cpp
|
||||
|
|
@ -90,6 +92,8 @@ set(HEADERS
|
|||
src/components/presence/Presence.hpp
|
||||
src/components/settings/AccountSettingsModel.hpp
|
||||
src/components/settings/SettingsModel.hpp
|
||||
src/components/sip-addresses/SipAddressesModel.hpp
|
||||
src/components/sip-addresses/SipAddressModel.hpp
|
||||
src/components/smart-search-bar/SmartSearchBarModel.hpp
|
||||
src/components/smart-search-bar/SmartSearchBarProxyModel.hpp
|
||||
src/components/timeline/TimelineModel.hpp
|
||||
|
|
|
|||
3
tests/src/components/sip-addresses/SipAddressModel.cpp
Normal file
3
tests/src/components/sip-addresses/SipAddressModel.cpp
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include "SipAddressModel.hpp"
|
||||
|
||||
// =============================================================================
|
||||
14
tests/src/components/sip-addresses/SipAddressModel.hpp
Normal file
14
tests/src/components/sip-addresses/SipAddressModel.hpp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#ifndef SIP_ADDRESS_MODEL_H_
|
||||
#define SIP_ADDRESS_MODEL_H_
|
||||
|
||||
#include <QObject>
|
||||
|
||||
// =============================================================================
|
||||
|
||||
class SipAddressModel : public QObject {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
};
|
||||
|
||||
#endif // SIP_ADDRESS_H_
|
||||
3
tests/src/components/sip-addresses/SipAddressesModel.cpp
Normal file
3
tests/src/components/sip-addresses/SipAddressesModel.cpp
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include "SipAddressesModel.hpp"
|
||||
|
||||
// =============================================================================
|
||||
14
tests/src/components/sip-addresses/SipAddressesModel.hpp
Normal file
14
tests/src/components/sip-addresses/SipAddressesModel.hpp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#ifndef SIP_ADDRESSES_MODEL_H_
|
||||
#define SIP_ADDRESSES_MODEL_H_
|
||||
|
||||
#include <QAbstractListModel>
|
||||
|
||||
// =============================================================================
|
||||
|
||||
class SipAddresses : public QAbstractListModel {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
};
|
||||
|
||||
#endif // SIP_ADDRESSES_MODEL_H_
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
#include <algorithm>
|
||||
|
||||
#include <linphone++/linphone.hh>
|
||||
#include <QDateTime>
|
||||
#include <QSet>
|
||||
#include <linphone++/linphone.hh>
|
||||
|
||||
#include "../../utils.hpp"
|
||||
#include "../contacts/ContactsListModel.hpp"
|
||||
|
|
@ -56,16 +56,16 @@ QVariant TimelineModel::data (const QModelIndex &index, int role) const {
|
|||
void TimelineModel::init_entries () {
|
||||
// Returns an iterator entry position to insert a new entry.
|
||||
auto search_entry = [this](
|
||||
const QVariantMap &map,
|
||||
const QList<QMap<QString, QVariant> >::iterator *start = NULL
|
||||
) {
|
||||
return lower_bound(
|
||||
start ? *start : m_entries.begin(), m_entries.end(), map,
|
||||
[](const QVariantMap &a, const QVariantMap &b) {
|
||||
return a["timestamp"] > b["timestamp"];
|
||||
}
|
||||
);
|
||||
};
|
||||
const QVariantMap &map,
|
||||
const QList<QMap<QString, QVariant> >::iterator *start = NULL
|
||||
) {
|
||||
return lower_bound(
|
||||
start ? *start : m_entries.begin(), m_entries.end(), map,
|
||||
[](const QVariantMap &a, const QVariantMap &b) {
|
||||
return a["timestamp"] > b["timestamp"];
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
shared_ptr<linphone::Core> core(CoreManager::getInstance()->getCore());
|
||||
|
||||
|
|
@ -82,11 +82,11 @@ void TimelineModel::init_entries () {
|
|||
// Insert event message in timeline entries.
|
||||
QVariantMap map;
|
||||
map["timestamp"] = QDateTime::fromMSecsSinceEpoch(
|
||||
static_cast<qint64>(message->getTime()) * 1000
|
||||
);
|
||||
map["sipAddresses"] = Utils::linphoneStringToQString(
|
||||
chat_room->getPeerAddress()->asString()
|
||||
);
|
||||
static_cast<qint64>(message->getTime()) * 1000
|
||||
);
|
||||
map["sipAddresses"] = ::Utils::linphoneStringToQString(
|
||||
chat_room->getPeerAddress()->asString()
|
||||
);
|
||||
|
||||
m_entries.insert(search_entry(map), map);
|
||||
}
|
||||
|
|
@ -95,9 +95,9 @@ void TimelineModel::init_entries () {
|
|||
QSet<QString> address_done;
|
||||
for (const auto &call_log : core->getCallLogs()) {
|
||||
// Get a sip uri to check.
|
||||
QString address = Utils::linphoneStringToQString(
|
||||
call_log->getRemoteAddress()->asString()
|
||||
);
|
||||
QString address = ::Utils::linphoneStringToQString(
|
||||
call_log->getRemoteAddress()->asString()
|
||||
);
|
||||
|
||||
if (address_done.contains(address))
|
||||
continue; // Already used.
|
||||
|
|
@ -107,16 +107,16 @@ void TimelineModel::init_entries () {
|
|||
// Make a new map.
|
||||
QVariantMap map;
|
||||
map["timestamp"] = QDateTime::fromMSecsSinceEpoch(
|
||||
static_cast<qint64>(call_log->getStartDate() + call_log->getDuration()) * 1000
|
||||
);
|
||||
static_cast<qint64>(call_log->getStartDate() + call_log->getDuration()) * 1000
|
||||
);
|
||||
map["sipAddresses"] = address;
|
||||
|
||||
// Search existing entry.
|
||||
auto it = find_if(
|
||||
m_entries.begin(), m_entries.end(), [&address](const QVariantMap &map) {
|
||||
return address == map["sipAddresses"].toString();
|
||||
}
|
||||
);
|
||||
m_entries.begin(), m_entries.end(), [&address](const QVariantMap &map) {
|
||||
return address == map["sipAddresses"].toString();
|
||||
}
|
||||
);
|
||||
|
||||
// Is it a new entry?
|
||||
if (it == m_entries.cend())
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
class ContactsListModel;
|
||||
|
||||
// ===================================================================
|
||||
// =============================================================================
|
||||
|
||||
class TimelineModel : public QAbstractListModel {
|
||||
Q_OBJECT;
|
||||
|
|
@ -23,7 +23,7 @@ private:
|
|||
// A timeline enty is a object that contains:
|
||||
// - A QDateTime `timestamp`.
|
||||
// - A `sipAddresses` value, if it exists only one address, it's
|
||||
// a string, otherwise it's a string array.
|
||||
// a string, otherwise it's a string array.
|
||||
QList<QVariantMap> m_entries;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue