diff options
author | Dylam De La Torre <DyXel04@gmail.com> | 2021-11-23 05:21:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-23 04:21:56 +0000 |
commit | a51a54bc5979a2491f152abc47ad54e6b63f27c8 (patch) | |
tree | ce67092b2f6df366033a65a6111e4650866766b2 /src/dialogs/setstatus.cpp | |
parent | d88079000a79e6bcbe51c5a2868d57b303b5fcb6 (diff) | |
download | abaddon-portaudio-a51a54bc5979a2491f152abc47ad54e6b63f27c8.tar.gz abaddon-portaudio-a51a54bc5979a2491f152abc47ad54e6b63f27c8.zip |
Restructure source and resource files (#46)
importantly, res is now res/res and css is now res/css
Diffstat (limited to 'src/dialogs/setstatus.cpp')
-rw-r--r-- | src/dialogs/setstatus.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/dialogs/setstatus.cpp b/src/dialogs/setstatus.cpp new file mode 100644 index 0000000..7a3a038 --- /dev/null +++ b/src/dialogs/setstatus.cpp @@ -0,0 +1,72 @@ +#include "setstatus.hpp" + +SetStatusDialog::SetStatusDialog(Gtk::Window &parent) + : Gtk::Dialog("Set Status", parent, true) + , m_layout(Gtk::ORIENTATION_VERTICAL) + , m_bottom(Gtk::ORIENTATION_HORIZONTAL) + , m_ok("OK") + , m_cancel("Cancel") + , m_bbox(Gtk::ORIENTATION_HORIZONTAL) { + set_default_size(300, 50); + get_style_context()->add_class("app-window"); + get_style_context()->add_class("app-popup"); + + 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)); +} + +PresenceStatus SetStatusDialog::GetStatusType() const { + const auto &x = m_status_combo.get_active_id(); + if (x == "online") + return PresenceStatus::Online; + else if (x == "idle") + return PresenceStatus::Idle; + else if (x == "dnd") + return PresenceStatus::DND; + else if (x == "invisible") + return PresenceStatus::Offline; + return PresenceStatus::Online; +} + +std::string SetStatusDialog::GetActivityName() const { + return m_text.get_text(); +} |