obj-$(CONFIG_QT) += mainwindow.o moc_mainwindow.o
obj-$(CONFIG_QT) += skinbezelitem.o
obj-$(CONFIG_QT) += skincontrollerview.o
-obj-$(CONFIG_QT) += skinkeyitem.o
+obj-$(CONFIG_QT) += skinkeyitem.o moc_skinkeyitem.o
obj-$(CONFIG_QT) += mainform.o
obj-$(CONFIG_QT) += keyboardhelper.o
obj-$(CONFIG_QT) += skinview.o
$(obj)/moc_mainwindow.o: $(obj)/moc_mainwindow.cpp
$(obj)/moc_mainwindow.cpp: $(obj)/mainwindow.h
moc $< -o $@
+$(obj)/moc_skinkeyitem.o: $(obj)/moc_skinkeyitem.cpp
+$(obj)/moc_skinkeyitem.cpp: $(obj)/skinkeyitem.h
+ moc $< -o $@
isPressed = false;
hoverColor = Qt::white; // TODO:
pen.setColor(Qt::transparent);
+ longPressTimer = new QTimer();
+ longPressTimer->setInterval(3 * 1000);
+ longPressTimer->setSingleShot(true);
+ connect(longPressTimer, SIGNAL(timeout()), this, SLOT(longPressDetected()));
setToolTip("<span style=background-color:white><font color=black>"
+ key->tooltip + "</font></span>");
void SkinKeyItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event)
- qDebug("key pressed : %s", key->name.toLocal8Bit().data());
isPressed = true;
pen.setColor(Qt::transparent);
update();
+ /* check long press key */
+ if (key->keycode == LONGPRESS_KEYCODE) {
+ longPressTimer->start();
+ return;
+ }
+ qDebug("key pressed : %s", key->name.toLocal8Bit().data());
+
do_hw_key_event(KEY_PRESSED, key->keycode);
}
void SkinKeyItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event)
- qDebug("key released : %s", key->name.toLocal8Bit().data());
-
+ int keyCode = 0;
isPressed = false;
update();
- do_hw_key_event(KEY_RELEASED, key->keycode);
+ if (key->keycode == LONGPRESS_KEYCODE) {
+ if (longPressTimer->remainingTime() <= 0) {
+ /* long press key */
+ if (key->name.compare("KEY_RETURN", Qt::CaseInsensitive) == 0) {
+ qDebug("key released : KEY_EXIT");
+ keyCode = 174;
+ } else if (key->name.compare("KEY_YELLOW", Qt::CaseInsensitive) == 0) {
+ qDebug("key released : KEY_MENU");
+ keyCode = 125;
+ } else if (key->name.compare("KEY_CYAN", Qt::CaseInsensitive) == 0) {
+ qDebug("key released : KEY_INFO");
+ keyCode = 188;
+ }
+ do_hw_key_event(KEY_RELEASED, keyCode);
+ return;
+ } else {
+ /* short press key */
+ longPressTimer->stop();
+ if (key->name.compare("KEY_RETURN", Qt::CaseInsensitive) == 0) {
+ keyCode = 1;
+ } else if (key->name.compare("KEY_YELLOW", Qt::CaseInsensitive) == 0) {
+ keyCode = 61;
+ } else if (key->name.compare("KEY_CYAN", Qt::CaseInsensitive) == 0) {
+ keyCode = 62;
+ }
+ qDebug("key pressed : %s", key->name.toLocal8Bit().data());
+ do_hw_key_event(KEY_PRESSED, keyCode);
+ }
+ } else {
+ keyCode = key->keycode;
+ }
+
+ qDebug("key released : %s", key->name.toLocal8Bit().data());
+ do_hw_key_event(KEY_RELEASED, keyCode);
}
void SkinKeyItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
}
}
+void SkinKeyItem::longPressDetected()
+{
+ int keyCode = 0;
+
+ qDebug("long press detected");
+ if (key->name.compare("KEY_RETURN", Qt::CaseInsensitive) == 0) {
+ qDebug("key pressed : KEY_EXIT");
+ keyCode = 174;
+ } else if (key->name.compare("KEY_YELLOW", Qt::CaseInsensitive) == 0) {
+ qDebug("key pressed : KEY_MENU");
+ keyCode = 125;
+ } else if (key->name.compare("KEY_CYAN", Qt::CaseInsensitive) == 0) {
+ qDebug("key pressed : KEY_INFO");
+ keyCode = 188;
+ }
+ do_hw_key_event(KEY_PRESSED, keyCode);
+}
+
SkinKeyItem::~SkinKeyItem()
{
+ if (longPressTimer) {
+ delete longPressTimer;
+ longPressTimer = NULL;
+ }
//qDebug("destory key item");
}