Commit e69d7fcd authored by Ronan's avatar Ronan

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

parent 4a7dd0b8
......@@ -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
......
#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 <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;
};
......
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