summaryrefslogtreecommitdiff
path: root/dialogs/setstatus.cpp
blob: 4c36325efb6a555c2978b46bbbbf272a4614635c (plain)
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
53
54
55
56
57
58
59
60
61
62
#include "setstatus.hpp"

SetStatusDialog::SetStatusDialog(Gtk::Window &parent)
    : Gtk::Dialog("Set Status", parent, true)
    , m_layout(Gtk::ORIENTATION_VERTICAL)
    , m_bbox(Gtk::ORIENTATION_HORIZONTAL)
    , m_bottom(Gtk::ORIENTATION_HORIZONTAL)
    , m_ok("OK")
    , m_cancel("Cancel") {
    set_default_size(300, 50);
    get_style_context()->add_class("app-window");

    m_text.set_placeholder_text("Status text");

    m_status_combo.append("online", "Online");
    m_status_combo.append("dnd", "Do Not Disturb");
    m_status_combo.append("idle", "Away");
    m_status_combo.append("invisible", "Invisible");
    m_status_combo.set_active_text("Online");

    m_type_combo.append("0", "Playing");
    m_type_combo.append("1", "Streaming");
    m_type_combo.append("2", "Listening to");
    m_type_combo.append("3", "Watching");
    m_type_combo.append("4", "Custom");
    m_type_combo.append("5", "Competing in");
    m_type_combo.set_active_text("Custom");

    m_ok.signal_clicked().connect([this]() {
        response(Gtk::RESPONSE_OK);
    });

    m_cancel.signal_clicked().connect([this]() {
        response(Gtk::RESPONSE_CANCEL);
    });

    m_bbox.pack_start(m_ok, Gtk::PACK_SHRINK);
    m_bbox.pack_start(m_cancel, Gtk::PACK_SHRINK);
    m_bbox.set_layout(Gtk::BUTTONBOX_END);

    m_bottom.add(m_status_combo);
    m_bottom.add(m_type_combo);
    m_bottom.add(m_bbox);
    m_layout.add(m_text);
    m_layout.add(m_bottom);
    get_content_area()->add(m_layout);

    show_all_children();
}

ActivityType SetStatusDialog::GetActivityType() const {
    const auto x = m_type_combo.get_active_id();
    return static_cast<ActivityType>(std::stoul(x));
}

std::string SetStatusDialog::GetStatusType() const {
    return m_status_combo.get_active_id();
}

std::string SetStatusDialog::GetActivityName() const {
    return m_text.get_text();
}