summary refs log tree commit diff
path: root/src/timeline2/TimelineViewManager.cpp
blob: 711dfcad53478b85f715e9ff7bf0c6735ca3a513 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "TimelineViewManager.h"

#include <QMetaType>
#include <QQmlContext>

#include "Logging.h"

TimelineViewManager::TimelineViewManager(QWidget *parent)
{
        view      = new QQuickView();
        container = QWidget::createWindowContainer(view, parent);
        container->setMinimumSize(200, 200);
        view->setSource(QUrl("qrc:///qml/TimelineView.qml"));
}

void
TimelineViewManager::initialize(const mtx::responses::Rooms &rooms)
{
        for (auto it = rooms.join.cbegin(); it != rooms.join.cend(); ++it) {
                addRoom(QString::fromStdString(it->first));
        }

        sync(rooms);
}

void
TimelineViewManager::addRoom(const QString &room_id)
{
        if (!models.contains(room_id))
                models.insert(room_id, QSharedPointer<TimelineModel>(new TimelineModel()));
}

void
TimelineViewManager::setHistoryView(const QString &room_id)
{
        nhlog::ui()->info("Trying to activate room {}", room_id.toStdString());

        auto room = models.find(room_id);
        if (room != models.end()) {
                view->rootContext()->setContextProperty("timeline",
                                                        QVariant::fromValue(room.value().data()));
                nhlog::ui()->info("Activated room {}", room_id.toStdString());
        }
}

void
TimelineViewManager::initWithMessages(const std::map<QString, mtx::responses::Timeline> &msgs)
{
        for (const auto &e : msgs) {
                addRoom(e.first);
        }
}