We should not repeat key presses when we use zoom key as shutter.
DeviceKeys {
id: keys
active: Qt.application.active && pipelineManager.scaleAcquired
+ repeat: !settings.zoomAsShutter
}
}
DeviceKeys::DeviceKeys(QObject *parent) :
QObject(parent),
- m_keys(0) {
+ m_keys(0),
+ m_repeating(true) {
}
if (!active) {
m_keys->deleteLater();
m_keys = 0;
+ m_stats.clear();
}
else {
m_keys = new MeeGo::QmKeys(this);
}
void DeviceKeys::keyEvent(MeeGo::QmKeys::Key key, MeeGo::QmKeys::State state) {
+ if (!setStats(key, state)) {
+ return;
+ }
+
if (key == MeeGo::QmKeys::VolumeUp) {
if (state == MeeGo::QmKeys::KeyUp) {
emit volumeUpReleased();
}
}
+bool DeviceKeys::setStats(MeeGo::QmKeys::Key key, MeeGo::QmKeys::State state) {
+ if (m_repeating) {
+ return true;
+ }
+
+ if (!m_stats.contains(key)) {
+ m_stats.insert(key, state);
+ return true;
+ }
+
+ if (m_stats[key] != state) {
+ m_stats[key] = state;
+ return true;
+ }
+
+ return false;
+}
+
+bool DeviceKeys::isRepeating() {
+ return m_repeating;
+}
+
+void DeviceKeys::doRepeat(bool repeat) {
+ if (repeat != m_repeating) {
+ m_repeating = repeat;
+ emit repeatChanged();
+ }
+}
#include <QObject>
#include <qmkeys.h>
+#include <QMap>
class DeviceKeys : public QObject {
Q_OBJECT
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged);
+ Q_PROPERTY(bool repeat READ isRepeating WRITE doRepeat NOTIFY repeatChanged);
public:
DeviceKeys(QObject *parent = 0);
bool isActive() const;
void setActive(bool active);
+ bool isRepeating();
+ void doRepeat(bool repeat);
+
signals:
void activeChanged();
void volumeUpPressed();
void volumeUpReleased();
void volumeDownPressed();
void volumeDownReleased();
+ void repeatChanged();
private slots:
void keyEvent(MeeGo::QmKeys::Key key, MeeGo::QmKeys::State state);
private:
+ bool setStats(MeeGo::QmKeys::Key key, MeeGo::QmKeys::State state);
+
MeeGo::QmKeys *m_keys;
+ QMap<MeeGo::QmKeys::Key, MeeGo::QmKeys::State> m_stats;
+ bool m_repeating;
};
#endif /* DEVICE_KEYS_H */