~neon/project-neon/kscreen

« back to all changes in this revision

Viewing changes to plasmoid/kscreenapplet.h

  • Committer: Kai Uwe Broulik
  • Date: 2018-08-25 16:19:34 UTC
  • Revision ID: git-v1:b4baa322c3610766a5a7f38e9a501a18a2e7b051
Add applet with screen layouts and presentation mode

One of LiMux client's requirements is for display configuration to be easily accessible by mouse.
The OSD cannot be accessed by mouse, so this applet offers commonly used screen layouts in an
easily accessible place.

To keep the screen on during a presentation (when the application does not do that or the user is
actually demonstrating something on the machine itself) one needs to uncheck the non-userfriendly
labeled "Enable powermanagement" check box in the battery monitor. Since this is also affects "screen
setup", it is placed in this plasmoid as well.

The widget can be placed as an always-visible plasmoid in the panel or in System Tray where it would
only show if presentation mode is enabled or more then one screen is connected.

Differential Revision: https://phabricator.kde.org/D14855

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2018 Kai Uwe Broulik <kde@broulik.de>
 
3
 *                    Work sponsored by the LiMux project of
 
4
 *                    the city of Munich.
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or
 
7
 * modify it under the terms of the GNU General Public License as
 
8
 * published by the Free Software Foundation; either version 2 of
 
9
 * the License or (at your option) version 3 or any later version
 
10
 * accepted by the membership of KDE e.V. (or its successor approved
 
11
 * by the membership of KDE e.V.), which shall act as a proxy
 
12
 * defined in Section 14 of version 3 of the license.
 
13
 *
 
14
 * This program is distributed in the hope that it will be useful,
 
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
 * GNU General Public License for more details.
 
18
 *
 
19
 * You should have received a copy of the GNU General Public License
 
20
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
21
 *
 
22
 */
 
23
 
 
24
#pragma once
 
25
 
 
26
#include <Plasma/Applet>
 
27
 
 
28
#include <KScreen/Types>
 
29
 
 
30
class KScreenApplet : public Plasma::Applet
 
31
{
 
32
    Q_OBJECT
 
33
 
 
34
    /**
 
35
     * The number of currently connected (not neccessarily enabled) outputs
 
36
     */
 
37
    Q_PROPERTY(int connectedOutputCount READ connectedOutputCount NOTIFY connectedOutputCountChanged)
 
38
 
 
39
public:
 
40
    explicit KScreenApplet(QObject *parent, const QVariantList &data);
 
41
    ~KScreenApplet() override;
 
42
 
 
43
    enum Action {
 
44
        SwitchToExternal,
 
45
        SwitchToInternal,
 
46
        Clone,
 
47
        ExtendLeft,
 
48
        ExtendRight
 
49
    };
 
50
    Q_ENUM(Action)
 
51
 
 
52
    void init() override;
 
53
 
 
54
    int connectedOutputCount() const;
 
55
 
 
56
    Q_INVOKABLE void applyLayoutPreset(Action action);
 
57
 
 
58
signals:
 
59
    void connectedOutputCountChanged();
 
60
 
 
61
private:
 
62
    void checkOutputs();
 
63
 
 
64
    KScreen::ConfigPtr m_screenConfiguration;
 
65
    int m_connectedOutputCount = 0;
 
66
 
 
67
};