35 lines
900 B
C++
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
|
|
};
|
|
}; |