Files
bar/include/components/workspaceIndicator.hpp

35 lines
900 B
C++

#pragma once
#include <string>
#include "gtkmm/box.h"
#include "gtkmm/button.h"
#include "gtkmm/overlay.h"
class WorkspaceIndicator : public Gtk::Box {
public:
enum InidicatorState {
EMPTY,
ALIVE,
FOCUSED,
PRESENTING,
URGENT,
};
// meh, Maybe try WorkspaceState struct later
WorkspaceIndicator(int id, std::string label, sigc::slot<void(int)> onClick);
void setIndicatorState(InidicatorState state);
private:
void clearCssClass();
InidicatorState currentState = EMPTY;
std::shared_ptr<Gtk::Overlay> overlay;
std::map<InidicatorState, std::string> stateToCssClass = {
{FOCUSED, "workspace-pill-focused"},
{URGENT, "workspace-pill-urgent"},
{ALIVE, "workspace-pill-alive"},
{PRESENTING, "workspace-pill-presenting"},
{EMPTY, "workspace-pill-empty"}, // Default class
};
};