~bregma/mir/docs-use-sphinx

« back to all changes in this revision

Viewing changes to src/common/input/mir_touchpad_configuration.cpp

  • Committer: Stephen M. Webb
  • Date: 2017-01-05 14:21:43 UTC
  • mfrom: (3665.1.241 development-branch)
  • Revision ID: stephen.webb@canonical.com-20170105142143-xbmxkuvxb6gejs0n
synch with trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright © 2016 Canonical Ltd.
 
3
 *
 
4
 * This program is free software: you can redistribute it and/or modify it
 
5
 * under the terms of the GNU Lesser General Public License version 3,
 
6
 * as published by the Free Software Foundation.
 
7
 *
 
8
 * This program is distributed in the hope that it will be useful,
 
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
 * GNU Lesser General Public License for more details.
 
12
 *
 
13
 * You should have received a copy of the GNU Lesser General Public License
 
14
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
15
 *
 
16
 * Authored by:
 
17
 *   Andreas Pokorny <andreas.pokorny@canonical.com>
 
18
 */
 
19
 
 
20
#include "mir/input/mir_touchpad_configuration.h"
 
21
#include <ostream>
 
22
 
 
23
struct MirTouchpadConfiguration::Implementation
 
24
{
 
25
    Implementation() = default;
 
26
    Implementation(MirTouchpadClickModes click_mode,
 
27
                   MirTouchpadScrollModes scroll_mode,
 
28
                   int button_down_scroll_button,
 
29
                   bool tap_to_click,
 
30
                   bool middle_mouse_button_emulation,
 
31
                   bool disable_with_mouse,
 
32
                   bool disable_while_typing)
 
33
        : click_mode{click_mode},
 
34
          scroll_mode{scroll_mode},
 
35
          button_down_scroll_button{button_down_scroll_button},
 
36
          tap_to_click{tap_to_click},
 
37
          middle_mouse_button_emulation{middle_mouse_button_emulation},
 
38
          disable_with_mouse{disable_with_mouse},
 
39
          disable_while_typing{disable_while_typing}
 
40
    {
 
41
    }
 
42
    MirTouchpadClickModes click_mode{mir_touchpad_click_mode_finger_count};
 
43
    MirTouchpadScrollModes scroll_mode{mir_touchpad_scroll_mode_two_finger_scroll};
 
44
    int button_down_scroll_button{0};
 
45
    bool tap_to_click{true};
 
46
    bool middle_mouse_button_emulation{true};
 
47
    bool disable_with_mouse{false};
 
48
    bool disable_while_typing{false};
 
49
};
 
50
 
 
51
MirTouchpadConfiguration::MirTouchpadConfiguration()
 
52
    : impl{std::make_unique<Implementation>()}
 
53
{
 
54
}
 
55
 
 
56
MirTouchpadConfiguration::MirTouchpadConfiguration(MirTouchpadConfiguration && other)
 
57
    : impl(std::move(other.impl))
 
58
{
 
59
}
 
60
 
 
61
MirTouchpadConfiguration::MirTouchpadConfiguration(MirTouchpadConfiguration const& other)
 
62
    : impl(std::make_unique<Implementation>(*other.impl))
 
63
{
 
64
}
 
65
 
 
66
MirTouchpadConfiguration& MirTouchpadConfiguration::operator=(MirTouchpadConfiguration const& other)
 
67
{
 
68
    *impl = *other.impl;
 
69
    return *this;
 
70
}
 
71
 
 
72
MirTouchpadConfiguration::~MirTouchpadConfiguration() = default;
 
73
 
 
74
MirTouchpadConfiguration::MirTouchpadConfiguration(MirTouchpadClickModes click_mode,
 
75
                                                 MirTouchpadScrollModes scroll_mode,
 
76
                                                 int button_down_scroll_button,
 
77
                                                 bool tap_to_click,
 
78
                                                 bool disable_while_typing,
 
79
                                                 bool disable_with_mouse,
 
80
                                                 bool middle_mouse_button_emulation)
 
81
    : impl{std::make_unique<Implementation>(
 
82
            click_mode,
 
83
            scroll_mode,
 
84
            button_down_scroll_button,
 
85
            tap_to_click,
 
86
            middle_mouse_button_emulation,
 
87
            disable_with_mouse,
 
88
            disable_while_typing
 
89
            )}
 
