~michael-sheldon/ubuntu-keyboard/fix-oxide-dismiss-test

« back to all changes in this revision

Viewing changes to src/view/abstractfeedback.cpp

  • Committer: Thomas Moenicke
  • Date: 2013-07-19 12:05:07 UTC
  • Revision ID: thomas.moenicke@canonical.com-20130719120507-lzw5oq50xm567x0j
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * This file is part of Maliit Plugins
 
3
 *
 
4
 * Copyright (C) 2012 One Laptop per Child Association
 
5
 *
 
6
 * Contact: maliit-discuss@lists.maliit.org
 
7
 *
 
8
 * Redistribution and use in source and binary forms, with or without modification,
 
9
 * are permitted provided that the following conditions are met:
 
10
 *
 
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.
 
19
 *
 
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.
 
29
 *
 
30
 */
 
31
 
 
32
#include "abstractfeedback.h"
 
33
 
 
34
namespace MaliitKeyboard
 
35
{
 
36
 
 
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.
 
40
//!
 
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.
 
45
 
 
46
//! \fn AbstractFeedback::setStyle
 
47
//! \brief Sets the shared Style instance.
 
48
//! \param style A style to use.
 
49
//!
 
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.
 
53
 
 
54
//! \fn AbstractFeedback::playPressFeedback
 
55
//! \brief Plays feedback when pressing a key.
 
56
 
 
57
//! \fn AbstractFeedback::playReleaseFeedback
 
58
//! \brief Plays feedback when releasing a key.
 
59
 
 
60
//! \fn AbstractFeedback::playLayoutChangeFeedback
 
61
//! \brief Plays feedback when changing a keyboard layout.
 
62
 
 
63
//! \fn AbstractFeedback::playKeyboardHideFeedback
 
64
//! \brief Plays feedback when hiding the keyboard.
 
65
 
 
66
//! \property AbstractFeedback::enabled
 
67
//! \brief Describes whether feedback should be triggered.
 
68
 
 
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
 
73
 
 
74
class AbstractFeedbackPrivate
 
75
{
 
76
public:
 
77
    AbstractFeedbackPrivate();
 
78
 
 
79
    bool enabled;
 
80
};
 
81
 
 
82
AbstractFeedbackPrivate::AbstractFeedbackPrivate()
 
83
    : enabled(false)
 
84
{}
 
85
 
 
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)
 
90
    : QObject(parent)
 
91
    , d_ptr(new AbstractFeedbackPrivate)
 
92
{}
 
93
 
 
94
//! \brief Destructor.
 
95
AbstractFeedback::~AbstractFeedback()
 
96
{}
 
97
 
 
98
//! \brief Set whether the feedback provider is enabled.
 
99
//! \param enabled Whether to enable feedback provider.
 
100
//!
 
101
//! Emits enableChanged() signal if change occurs.
 
102
//! \sa AbstractFeedback::enabled
 
103
void AbstractFeedback::setEnabled(bool enabled)
 
104
{
 
105
    Q_D(AbstractFeedback);
 
106
 
 
107
    if (d->enabled != enabled) {
 
108
        d->enabled = enabled;
 
109
        Q_EMIT enabledChanged(enabled);
 
110
    }
 
111
}
 
112
 
 
113
//! \brief Returns whether feedback is triggered.
 
114
//! \sa AbstractFeedback::enabled
 
115
bool AbstractFeedback::isEnabled() const
 
116
{
 
117
    Q_D(const AbstractFeedback);
 
118
 
 
119
    return d->enabled;
 
120
}
 
121
 
 
122
//! \brief Triggers feedback by calling playPressFeedback().
 
123
void AbstractFeedback::onKeyPressed()
 
124
{
 
125
    Q_D(AbstractFeedback);
 
126
 
 
127
    if (d->enabled) {
 
128
        playPressFeedback();
 
129
    }
 
130
}
 
131
 
 
132
//! \brief Triggers feedback by calling playReleaseFeedback().
 
133
void AbstractFeedback::onKeyReleased()
 
134
{
 
135
    Q_D(AbstractFeedback);
 
136
 
 
137
    if (d->enabled) {
 
138
        playReleaseFeedback();
 
139
    }
 
140
}
 
141
 
 
142
//! \brief Triggers feedback by calling playLayoutChangeFeedback().
 
143
void AbstractFeedback::onLayoutChanged()
 
144
{
 
145
    Q_D(AbstractFeedback);
 
146
 
 
147
    if (d->enabled) {
 
148
        playLayoutChangeFeedback();
 
149
    }
 
150
}
 
151
 
 
152
//! \brief Triggers feedback by calling playKeyboardHideFeedback().
 
153
void AbstractFeedback::onKeyboardHidden()
 
154
{
 
155
    Q_D(AbstractFeedback);
 
156
 
 
157
    if (d->enabled) {
 
158
        playKeyboardHideFeedback();
 
159
    }
 
160
}
 
161
 
 
162
} // namespace MaliitKeyboard