From abdf3b1eaba8151f1b8e862750c38cb7a5411d2a Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Mon, 13 Aug 2012 21:31:52 +0200 Subject: make watchsimulator work again --- metawatch/metawatch.cpp | 40 +-- metawatch/metawatch.h | 7 +- metawatch/metawatch.pro | 14 +- metawatch/metawatchdigitalsimulator.cpp | 119 ++++++++ metawatch/metawatchdigitalsimulator.h | 40 +++ metawatch/metawatchdigitalsimulatorform.cpp | 82 +++++ metawatch/metawatchdigitalsimulatorform.h | 46 +++ metawatch/metawatchdigitalsimulatorform.ui | 330 +++++++++++++++++++++ metawatch/metawatchplugin.cpp | 8 +- metawatch/metawatchsimulator.cpp | 83 ------ metawatch/metawatchsimulator.h | 33 --- metawatch/metawatchsimulatorform.cpp | 82 ----- metawatch/metawatchsimulatorform.h | 46 --- metawatch/metawatchsimulatorform.ui | 294 ------------------ .../com/javispedro/sowatch/metawatch/MWLabel.qml | 2 +- .../javispedro/sowatch/metawatch/MWListView.qml | 33 +++ .../javispedro/sowatch/metawatch/MWSmallLabel.qml | 6 - .../com/javispedro/sowatch/metawatch/MWTitle.qml | 2 + .../qml/com/javispedro/sowatch/metawatch/qmldir | 1 - 19 files changed, 693 insertions(+), 575 deletions(-) create mode 100644 metawatch/metawatchdigitalsimulator.cpp create mode 100644 metawatch/metawatchdigitalsimulator.h create mode 100644 metawatch/metawatchdigitalsimulatorform.cpp create mode 100644 metawatch/metawatchdigitalsimulatorform.h create mode 100644 metawatch/metawatchdigitalsimulatorform.ui delete mode 100644 metawatch/metawatchsimulator.cpp delete mode 100644 metawatch/metawatchsimulator.h delete mode 100644 metawatch/metawatchsimulatorform.cpp delete mode 100644 metawatch/metawatchsimulatorform.h delete mode 100644 metawatch/metawatchsimulatorform.ui delete mode 100644 metawatch/qml/com/javispedro/sowatch/metawatch/MWSmallLabel.qml (limited to 'metawatch') diff --git a/metawatch/metawatch.cpp b/metawatch/metawatch.cpp index 6f8edca..6dfdd2f 100644 --- a/metawatch/metawatch.cpp +++ b/metawatch/metawatch.cpp @@ -109,13 +109,14 @@ MetaWatch::MetaWatch(ConfigKey* settings, QObject* parent) : _connectTimer->setSingleShot(true); _connectAlignedTimer->setSingleShot(true); - connect(_connectTimer, SIGNAL(timeout()), SLOT(retryConnect())); - connect(_connectAlignedTimer, SIGNAL(timeout()), SLOT(retryConnect())); + connect(_connectTimer, SIGNAL(timeout()), SLOT(timedReconnect())); + connect(_connectAlignedTimer, SIGNAL(timeout()), SLOT(timedReconnect())); _sendTimer->setInterval(DelayBetweenMessages); connect(_sendTimer, SIGNAL(timeout()), SLOT(timedSend())); - retryConnect(); + // Do an initial connection attempt + _connectTimer->start(100); } MetaWatch::~MetaWatch() @@ -249,7 +250,7 @@ void MetaWatch::displayNotification(Notification *notification) _idleTimer->stop(); } else { _ringTimer->stop(); - setVibrateMode(true, RingLength, RingLength, 2); + // XXX setVibrateMode(true, RingLength, RingLength, 2); _idleTimer->start(); } } @@ -322,6 +323,22 @@ quint16 MetaWatch::calcCrc(const Message& msg) return calcCrc(data, msgSize + 4); } +void MetaWatch::retryConnect() +{ + delete _socket; + _socket = new QBluetoothSocket(QBluetoothSocket::RfcommSocket); + + connect(_socket, SIGNAL(connected()), SLOT(socketConnected())); + connect(_socket, SIGNAL(disconnected()), SLOT(socketDisconnected())); + connect(_socket, SIGNAL(readyRead()), SLOT(socketData())); + connect(_socket, SIGNAL(error(QBluetoothSocket::SocketError)), + SLOT(socketError(QBluetoothSocket::SocketError))); + connect(_socket, SIGNAL(stateChanged(QBluetoothSocket::SocketState)), + SLOT(socketState(QBluetoothSocket::SocketState))); + + _socket->connectToService(_address, 1, QIODevice::ReadWrite | QIODevice::Unbuffered); +} + void MetaWatch::send(const Message &msg) { _toSend.enqueue(msg); @@ -754,20 +771,9 @@ void MetaWatch::socketState(QBluetoothSocket::SocketState error) qDebug() << "socket is in" << error; } -void MetaWatch::retryConnect() +void MetaWatch::timedReconnect() { - delete _socket; - _socket = new QBluetoothSocket(QBluetoothSocket::RfcommSocket); - - connect(_socket, SIGNAL(connected()), SLOT(socketConnected())); - connect(_socket, SIGNAL(disconnected()), SLOT(socketDisconnected())); - connect(_socket, SIGNAL(readyRead()), SLOT(socketData())); - connect(_socket, SIGNAL(error(QBluetoothSocket::SocketError)), - SLOT(socketError(QBluetoothSocket::SocketError))); - connect(_socket, SIGNAL(stateChanged(QBluetoothSocket::SocketState)), - SLOT(socketState(QBluetoothSocket::SocketState))); - - _socket->connectToService(_address, 1, QIODevice::ReadWrite | QIODevice::Unbuffered); + retryConnect(); } void MetaWatch::timedSend() diff --git a/metawatch/metawatch.h b/metawatch/metawatch.h index 760752b..b25b14d 100644 --- a/metawatch/metawatch.h +++ b/metawatch/metawatch.h @@ -198,8 +198,11 @@ protected: static quint16 calcCrc(const QByteArray& data, int size); static quint16 calcCrc(const Message& msg); + /** Attempt a connection to the watch. */ + virtual void retryConnect(); + /** Sends a message to the watch. Does not block. */ - void send(const Message& msg); + virtual void send(const Message& msg); /** Sends a message to the watch if a message of the same type is not * already queued. Does not block. */ @@ -237,7 +240,7 @@ private slots: void socketData(); void socketError(QBluetoothSocket::SocketError error); void socketState(QBluetoothSocket::SocketState error); - void retryConnect(); + void timedReconnect(); void timedSend(); void timedRing(); diff --git a/metawatch/metawatch.pro b/metawatch/metawatch.pro index 721380d..536ccee 100644 --- a/metawatch/metawatch.pro +++ b/metawatch/metawatch.pro @@ -12,25 +12,25 @@ maemo5 { MOBILITY += connectivity systeminfo SOURCES += metawatchplugin.cpp \ - metawatchsimulatorform.cpp \ - metawatchsimulator.cpp \ metawatchpaintengine.cpp \ metawatch.cpp \ metawatchdigital.cpp \ metawatchanalog.cpp \ - metawatchscanner.cpp + metawatchscanner.cpp \ + metawatchdigitalsimulator.cpp \ + metawatchdigitalsimulatorform.cpp HEADERS += metawatchplugin.h \ - metawatchsimulatorform.h \ - metawatchsimulator.h \ metawatchpaintengine.h \ metawatch.h \ metawatchdigital.h \ metawatchanalog.h \ - metawatchscanner.h + metawatchscanner.h \ + metawatchdigitalsimulator.h \ + metawatchdigitalsimulatorform.h FORMS += \ - metawatchsimulatorform.ui + metawatchdigitalsimulatorform.ui res_files.files += res/graphics res/fonts qml_files.files += qml/com qml/metawatch-digital-config.qml diff --git a/metawatch/metawatchdigitalsimulator.cpp b/metawatch/metawatchdigitalsimulator.cpp new file mode 100644 index 0000000..f12e987 --- /dev/null +++ b/metawatch/metawatchdigitalsimulator.cpp @@ -0,0 +1,119 @@ +#include +#include + +#include "metawatchdigitalsimulator.h" + +#define SIMULATE_DAMAGES 1 +#define SIMULATE_FRAMERATE 1 + +using namespace sowatch; + +MetaWatchDigitalSimulator::MetaWatchDigitalSimulator(ConfigKey *config, QObject *parent) : + MetaWatchDigital(config, parent), + _form(new MetaWatchDigitalSimulatorForm), + _nextFrame(QTime::currentTime()) +{ + _pixmap[IdleMode] = QPixmap(screenWidth, screenHeight); + _pixmap[ApplicationMode] = QPixmap(screenWidth, screenHeight); + _pixmap[NotificationMode] = QPixmap(screenWidth, screenHeight); + _form->showNormal(); + connect(_form, SIGNAL(buttonPressed(int)), SIGNAL(buttonPressed(int))); + connect(_form, SIGNAL(buttonReleased(int)), SIGNAL(buttonReleased(int))); +} + +MetaWatchDigitalSimulator::~MetaWatchDigitalSimulator() +{ + delete _form; +} + +bool MetaWatchDigitalSimulator::busy() const +{ +#if SIMULATE_FRAMERATE + return _nextFrame > QTime::currentTime(); +#else + return false; +#endif +} + +void MetaWatchDigitalSimulator::displayIdleScreen() +{ + MetaWatchDigital::displayIdleScreen(); + _form->refreshScreen(_pixmap[_currentMode]); +} + +void MetaWatchDigitalSimulator::displayNotification(Notification *notification) +{ + MetaWatchDigital::displayNotification(notification); + _form->refreshScreen(_pixmap[_currentMode]); +} + +void MetaWatchDigitalSimulator::displayApplication() +{ + MetaWatchDigital::displayApplication(); + // No need to refresh. +} + +void MetaWatchDigitalSimulator::clear(Mode mode, bool black) +{ + _pixmap[mode].fill(black ? Qt::black : Qt::white); + if (mode == _currentMode) { + _form->refreshScreen(_pixmap[mode]); + } +} + +void MetaWatchDigitalSimulator::update(Mode mode, const QList &rects) +{ +#if SIMULATE_DAMAGES + const QRect imageRect = _image[mode].rect(); + QPainter p; + QVector rows(96, false); + + p.begin(&_pixmap[mode]); + foreach (const QRect& rect, rects) { + QRect r = rect.intersect(imageRect); + for (int i = r.top(); i <= r.bottom(); i++) { + rows[i] = true; + } + + p.drawImage(r, _image[mode], r); + } + p.end(); + + int totalRows = rows.count(true); + + qDebug() << "updated" << totalRows << "lines"; + _nextFrame = QTime::currentTime().addMSecs(((totalRows / 2) + 1) * DelayBetweenMessages); +#else + Q_UNUSED(rects); + _pixmap[mode] = QPixmap::fromImage(_image[mode]); + _nextFrame = QTime::currentTime().addMSecs(DelayBetweenMessages); +#endif + if (mode == _currentMode) { + _form->refreshScreen(_pixmap[mode]); + } +} + +void MetaWatchDigitalSimulator::vibrate(bool on) +{ + qDebug() << "vibrate" << on; +} + +void MetaWatchDigitalSimulator::retryConnect() +{ + if (!_connected && _form) { + qDebug() << "connected"; + + _connected = true; + _currentMode = IdleMode; + _paintMode = IdleMode; + + handleWatchConnected(); + + emit connected(); + } +} + +void MetaWatchDigitalSimulator::send(const Message &msg) +{ + // Do not send messages +} diff --git a/metawatch/metawatchdigitalsimulator.h b/metawatch/metawatchdigitalsimulator.h new file mode 100644 index 0000000..6f5c130 --- /dev/null +++ b/metawatch/metawatchdigitalsimulator.h @@ -0,0 +1,40 @@ +#ifndef METAWATCHSIMULATOR_H +#define METAWATCHSIMULATOR_H + +#include +#include +#include "metawatchdigital.h" +#include "metawatchdigitalsimulatorform.h" + +namespace sowatch { + +class MetaWatchDigitalSimulator : public MetaWatchDigital +{ + Q_OBJECT +public: + explicit MetaWatchDigitalSimulator(ConfigKey *settings, QObject *parent = 0); + ~MetaWatchDigitalSimulator(); + + bool busy() const; + + void displayIdleScreen(); + void displayNotification(Notification *notification); + void displayApplication(); + + void clear(Mode mode, bool black); + void update(Mode mode, const QList &rects); + + void vibrate(bool on); + + void retryConnect(); + void send(const Message& msg); + +private: + MetaWatchDigitalSimulatorForm* _form; + QPixmap _pixmap[3]; + QTime _nextFrame; +}; + +} + +#endif // METAWATCHSIMULATOR_H diff --git a/metawatch/metawatchdigitalsimulatorform.cpp b/metawatch/metawatchdigitalsimulatorform.cpp new file mode 100644 index 0000000..fc3c890 --- /dev/null +++ b/metawatch/metawatchdigitalsimulatorform.cpp @@ -0,0 +1,82 @@ +#include "metawatchdigitalsimulatorform.h" +#include "ui_metawatchdigitalsimulatorform.h" + +using namespace sowatch; + +MetaWatchDigitalSimulatorForm::MetaWatchDigitalSimulatorForm(QWidget* parent) : + QWidget(parent), + ui(new Ui::MetaWatchDigitalSimulatorForm) +{ + ui->setupUi(this); +} + +MetaWatchDigitalSimulatorForm::~MetaWatchDigitalSimulatorForm() +{ + delete ui; +} + +void MetaWatchDigitalSimulatorForm::refreshScreen(const QPixmap& pixmap) +{ + ui->lblDisplay->setPixmap(pixmap); + ui->lblDisplay->update(); +} + +void MetaWatchDigitalSimulatorForm::btnAPressed() +{ + emit buttonPressed(0); +} + +void MetaWatchDigitalSimulatorForm::btnAReleased() +{ + emit buttonReleased(0); +} + +void MetaWatchDigitalSimulatorForm::btnBPressed() +{ + emit buttonPressed(1); +} + +void MetaWatchDigitalSimulatorForm::btnBReleased() +{ + emit buttonReleased(1); +} + +void MetaWatchDigitalSimulatorForm::btnCPressed() +{ + emit buttonPressed(2); +} + +void MetaWatchDigitalSimulatorForm::btnCReleased() +{ + emit buttonReleased(2); +} + +void MetaWatchDigitalSimulatorForm::btnDPressed() +{ + emit buttonPressed(3); +} + +void MetaWatchDigitalSimulatorForm::btnDReleased() +{ + emit buttonReleased(3); +} + +void MetaWatchDigitalSimulatorForm::btnEPressed() +{ + emit buttonPressed(4); +} + +void MetaWatchDigitalSimulatorForm::btnEReleased() +{ + emit buttonReleased(4); +} + +void MetaWatchDigitalSimulatorForm::btnFPressed() +{ + emit buttonPressed(5); +} + +void MetaWatchDigitalSimulatorForm::btnFReleased() +{ + emit buttonReleased(5); +} diff --git a/metawatch/metawatchdigitalsimulatorform.h b/metawatch/metawatchdigitalsimulatorform.h new file mode 100644 index 0000000..054a1a8 --- /dev/null +++ b/metawatch/metawatchdigitalsimulatorform.h @@ -0,0 +1,46 @@ +#ifndef METAWATCHSIMULATORFORM_H +#define METAWATCHSIMULATORFORM_H + +#include + +namespace Ui { + class MetaWatchDigitalSimulatorForm; +} + +namespace sowatch { + +class MetaWatchDigitalSimulatorForm : public QWidget +{ + Q_OBJECT + +public: + explicit MetaWatchDigitalSimulatorForm(QWidget *parent = 0); + ~MetaWatchDigitalSimulatorForm(); + + void refreshScreen(const QPixmap& screen); + +signals: + void buttonPressed(int button); + void buttonReleased(int button); + +protected slots: + void btnAPressed(); + void btnAReleased(); + void btnBPressed(); + void btnBReleased(); + void btnCPressed(); + void btnCReleased(); + void btnDPressed(); + void btnDReleased(); + void btnEPressed(); + void btnEReleased(); + void btnFPressed(); + void btnFReleased(); + +private: + Ui::MetaWatchDigitalSimulatorForm *ui; +}; + +} + +#endif // METAWATCHSIMULATORFORM_H diff --git a/metawatch/metawatchdigitalsimulatorform.ui b/metawatch/metawatchdigitalsimulatorform.ui new file mode 100644 index 0000000..239c342 --- /dev/null +++ b/metawatch/metawatchdigitalsimulatorform.ui @@ -0,0 +1,330 @@ + + + MetaWatchDigitalSimulatorForm + + + + 0 + 0 + 262 + 113 + + + + MetaWatch Digital Simulator + + + + + + + + + 50 + 16777215 + + + + F + + + + + + + + 50 + 16777215 + + + + E + + + + + + + + 50 + 16777215 + + + + D + + + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + + + + + + + + 50 + 16777215 + + + + A + + + + + + + + 50 + 16777215 + + + + B + + + + + + + + 50 + 16777215 + + + + C + + + + + + + + + + + btnA + pressed() + MetaWatchDigitalSimulatorForm + btnAPressed() + + + 44 + 20 + + + 105 + 4 + + + + + btnA + released() + MetaWatchDigitalSimulatorForm + btnAReleased() + + + 71 + 21 + + + 4 + 10 + + + + + btnB + pressed() + MetaWatchDigitalSimulatorForm + btnBPressed() + + + 68 + 57 + + + 98 + 75 + + + + + btnB + released() + MetaWatchDigitalSimulatorForm + btnBReleased() + + + 86 + 56 + + + 98 + 58 + + + + + btnC + pressed() + MetaWatchDigitalSimulatorForm + btnCPressed() + + + 37 + 90 + + + 73 + 108 + + + + + btnC + released() + MetaWatchDigitalSimulatorForm + btnCReleased() + + + 21 + 89 + + + 19 + 105 + + + + + btnD + pressed() + MetaWatchDigitalSimulatorForm + btnDPressed() + + + 203 + 18 + + + 205 + 5 + + + + + btnD + released() + MetaWatchDigitalSimulatorForm + btnDReleased() + + + 244 + 22 + + + 258 + 21 + + + + + btnE + pressed() + MetaWatchDigitalSimulatorForm + btnEPressed() + + + 237 + 50 + + + 256 + 51 + + + + + btnE + released() + MetaWatchDigitalSimulatorForm + btnEReleased() + + + 174 + 46 + + + 164 + 40 + + + + + btnF + pressed() + MetaWatchDigitalSimulatorForm + btnFPressed() + + + 236 + 89 + + + 258 + 87 + + + + + btnF + released() + MetaWatchDigitalSimulatorForm + btnFReleased() + + + 185 + 90 + + + 187 + 108 + + + + + + btnAPressed() + btnAReleased() + btnBPressed() + btnBReleased() + btnCPressed() + btnCReleased() + btnDPressed() + btnDReleased() + btnEPressed() + btnEReleased() + btnFPressed() + btnFReleased() + + diff --git a/metawatch/metawatchplugin.cpp b/metawatch/metawatchplugin.cpp index f73c127..0969ddf 100644 --- a/metawatch/metawatchplugin.cpp +++ b/metawatch/metawatchplugin.cpp @@ -1,8 +1,8 @@ #include #include -#include "metawatchdigital.h" #include "metawatchanalog.h" -#include "metawatchsimulator.h" +#include "metawatchdigital.h" +#include "metawatchdigitalsimulator.h" #include "metawatchscanner.h" #include "metawatchplugin.h" @@ -30,7 +30,7 @@ MetaWatchPlugin::~MetaWatchPlugin() QStringList MetaWatchPlugin::drivers() { QStringList d; - d << "metawatch-digital" << "metawatch-analog"; + d << "metawatch-analog" << "metawatch-digital" << "metawatch-digital-simulator"; return d; } @@ -54,6 +54,8 @@ Watch* MetaWatchPlugin::getWatch(const QString& driver, ConfigKey* settings, QOb return new MetaWatchDigital(settings, parent); } else if (driver == "metawatch-analog") { return new MetaWatchAnalog(settings, parent); + } else if (driver == "metawatch-digital-simulator") { + return new MetaWatchDigitalSimulator(settings, parent); } else { return 0; } diff --git a/metawatch/metawatchsimulator.cpp b/metawatch/metawatchsimulator.cpp deleted file mode 100644 index 57a4f0c..0000000 --- a/metawatch/metawatchsimulator.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include -#include - -#include "metawatchsimulator.h" - -#define SIMULATE_DAMAGES 1 -#define SIMULATE_FRAMERATE 1 - -using namespace sowatch; - -MetaWatchSimulator::MetaWatchSimulator(QObject *parent) : - WatchSimulator(parent), - _image(96, 96, QImage::Format_Mono), - _screen(96, 96), - _form(new MetaWatchSimulatorForm), - _nextFrame(QTime::currentTime()) -{ - _form->showNormal(); - connect(_form, SIGNAL(destroyed()), SIGNAL(disconnected())); - connect(_form, SIGNAL(buttonPressed(int)), SIGNAL(buttonPressed(int))); - connect(_form, SIGNAL(buttonReleased(int)), SIGNAL(buttonReleased(int))); -} - -MetaWatchSimulator::~MetaWatchSimulator() -{ - delete _form; -} - -QString MetaWatchSimulator::model() const -{ - return "metawatch-digital"; -} - -bool MetaWatchSimulator::isConnected() const -{ - return true; -} - -bool MetaWatchSimulator::busy() const -{ -#if SIMULATE_FRAMERATE - return _nextFrame > QTime::currentTime(); -#else - return false; -#endif -} - -void MetaWatchSimulator::update(const QList &rects) -{ -#if SIMULATE_DAMAGES - const QRect imageRect = _image.rect(); - QPainter p; - QVector rows(96, false); - unsigned total = 0, totalRows; - - p.begin(&_screen); - foreach (const QRect& rect, rects) { - QRect r = rect.intersect(imageRect); - for (int i = r.top(); i <= r.bottom(); i++) { - rows[i] = true; - } - total += r.width() * r.height(); - - p.drawImage(r, _image, r); - } - p.end(); - - totalRows = rows.count(true); - - _form->refreshScreen(_screen); - - qDebug() << "updated " << total << " pixels " << totalRows << " lines"; - _nextFrame = QTime::currentTime().addMSecs(((totalRows / 2) + 1) * 30); -#else - _form->refreshScreen(QPixmap::fromImage(_image)); - _nextFrame = QTime::currentTime().addMSecs(30); -#endif -} - -void MetaWatchSimulator::vibrate(bool on) -{ - qDebug() << "vibrate" << on; -} diff --git a/metawatch/metawatchsimulator.h b/metawatch/metawatchsimulator.h deleted file mode 100644 index 38391d0..0000000 --- a/metawatch/metawatchsimulator.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef METAWATCHSIMULATOR_H -#define METAWATCHSIMULATOR_H - -#include -#include "watchsimulator.h" -#include "metawatchsimulatorform.h" - -namespace sowatch { - -class MetaWatchSimulator : public WatchSimulator -{ - Q_OBJECT -public: - explicit MetaWatchSimulator(QObject *parent = 0); - ~MetaWatchSimulator(); - - QString model() const; - bool isConnected() const; - bool busy() const; - - void update(const QList &rects); - void vibrate(bool on); - -protected: - QImage _image; - QPixmap _screen; - MetaWatchSimulatorForm* _form; - QTime _nextFrame; -}; - -} - -#endif // METAWATCHSIMULATOR_H diff --git a/metawatch/metawatchsimulatorform.cpp b/metawatch/metawatchsimulatorform.cpp deleted file mode 100644 index f2323bd..0000000 --- a/metawatch/metawatchsimulatorform.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include "metawatchsimulatorform.h" -#include "ui_metawatchsimulatorform.h" - -using namespace sowatch; - -MetaWatchSimulatorForm::MetaWatchSimulatorForm(QWidget* parent) : - QWidget(parent), - ui(new Ui::MetaWatchSimulatorForm) -{ - ui->setupUi(this); -} - -MetaWatchSimulatorForm::~MetaWatchSimulatorForm() -{ - delete ui; -} - -void MetaWatchSimulatorForm::refreshScreen(const QPixmap& pixmap) -{ - ui->lblDisplay->setPixmap(pixmap); - ui->lblDisplay->update(); -} - -void MetaWatchSimulatorForm::btnAPressed() -{ - emit buttonPressed(0); -} - -void MetaWatchSimulatorForm::btnAReleased() -{ - emit buttonReleased(0); -} - -void MetaWatchSimulatorForm::btnBPressed() -{ - emit buttonPressed(1); -} - -void MetaWatchSimulatorForm::btnBReleased() -{ - emit buttonReleased(1); -} - -void MetaWatchSimulatorForm::btnCPressed() -{ - emit buttonPressed(2); -} - -void MetaWatchSimulatorForm::btnCReleased() -{ - emit buttonReleased(2); -} - -void MetaWatchSimulatorForm::btnDPressed() -{ - emit buttonPressed(3); -} - -void MetaWatchSimulatorForm::btnDReleased() -{ - emit buttonReleased(3); -} - -void MetaWatchSimulatorForm::btnEPressed() -{ - emit buttonPressed(4); -} - -void MetaWatchSimulatorForm::btnEReleased() -{ - emit buttonReleased(4); -} - -void MetaWatchSimulatorForm::btnFPressed() -{ - emit buttonPressed(5); -} - -void MetaWatchSimulatorForm::btnFReleased() -{ - emit buttonReleased(5); -} diff --git a/metawatch/metawatchsimulatorform.h b/metawatch/metawatchsimulatorform.h deleted file mode 100644 index 0b45746..0000000 --- a/metawatch/metawatchsimulatorform.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef METAWATCHSIMULATORFORM_H -#define METAWATCHSIMULATORFORM_H - -#include - -namespace Ui { - class MetaWatchSimulatorForm; -} - -namespace sowatch { - -class MetaWatchSimulatorForm : public QWidget -{ - Q_OBJECT - -public: - explicit MetaWatchSimulatorForm(QWidget *parent = 0); - ~MetaWatchSimulatorForm(); - - void refreshScreen(const QPixmap& screen); - -signals: - void buttonPressed(int button); - void buttonReleased(int button); - -protected slots: - void btnAPressed(); - void btnAReleased(); - void btnBPressed(); - void btnBReleased(); - void btnCPressed(); - void btnCReleased(); - void btnDPressed(); - void btnDReleased(); - void btnEPressed(); - void btnEReleased(); - void btnFPressed(); - void btnFReleased(); - -private: - Ui::MetaWatchSimulatorForm *ui; -}; - -} - -#endif // METAWATCHSIMULATORFORM_H diff --git a/metawatch/metawatchsimulatorform.ui b/metawatch/metawatchsimulatorform.ui deleted file mode 100644 index 39280b3..0000000 --- a/metawatch/metawatchsimulatorform.ui +++ /dev/null @@ -1,294 +0,0 @@ - - - MetaWatchSimulatorForm - - - - 0 - 0 - 262 - 113 - - - - MetaWatch-Digital Simulator - - - - - - - - A - - - - - - - B - - - - - - - C - - - - - - - - - - 0 - 0 - - - - - - - Qt::AlignCenter - - - - - - - - - D - - - - - - - E - - - - - - - F - - - - - - - - - - - btnA - pressed() - MetaWatchSimulatorForm - btnAPressed() - - - 44 - 20 - - - 105 - 4 - - - - - btnA - released() - MetaWatchSimulatorForm - btnAReleased() - - - 71 - 21 - - - 4 - 10 - - - - - btnB - pressed() - MetaWatchSimulatorForm - btnBPressed() - - - 68 - 57 - - - 98 - 75 - - - - - btnB - released() - MetaWatchSimulatorForm - btnBReleased() - - - 86 - 56 - - - 98 - 58 - - - - - btnC - pressed() - MetaWatchSimulatorForm - btnCPressed() - - - 37 - 90 - - - 73 - 108 - - - - - btnC - released() - MetaWatchSimulatorForm - btnCReleased() - - - 21 - 89 - - - 19 - 105 - - - - - btnD - pressed() - MetaWatchSimulatorForm - btnDPressed() - - - 203 - 18 - - - 205 - 5 - - - - - btnD - released() - MetaWatchSimulatorForm - btnDReleased() - - - 244 - 22 - - - 258 - 21 - - - - - btnE - pressed() - MetaWatchSimulatorForm - btnEPressed() - - - 237 - 50 - - - 256 - 51 - - - - - btnE - released() - MetaWatchSimulatorForm - btnEReleased() - - - 174 - 46 - - - 164 - 40 - - - - - btnF - pressed() - MetaWatchSimulatorForm - btnFPressed() - - - 236 - 89 - - - 258 - 87 - - - - - btnF - released() - MetaWatchSimulatorForm - btnFReleased() - - - 185 - 90 - - - 187 - 108 - - - - - - btnAPressed() - btnAReleased() - btnBPressed() - btnBReleased() - btnCPressed() - btnCReleased() - btnDPressed() - btnDReleased() - btnEPressed() - btnEReleased() - btnFPressed() - btnFReleased() - - diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/MWLabel.qml b/metawatch/qml/com/javispedro/sowatch/metawatch/MWLabel.qml index d1fe507..3ce64ca 100644 --- a/metawatch/qml/com/javispedro/sowatch/metawatch/MWLabel.qml +++ b/metawatch/qml/com/javispedro/sowatch/metawatch/MWLabel.qml @@ -2,5 +2,5 @@ import Qt 4.7 Text { font.family: "MetaWatch Large 16pt" - font.pixelSize: 16 + font.pointSize: 10.5 } diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml b/metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml index b6764b7..37b9093 100644 --- a/metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml +++ b/metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml @@ -4,10 +4,13 @@ ListView { id: list property bool selectable: true + property bool indicator: true interactive: false highlightFollowsCurrentItem: false + keyNavigationWraps: false boundsBehavior: Flickable.StopAtBounds + flickableDirection: Flickable.VerticalFlick property real currentItemTop: currentItem !== null ? currentItem.y - contentY : 0 property real currentItemBottom: currentItem !== null ? currentItemTop + currentItem.height : 0 @@ -44,8 +47,12 @@ ListView { return; } if (currentIndex >= 0 && currentItemTop > 0) { + var prevContentY = contentY; // If the previous item is visible, highlight it decrementCurrentIndex(); + // ListView will "smoothtly scroll the list" even if hightlightFollowsCurrentItem is false, + // so we have to add the following ugly workaround: + contentY = prevContentY; } if (currentItemTop <= 0) { // If the previous item now is still not visible, scroll @@ -59,4 +66,30 @@ ListView { } } } + + Rectangle { + id: indicatorContainer + visible: list.indicator && (list.contentHeight > list.height) + anchors.top: parent.top + anchors.right: parent.right + anchors.bottom: parent.bottom + width: 4 + + color: "white" + + Rectangle { + id: indicatorRect + + property int minHeight: 10 + + anchors.right: parent.right + anchors.left: parent.left + anchors.leftMargin: 1 + + y: (list.contentY / list.contentHeight) * indicatorContainer.height + height: Math.max(minHeight, (list.height / list.contentHeight) * indicatorContainer.height) + + color: "black" + } + } } diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/MWSmallLabel.qml b/metawatch/qml/com/javispedro/sowatch/metawatch/MWSmallLabel.qml deleted file mode 100644 index d26e058..0000000 --- a/metawatch/qml/com/javispedro/sowatch/metawatch/MWSmallLabel.qml +++ /dev/null @@ -1,6 +0,0 @@ -import Qt 4.7 - -Text { - font.family: "MetaWatch Large caps 8pt" - font.pixelSize: 8 -} diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml b/metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml index 017d6a1..b87d535 100644 --- a/metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml +++ b/metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml @@ -5,6 +5,7 @@ Rectangle { height: 16 property alias text: label.text + property alias font: label.font property alias icon: image Image { @@ -18,5 +19,6 @@ Rectangle { anchors.left: image.right anchors.leftMargin: 2 anchors.verticalCenter: parent.verticalCenter + font.pointSize: 12 } } diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/qmldir b/metawatch/qml/com/javispedro/sowatch/metawatch/qmldir index c6b0714..10ca498 100644 --- a/metawatch/qml/com/javispedro/sowatch/metawatch/qmldir +++ b/metawatch/qml/com/javispedro/sowatch/metawatch/qmldir @@ -1,5 +1,4 @@ MWPage 1.0 MWPage.qml MWLabel 1.0 MWLabel.qml -MWSmallLabel 1.0 MWSmallLabel.qml MWTitle 1.0 MWTitle.qml MWListView 1.0 MWListView.qml -- cgit v1.2.3