90
{
 
91
}
 
92
 
 
93
MirTouchpadClickModes MirTouchpadConfiguration::click_mode() const
 
94
{
 
95
    return impl->click_mode;
 
96
}
 
97
 
 
98
void MirTouchpadConfiguration::click_mode(MirTouchpadClickModes modes)
 
99
{
 
100
    impl->click_mode = modes;
 
101
}
 
102
 
 
103
MirTouchpadScrollModes MirTouchpadConfiguration::scroll_mode() const
 
104
{
 
105
    return impl->scroll_mode;
 
106
}
 
107
 
 
108
void MirTouchpadConfiguration::scroll_mode(MirTouchpadScrollModes modes)
 
109
{
 
110
    impl->scroll_mode = modes;
 
111
}
 
112
 
 
113
int MirTouchpadConfiguration::button_down_scroll_button() const
 
114
{
 
115
    return impl->button_down_scroll_button;
 
116
}
 
117
 
 
118
void MirTouchpadConfiguration::button_down_scroll_button(int button)
 
119
{
 
120
    impl->button_down_scroll_button = button;
 
121
}
 
122
 
 
123
bool MirTouchpadConfiguration::tap_to_click() const
 
124
{
 
125
    return impl->tap_to_click;
 
126
}
 
127
 
 
128
void MirTouchpadConfiguration::tap_to_click(bool enabled)
 
129
{
 
130
    impl->tap_to_click = enabled;
 
131
}
 
132
 
 
133
bool MirTouchpadConfiguration::middle_mouse_button_emulation() const
 
134
{
 
135
    return impl->middle_mouse_button_emulation;
 
136
}
 
137
 
 
138
void MirTouchpadConfiguration::middle_mouse_button_emulation(bool enabled)
 
139
{
 
140
    impl->middle_mouse_button_emulation = enabled;
 
141
}
 
142
 
 
143
bool MirTouchpadConfiguration::disable_with_mouse() const
 
144
{
 
145
    return impl->disable_with_mouse;
 
146
}
 
147
 
 
148
void MirTouchpadConfiguration::disable_with_mouse(bool enabled)
 
149
{
 
150
    impl->disable_with_mouse = enabled;
 
151
}
 
152
 
 
153
bool MirTouchpadConfiguration::disable_while_typing() const
 
154
{
 
155
    return impl->disable_while_typing;
 
156
}
 
157
 
 
158
void MirTouchpadConfiguration::disable_while_typing(bool enabled)
 
159
{
 
160
    impl->disable_while_typing = enabled;
 
161
}
 
162
 
 
163
bool MirTouchpadConfiguration::operator==(MirTouchpadConfiguration const& rhs) const
 
164
{
 
165
    return
 
166
        impl->click_mode == rhs.impl->click_mode &&
 
167
        impl->scroll_mode == rhs.impl->scroll_mode &&
 
168
        impl->button_down_scroll_button == rhs.impl->button_down_scroll_button &&
 
169
        impl->tap_to_click == rhs.impl->tap_to_click &&
 
170
        impl->middle_mouse_button_emulation == rhs.impl->middle_mouse_button_emulation &&
 
171
        impl->disable_with_mouse == rhs.impl->disable_with_mouse &&
 
172
        impl->disable_while_typing == rhs.impl->disable_while_typing;
 
173
}
 
174
 
 
175
bool MirTouchpadConfiguration::operator!=(MirTouchpadConfiguration const& rhs) const
 
176
{
 
177
    return !(*this == rhs);
 
178
}
 
179
 
 
180
std::ostream& operator<<(std::ostream& out, MirTouchpadConfiguration const& conf)
 
181
{
 
182
    return out << "click_mode:" << conf.click_mode()
 
183
        << " scroll_mode:" << conf.scroll_mode()
 
184
        << " btn_down:" << conf.button_down_scroll_button()
 
185
        << " tap_to_click:" << conf.tap_to_click()
 
186
        << " middle_btn_emulation:" << conf.middle_mouse_button_emulation()
 
187
        << " disable_with_mouse:" << conf.disable_with_mouse()
 
188
        << " disable_while_typing:" << conf.disable_while_typing();
 
189
}