#ifndef LOGS_MODEL_LOG_H
#define LOGS_MODEL_LOG_H
-#include "Contacts/Model/ContactData.h"
+#include "Model/DataItem.h"
#include <contacts.h>
#include <time.h>
-#include <functional>
#include <string>
namespace Logs
namespace Model
{
class LogGroup;
+
/**
* @brief Log record information
*/
- class Log : public Contacts::Model::ContactData
+ class Log : public ::Model::DataItem
{
public:
/**
- * @brief Callback to be called when log was removed to group.
- * @param[in] log Removed log
- */
- typedef std::function<void()> RemoveCallback;
-
- /**
* @brief Create log record
- * @param[in] record Log record (_contact_person_phone_log)
+ * @param[in] record Log record (_contact_phone_log)
*/
Log(contacts_record_h record);
- ~Log();
+ virtual ~Log() override;
+
Log(const Log &log) = delete;
Log &operator=(const Log &log) = delete;
/**
- * @brief Set log remove callback.
- * @param[in] callback log remove callback
- */
- void setRemoveCallback(RemoveCallback callback);
-
- /**
- * @brief Unset log remove callback.
- */
- void unsetRemoveCallback();
-
- /**
* @return log id
*/
- virtual int getId() const override;
+ int getId() const;
/**
* @return log name
*/
- virtual const char *getName() const override;
+ const char *getName() const;
/**
* @return log number
*/
- virtual const char *getNumber() const override;
+ const char *getNumber() const;
/**
* @return log name image path
*/
- virtual const char *getImagePath() const override;
+ const char *getImagePath() const;
/**
* @return type of number
* @brief Update contact record
*/
void updateContactRecord();
+
/**
* @brief Remove log from database
*/
void remove();
- /**
- * @brief Called when Log is destroyed
- */
- void onDestroy();
private:
+ friend class LogProvider;
contacts_record_h getContactRecord();
contacts_record_h m_LogRecord;
contacts_record_h m_ContactRecord;
LogGroup *m_Group;
- RemoveCallback m_OnRemoved;
};
}
}
using namespace Logs::Model;
Log::Log(contacts_record_h record)
- : ContactData(TypeLog),
- m_LogRecord(record), m_ContactRecord(getContactRecord()), m_Group(nullptr)
+ : m_LogRecord(record), m_ContactRecord(getContactRecord()), m_Group(nullptr)
{
}
}
}
-void Log::setRemoveCallback(RemoveCallback callback)
-{
- m_OnRemoved = std::move(callback);
-}
-
-void Log::unsetRemoveCallback()
-{
- m_OnRemoved = nullptr;
-}
-
int Log::getId() const
{
return getRecordInt(m_LogRecord, _contacts_phone_log.id);
{
contacts_db_delete_record(_contacts_phone_log._uri, getId());
}
-
-void Log::onDestroy()
-{
- if (m_OnRemoved) {
- m_OnRemoved();
- }
-}
#include <phone_number.h>
using namespace Common::Database;
-using namespace Contacts;
using namespace Logs::Model;
LogProvider::LogProvider()
}
size_t newGroupsCount = 0;
- for (auto &&contactData : Utils::makeRange(begin, end)) {
- Log *log = static_cast<Log *>(contactData);
+ for (auto &&dataItem : Utils::makeRange(begin, end)) {
+ Log *log = static_cast<Log *>(dataItem);
if (!shouldExist(*log)) {
continue;
}
Log *log = (Log *)(*oldIt);
if (id != log->getId()) {
- log->onDestroy();
+ log->onDeleted();
delete *oldIt;
oldIt = m_Logs.erase(oldIt);
} else {
}
while (oldIt != m_Logs.end()) {
- ((Log *)*oldIt)->onDestroy();
+ ((Log *)*oldIt)->onDeleted();
delete *oldIt;
oldIt = m_Logs.erase(oldIt);
}