2
* This file is part of Maliit Plugins
4
* Copyright (C) 2012 One Laptop per Child Association
6
* Contact: maliit-discuss@lists.maliit.org
8
* Redistribution and use in source and binary forms, with or without modification,
9
* are permitted provided that the following conditions are met:
11
* Redistributions of source code must retain the above copyright notice, this list
12
* of conditions and the following disclaimer.
13
* Redistributions in binary form must reproduce the above copyright notice, this list
14
* of conditions and the following disclaimer in the documentation and/or other materials
15
* provided with the distribution.
16
* Neither the name of Nokia Corporation nor the names of its contributors may be
17
* used to endorse or promote products derived from this software without specific
18
* prior written permission.
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
21
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23
* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
#include "abstractfeedback.h"
34
namespace MaliitKeyboard
37
//! \class AbstractFeedback
38
//! \brief An abstract class to play various kind of feedback for
39
//! certain keyboard interactions, such as key presses or gestures.
41
//! Derived classes have to provide the actual feedback
42
//! functionality. They need to implement (but never call) the private
43
//! virtual playSomething methods. A setStyle() method has to be
44
//! implemented as well.
46
//! \fn AbstractFeedback::setStyle
47
//! \brief Sets the shared Style instance.
48
//! \param style A style to use.
50
//! Feedback implementations that depend on style attributes should probably
51
//! refresh all their feedback effects when this method is called.
52
//! AbstractFeedback does not store the Style instance in any way.
54
//! \fn AbstractFeedback::playPressFeedback
55
//! \brief Plays feedback when pressing a key.
57
//! \fn AbstractFeedback::playReleaseFeedback
58
//! \brief Plays feedback when releasing a key.
60
//! \fn AbstractFeedback::playLayoutChangeFeedback
61
//! \brief Plays feedback when changing a keyboard layout.
63
//! \fn AbstractFeedback::playKeyboardHideFeedback
64
//! \brief Plays feedback when hiding the keyboard.
66
//! \property AbstractFeedback::enabled
67
//! \brief Describes whether feedback should be triggered.
69
//! \fn void AbstractFeedback::enabledChanged(bool enabled)
70
//! \brief Emitted when enable setting has changed.
71
//! \param enabled Whether feedback provider is enabled.
72
//! \sa AbstractFeedback::enabled
74
class AbstractFeedbackPrivate
77
AbstractFeedbackPrivate();
82
AbstractFeedbackPrivate::AbstractFeedbackPrivate()
86
//! \brief Constructor.
87
//! \param parent The owner of this instance. Can be 0, in case QObject
88
//! ownership is not required.
89
AbstractFeedback::AbstractFeedback(QObject *parent)
91
, d_ptr(new AbstractFeedbackPrivate)
94
//! \brief Destructor.
95
AbstractFeedback::~AbstractFeedback()
98
//! \brief Set whether the feedback provider is enabled.
99
//! \param enabled Whether to enable feedback provider.
101
//! Emits enableChanged() signal if change occurs.
102
//! \sa AbstractFeedback::enabled
103
void AbstractFeedback::setEnabled(bool enabled)
105
Q_D(AbstractFeedback);
107
if (d->enabled != enabled) {
108
d->enabled = enabled;
109
Q_EMIT enabledChanged(enabled);
113
//! \brief Returns whether feedback is triggered.
114
//! \sa AbstractFeedback::enabled
115
bool AbstractFeedback::isEnabled() const
117
Q_D(const AbstractFeedback);
122
//! \brief Triggers feedback by calling playPressFeedback().
123
void AbstractFeedback::onKeyPressed()
125
Q_D(AbstractFeedback);
132
//! \brief Triggers feedback by calling playReleaseFeedback().
133
void AbstractFeedback::onKeyReleased()
135
Q_D(AbstractFeedback);
138
playReleaseFeedback();
142
//! \brief Triggers feedback by calling playLayoutChangeFeedback().
143
void AbstractFeedback::onLayoutChanged()
145
Q_D(AbstractFeedback);
148
playLayoutChangeFeedback();
152
//! \brief Triggers feedback by calling playKeyboardHideFeedback().
153
void AbstractFeedback::onKeyboardHidden()
155
Q_D(AbstractFeedback);
158
playKeyboardHideFeedback();
162
} // namespace MaliitKeyboard