summaryrefslogtreecommitdiff
path: root/src/desktop/view/SessionLock.hpp
blob: c6141fb25891cfee7f7841c4de27a6a5bf5c87ff (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
32
33
34
35
36
37
38
39
40
#pragma once

#include "../../defines.hpp"
#include <vector>
#include "WLSurface.hpp"
#include "View.hpp"

class CSessionLockSurface;

namespace Desktop::View {
    class CSessionLock : public IView {
      public:
        static SP<CSessionLock> create(SP<CSessionLockSurface> resource);

        static SP<CSessionLock> fromView(SP<IView>);

        virtual ~CSessionLock();

        virtual eViewType           type() const;
        virtual bool                visible() const;
        virtual std::optional<CBox> logicalBox() const;
        virtual bool                desktopComponent() const;
        virtual std::optional<CBox> surfaceLogicalBox() const;

        PHLMONITOR                  monitor() const;

        WP<CSessionLock>            m_self;

      private:
        CSessionLock();

        void init();

        struct {
            CHyprSignalListener destroy;
        } m_listeners;

        WP<CSessionLockSurface> m_surface;
    };
}