summaryrefslogtreecommitdiff
path: root/src/config/shared/workspace/WorkspaceRuleManager.hpp
blob: 6b07316805162fae628e2b05e47f2e0eca7ef26d (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
#pragma once

#include <vector>
#include <optional>

#include "WorkspaceRule.hpp"
#include "../../../desktop/DesktopTypes.hpp"
#include "../../../helpers/memory/Memory.hpp"

namespace Config {
    class CWorkspaceRuleManager {
      public:
        CWorkspaceRuleManager()  = default;
        ~CWorkspaceRuleManager() = default;

        void                               clear();
        void                               add(CWorkspaceRule&&);
        void                               replaceOrAdd(CWorkspaceRule&&);

        std::optional<CWorkspaceRule>      getWorkspaceRuleFor(PHLWORKSPACE workspace);
        std::string                        getDefaultWorkspaceFor(const std::string&);
        PHLMONITOR                         getBoundMonitorForWS(const std::string&);
        std::string                        getBoundMonitorStringForWS(const std::string&);
        const std::vector<CWorkspaceRule>& getAllWorkspaceRules();

      private:
        std::vector<CWorkspaceRule> m_rules;
    };

    UP<CWorkspaceRuleManager>& workspaceRuleMgr();
};