kappachat/src/deltachat_context.cc

52 lines
1.3 KiB
C++

#include "deltachat_context.hh"
#include <QApplication>
#include <iostream>
#include <utility>
namespace kappachat {
DeltachatContext::DeltachatContext()
: m_context{dc_context_new(NULL, "kappachat.sqlite", NULL)},
m_event_thread{std::bind(&DeltachatContext::eventThread, this)} {}
DeltachatContext::~DeltachatContext() {
dc_stop_io(m_context);
dc_context_unref(m_context);
m_event_thread.join();
}
void DeltachatContext::setConfig(QString key, QString value) {
dc_set_config(m_context, key.toStdString().c_str(),
value.toStdString().c_str());
}
bool DeltachatContext::isConfigured() const {
return dc_is_configured(m_context);
}
void DeltachatContext::configure() {
dc_configure(m_context);
}
void DeltachatContext::eventThread() {
dc_event_emitter_t *emitter = dc_get_event_emitter(m_context);
while (dc_event_t *event = dc_get_next_event(emitter)) {
switch (dc_event_get_id(event)) {
case DC_EVENT_CONFIGURE_PROGRESS: {
int permille = dc_event_get_data1_int(event);
char *message = dc_event_get_data2_str(event);
emit configureProgress(permille, message ?: "");
dc_str_unref(message);
dc_event_unref(event);
break;
}
default:
dc_event_unref(event);
}
}
dc_event_emitter_unref(emitter);
}
} // namespace kappachat