File: Mir.h

package info (click to toggle)
lomiri-api 0.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,248 kB
  • sloc: cpp: 6,415; python: 264; ansic: 96; makefile: 29; sh: 17
file content (137 lines) | stat: -rw-r--r-- 3,422 bytes parent folder | download | duplicates (4)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * Copyright (C) 2015-2016 Canonical, Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 3.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef LOMIRI_SHELL_APPLICATION_MIR_H
#define LOMIRI_SHELL_APPLICATION_MIR_H

#include <QObject>

/**
    @brief Acting mostly as a namespace to hold enums and such for use in QML
 */
class Mir : public QObject
{
    Q_OBJECT

    /**
        @brief Name of the mouse cursor to be used. Follows the X Cursor naming convention.

        Eg.: "left_ptr" is a left-sided pointer arrow
     */
    Q_PROPERTY(QString cursorName READ cursorName WRITE setCursorName NOTIFY cursorNameChanged)

    /**
      * Current (global) keymap, to be applied on the keyboard device
      *
      * E.g.: "cz+qwerty" -> "cz" layout, "qwerty" variant
      */
    Q_PROPERTY(QString currentKeymap READ currentKeymap WRITE setCurrentKeymap NOTIFY currentKeymapChanged)

public:
    /**
        @brief Surface type
     */
    enum Type {
        UnknownType,
        NormalType,
        UtilityType,
        DialogType,
        GlossType,
        FreeStyleType,
        MenuType,
        InputMethodType,
        SatelliteType,
        TipType,
    };
    Q_ENUM(Type)

    /**
        @brief Surface state
     */
    enum State {
        UnknownState,
        RestoredState,
        MinimizedState,
        MaximizedState,
        FullscreenState,
        MaximizedLeftState,
        MaximizedRightState,
        HorizMaximizedState,
        VertMaximizedState,
        MaximizedTopLeftState,
        MaximizedTopRightState,
        MaximizedBottomLeftState,
        MaximizedBottomRightState,
        HiddenState,
        AttachedState,
    };
    Q_ENUM(State)

    /**
        @brief Surface orientation angle
     */
    enum OrientationAngle {
        Angle0 = 0,
        Angle90 = 90,
        Angle180 = 180,
        Angle270 = 270
    };
    Q_ENUM(OrientationAngle)

    /**
        @brief Shell chrome
     */
    enum ShellChrome {
        NormalChrome,
        LowChrome,
    };
    Q_ENUM(ShellChrome)

    /**
        @brief Form Factor
     */
    enum FormFactor {
        FormFactorUnknown,
        FormFactorPhone,
        FormFactorTablet,
        FormFactorMonitor,
        FormFactorTV,
        FormFactorProjector,
    };
    Q_ENUM(FormFactor)

    /// @cond
    virtual void setCursorName(const QString &cursorName) = 0;
    virtual QString cursorName() const = 0;

    virtual QString currentKeymap() const = 0;
    virtual void setCurrentKeymap(const QString &currentKeymap) = 0;
    /// @endcond

Q_SIGNALS:
    /// @cond
    void cursorNameChanged(const QString &cursorName);
    void currentKeymapChanged(const QString &currentKeymap);
    /// @endcond
};

Q_DECLARE_METATYPE(Mir::Type)
Q_DECLARE_METATYPE(Mir::State)
Q_DECLARE_METATYPE(Mir::OrientationAngle)
Q_DECLARE_METATYPE(Mir::ShellChrome)
Q_DECLARE_METATYPE(Mir::FormFactor)

#endif // LOMIRI_SHELL_APPLICATION_MIR_H