mirror of
https://github.com/celisej567/abaddon.git
synced 2026-09-13 20:18:50 +03:00
add set status for funsies
This commit is contained in:
61
dialogs/setstatus.cpp
Normal file
61
dialogs/setstatus.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
#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);
|
||||
|
||||
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();
|
||||
}
|
||||
22
dialogs/setstatus.hpp
Normal file
22
dialogs/setstatus.hpp
Normal file
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
#include <gtkmm.h>
|
||||
#include "../discord/objects.hpp"
|
||||
|
||||
class SetStatusDialog : public Gtk::Dialog {
|
||||
public:
|
||||
SetStatusDialog(Gtk::Window &parent);
|
||||
ActivityType GetActivityType() const;
|
||||
std::string GetStatusType() const;
|
||||
std::string GetActivityName() const;
|
||||
|
||||
protected:
|
||||
Gtk::Box m_layout;
|
||||
Gtk::Box m_bottom;
|
||||
Gtk::Entry m_text;
|
||||
Gtk::ComboBoxText m_status_combo;
|
||||
Gtk::ComboBoxText m_type_combo;
|
||||
|
||||
Gtk::Button m_ok;
|
||||
Gtk::Button m_cancel;
|
||||
Gtk::ButtonBox m_bbox;
|
||||
};
|
||||
Reference in New Issue
Block a user