Commit e69d7fcd authored by Ronan Abhamon's avatar Ronan Abhamon

feat(app): add `sip-addresses`/* components

parent 4a7dd0b8
...@@ -66,6 +66,8 @@ set(SOURCES ...@@ -66,6 +66,8 @@ set(SOURCES
src/components/notifier/Notifier.cpp src/components/notifier/Notifier.cpp
src/components/settings/AccountSettingsModel.cpp src/components/settings/AccountSettingsModel.cpp
src/components/settings/SettingsModel.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/SmartSearchBarModel.cpp
src/components/smart-search-bar/SmartSearchBarProxyModel.cpp src/components/smart-search-bar/SmartSearchBarProxyModel.cpp
src/components/timeline/TimelineModel.cpp src/components/timeline/TimelineModel.cpp
...@@ -90,6 +92,8 @@ set(HEADERS ...@@ -90,6 +92,8 @@ set(HEADERS
src/components/presence/Presence.hpp src/components/presence/Presence.hpp
src/components/settings/AccountSettingsModel.hpp src/components/settings/AccountSettingsModel.hpp
src/components/settings/SettingsModel.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/SmartSearchBarModel.hpp
src/components/smart-search-bar/SmartSearchBarProxyModel.hpp src/components/smart-search-bar/SmartSearchBarProxyModel.hpp
src/components/timeline/TimelineModel.hpp src/components/timeline/TimelineModel.hpp
......
#include "SipAddressModel.hpp"
// =============================================================================
#ifndef SIP_ADDRESS_MODEL_H_
#define SIP_ADDRESS_MODEL_H_
#include <QObject>
// =============================================================================
class SipAddressModel : public QObject {
Q_OBJECT;
public:
};
#endif // SIP_ADDRESS_H_
#include "SipAddressesModel.hpp"
// =============================================================================
#ifndef SIP_ADDRESSES_MODEL_H_
#define SIP_ADDRESSES_MODEL_H_
#include <QAbstractListModel>
// =============================================================================
class SipAddresses : public QAbstractListModel {
Q_OBJECT;
public:
};
#endif // SIP_ADDRESSES_MODEL_H_
#include <algorithm> #include <algorithm>
#include <linphone++/linphone.hh>
#include <QDateTime> #include <QDateTime>
#include <QSet> #include <QSet>
#include <linphone++/linphone.hh>
#include "../../utils.hpp" #include "../../utils.hpp"
#include "../contacts/ContactsListModel.hpp" #include "../contacts/ContactsListModel.hpp"
...@@ -56,16 +56,16 @@ QVariant TimelineModel::data (const QModelIndex &index, int role) const { ...@@ -56,16 +56,16 @@ QVariant TimelineModel::data (const QModelIndex &index, int role) const {
void TimelineModel::init_entries () { void TimelineModel::init_entries () {
// Returns an iterator entry position to insert a new entry. // Returns an iterator entry position to insert a new entry.
auto search_entry = [this]( auto search_entry = [this](
const QVariantMap &map, const QVariantMap &map,
const QList<QMap<QString, QVariant> >::iterator *start = NULL const QList<QMap<QString, QVariant> >::iterator *start = NULL
) { ) {
return lower_bound( return lower_bound(
start ? *start : m_entries.begin(), m_entries.end(), map, start ? *start : m_entries.begin(), m_entries.end(), map,
[](const QVariantMap &a, const QVariantMap &b) { [](const QVariantMap &a, const QVariantMap &b) {
return a["timestamp"] > b["timestamp"]; return a["timestamp"] > b["timestamp"];
} }
); );
}; };
shared_ptr<linphone::Core> core(CoreManager::getInstance()->getCore()); shared_ptr<linphone::Core> core(CoreManager::getInstance()->getCore());
...@@ -82,11 +82,11 @@ void TimelineModel::init_entries () { ...@@ -82,11 +82,11 @@ void TimelineModel::init_entries () {
// Insert event message in timeline entries. // Insert event message in timeline entries.
QVariantMap map; QVariantMap map;
map["timestamp"] = QDateTime::fromMSecsSinceEpoch( map["timestamp"] = QDateTime::fromMSecsSinceEpoch(
static_cast<qint64>(message->getTime()) * 1000 static_cast<qint64>(message->getTime()) * 1000
); );
map["sipAddresses"] = Utils::linphoneStringToQString( map["sipAddresses"] = ::Utils::linphoneStringToQString(
chat_room->getPeerAddress()->asString() chat_room->getPeerAddress()->asString()
); );
m_entries.insert(search_entry(map), map); m_entries.insert(search_entry(map), map);
} }
...@@ -95,9 +95,9 @@ void TimelineModel::init_entries () { ...@@ -95,9 +95,9 @@ void TimelineModel::init_entries () {
QSet<QString> address_done; QSet<QString> address_done;
for (const auto &call_log : core->getCallLogs()) { for (const auto &call_log : core->getCallLogs()) {
// Get a sip uri to check. // Get a sip uri to check.
QString address = Utils::linphoneStringToQString( QString address = ::Utils::linphoneStringToQString(
call_log->getRemoteAddress()->asString() call_log->getRemoteAddress()->asString()
); );
if (address_done.contains(address)) if (address_done.contains(address))
continue; // Already used. continue; // Already used.
...@@ -107,16 +107,16 @@ void TimelineModel::init_entries () { ...@@ -107,16 +107,16 @@ void TimelineModel::init_entries () {
// Make a new map. // Make a new map.
QVariantMap map; QVariantMap map;
map["timestamp"] = QDateTime::fromMSecsSinceEpoch( 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; map["sipAddresses"] = address;
// Search existing entry. // Search existing entry.
auto it = find_if( auto it = find_if(
m_entries.begin(), m_entries.end(), [&address](const QVariantMap &map) { m_entries.begin(), m_entries.end(), [&address](const QVariantMap &map) {
return address == map["sipAddresses"].toString(); return address == map["sipAddresses"].toString();
} }
); );
// Is it a new entry? // Is it a new entry?
if (it == m_entries.cend()) if (it == m_entries.cend())
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
class ContactsListModel; class ContactsListModel;
// =================================================================== // =============================================================================
class TimelineModel : public QAbstractListModel { class TimelineModel : public QAbstractListModel {
Q_OBJECT; Q_OBJECT;
...@@ -23,7 +23,7 @@ private: ...@@ -23,7 +23,7 @@ private:
// A timeline enty is a object that contains: // A timeline enty is a object that contains:
// - A QDateTime `timestamp`. // - A QDateTime `timestamp`.
// - A `sipAddresses` value, if it exists only one address, it's // - 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; QList<QVariantMap> m_entries;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment