aboutsummaryrefslogtreecommitdiff
path: root/message.cpp
blob: 821588c862408e9010bdcf951238e93c16f249ac (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
#include "message.h"
#include <Qt>

Message::Message(const QString &msg, const QDateTime &dt,
    const Direction dir, QListWidget *const list,
    QWidget *const parent) :
    QWidget(parent)
{
    ui.setupUi(this);
    ui.edit->setVisible(false);
    ui.quote->setVisible(false);
    ui.retry->setVisible(false);

    switch (dir)
    {
        case In:
            ui.in_msg->setText(msg);
            ui.out_msg->setVisible(false);
            ui.time->setAlignment(Qt::AlignLeft);
            break;

        case Out:
            ui.out_msg->setText(msg);
            ui.in_msg->setVisible(false);
            ui.time->setAlignment(Qt::AlignRight);
            break;
    }

    ui.time->setText(dt.toString("ddd MMMM d yyyy hh:mm:ss"));
    QListWidgetItem::setSizeHint(QWidget::sizeHint());

    connect(list, &QListWidget::itemActivated, this,
    [this] (QListWidgetItem *const item)
    {
        const bool visible = item == this;

        ui.edit->setVisible(visible);
        ui.quote->setVisible(visible);
        ui.retry->setVisible(visible);
        QListWidgetItem::setSizeHint(QWidget::sizeHint());
    });

    list->addItem(this);
    list->setItemWidget(this, this);
}