Subversion Repositories tpanel

Rev

Rev 321 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 321 Rev 323
Line 386... Line 386...
386
    if (!gPageManager)
386
    if (!gPageManager)
387
    {
387
    {
388
        EXCEPTFATALMSG("The class TPageManager was not initialized!");
388
        EXCEPTFATALMSG("The class TPageManager was not initialized!");
389
    }
389
    }
390
 
390
 
391
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
391
    mGestureFilter = new TQGestureFilter(this);
-
 
392
    connect(mGestureFilter, &TQGestureFilter::gestureEvent, this, &MainWindow::onGestureEvent);
392
    setAttribute(Qt::WA_AcceptTouchEvents, true);   // We accept touch events
393
    setAttribute(Qt::WA_AcceptTouchEvents, true);   // We accept touch events
393
    grabGesture(Qt::PinchGesture);                  // We use a pinch gesture to open the settings dialog
394
    grabGesture(Qt::PinchGesture);                  // We use a pinch gesture to open the settings dialog
394
    grabGesture(Qt::SwipeGesture);                  // We support swiping also
395
    grabGesture(Qt::SwipeGesture);                  // We support swiping also
395
 
396
 
396
#ifdef Q_OS_IOS                                     // Block autorotate on IOS
397
#ifdef Q_OS_IOS                                     // Block autorotate on IOS
Line 413... Line 414...
413
            else
414
            else
414
                mSensor->setCurrentOrientation(Qt::LandscapeOrientation);
415
                mSensor->setCurrentOrientation(Qt::LandscapeOrientation);
415
        }
416
        }
416
    }
417
    }
417
#endif  // Q_OS_IOS
418
#endif  // Q_OS_IOS
418
#endif  // defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
-
 
419
 
419
 
420
    // We create the central widget here to make sure the application
420
    // We create the central widget here to make sure the application
421
    // initializes correct. On mobiles the whole screen is used while on
421
    // initializes correct. On mobiles the whole screen is used while on
422
    // desktops a window with the necessary size is created.
422
    // desktops a window with the necessary size is created.
423
    QWidget *central = new QWidget;
423
    QWidget *central = new QWidget;
Line 832... Line 832...
832
    }
832
    }
833
 
833
 
834
    if (mIosRotate)
834
    if (mIosRotate)
835
        delete mIosRotate;
835
        delete mIosRotate;
836
#endif
836
#endif
-
 
837
 
-
 
838
    if (mGestureFilter)
-
 
839
    {
-
 
840
        disconnect(mGestureFilter, &TQGestureFilter::gestureEvent, this, &MainWindow::onGestureEvent);
-
 
841
        delete mGestureFilter;
-
 
842
    }
837
}
843
}
838
 
844
 
839
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
845
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
840
/**
846
/**
841
 * @brief Small thread to invoke the initialization on an Android device.
847
 * @brief Small thread to invoke the initialization on an Android device.
Line 1137... Line 1143...
1137
        event->accept();
1143
        event->accept();
1138
    }
1144
    }
1139
}
1145
}
1140
 
1146
 
1141
/**
1147
/**
1142
 * @brief MainWindow::eventFilter filters the QEvent::MouseMove event
-
 
1143
 * Beside the filtering of the MouseEvent, it waits for a gesture and
-
 
1144
 * call the method gestureEvent() which handles the gesture and opens the
-
 
1145
 * setting dialog.
-
 
1146
 * @param obj   The object where the event occured.
-
 
1147
 * @param event The event.
-
 
1148
 * @return `true` when the event should be ignored.
-
 
1149
 */
-
 
1150
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
-
 
1151
{
-
 
1152
    ulong handle = 0;
-
 
1153
 
-
 
1154
    if (obj)
-
 
1155
    {
-
 
1156
        if ((handle = extractHandle(obj->objectName().toStdString())) != 0)
-
 
1157
        {
-
 
1158
            OBJECT_t *o = findObject(handle);
-
 
1159
 
-
 
1160
            if (o && o->type == OBJ_SUBVIEW)
-
 
1161
            {
-
 
1162
                MSG_DEBUG("Event of object " << handleToString(handle) << " was not filtered out.");
-
 
1163
                return false;
-
 
1164
            }
-
 
1165
        }
-
 
1166
        else
-
 
1167
            return false;
-
 
1168
    }
-
 
1169
 
-
 
1170
    if (event->type() == QEvent::MouseMove)
-
 
1171
    {
-
 
1172
        QMouseEvent *mev = dynamic_cast<QMouseEvent *>(event);
-
 
1173
        QWidget *w = childAt(mev->x(), mev->y());
-
 
1174
 
-
 
1175
        if (w)
-
 
1176
        {
-
 
1177
            MSG_DEBUG("Object " << w->objectName().toStdString() << " is under mouse cursor.");
-
 
1178
            QObject *par = w->parent();
-
 
1179
 
-
 
1180
            if (par)
-
 
1181
            {
-
 
1182
                MSG_DEBUG("The parent is " << par->objectName().toStdString());
-
 
1183
 
-
 
1184
                if (par->objectName().startsWith("Item_"))
-
 
1185
                {
-
 
1186
                    QObject *ppar = par->parent();
-
 
1187
 
-
 
1188
                    if (ppar)
-
 
1189
                    {
-
 
1190
                        MSG_DEBUG("The pparent is " << ppar->objectName().toStdString());
-
 
1191
 
-
 
1192
                        if (ppar->objectName().startsWith("View_"))
-
 
1193
                            return false;
-
 
1194
                    }
-
 
1195
                }
-
 
1196
            }
-
 
1197
        }
-
 
1198
 
-
 
1199
        return true;    // Filter event out, i.e. stop it being handled further.
-
 
1200
    }
-
 
1201
 
-
 
1202
//    if (event->type() == QEvent::Gesture)
-
 
1203
//        return gestureEvent(static_cast<QGestureEvent*>(event));
-
 
1204
 
-
 
1205
    return false;
-
 
1206
//    return QWidget::eventFilter(obj, event);
-
 
1207
}
-
 
1208
 
-
 
1209
/**
-
 
1210
 * @brief MainWindow::event Looks for a gesture
1148
 * @brief MainWindow::event Looks for a gesture
1211
 * @param event The event occured
1149
 * @param event The event occured
1212
 * @return TRUE if event was accepted
1150
 * @return TRUE if event was accepted
1213
 */
1151
 */
1214
bool MainWindow::event(QEvent* event)
1152
bool MainWindow::event(QEvent* event)
1215
{
1153
{
1216
    if (event->type() == QEvent::Gesture)
1154
    if (event->type() == QEvent::Gesture)
1217
        return gestureEvent(static_cast<QGestureEvent*>(event));
1155
        return gestureEvent(static_cast<QGestureEvent*>(event));
1218
 
1156
 
1219
    return QWidget::event(event);
1157
    return QMainWindow::event(event);
1220
}
1158
}
1221
 
1159
 
1222
/**
1160
/**
1223
 * @brief MainWindow::gestureEvent handles a pinch event
1161
 * @brief MainWindow::gestureEvent handles a pinch event
1224
 * If a pinch event occured where the scale factor increased, the settings
1162
 * If a pinch event occured where the scale factor increased, the settings
Line 1231... Line 1169...
1231
{
1169
{
1232
    DECL_TRACER("MainWindow::gestureEvent(QGestureEvent* event)");
1170
    DECL_TRACER("MainWindow::gestureEvent(QGestureEvent* event)");
1233
 
1171
 
1234
    if (QGesture *pinch = event->gesture(Qt::PinchGesture))
1172
    if (QGesture *pinch = event->gesture(Qt::PinchGesture))
1235
    {
1173
    {
1236
#ifdef QT_DEBUG
-
 
1237
        string gs;
-
 
1238
#endif
-
 
1239
        QPinchGesture *pg = static_cast<QPinchGesture *>(pinch);
1174
        QPinchGesture *pg = static_cast<QPinchGesture *>(pinch);
1240
#ifdef QT_DEBUG
1175
#ifdef QT_DEBUG
-
 
1176
        string gs;
-
 
1177
 
1241
        switch(pg->state())
1178
        switch(pg->state())
1242
        {
1179
        {
1243
            case Qt::NoGesture:         gs.assign("no gesture"); break;
1180
            case Qt::NoGesture:         gs.assign("no gesture"); break;
1244
            case Qt::GestureStarted:    gs.assign("gesture started"); break;
1181
            case Qt::GestureStarted:    gs.assign("gesture started"); break;
1245
            case Qt::GestureUpdated:    gs.assign("gesture updated"); break;
1182
            case Qt::GestureUpdated:    gs.assign("gesture updated"); break;
Line 1253... Line 1190...
1253
        {
1190
        {
1254
            MSG_DEBUG("total scale: " << pg->totalScaleFactor() << ", scale: " << pg->scaleFactor() << ", last scale: " << pg->lastScaleFactor());
1191
            MSG_DEBUG("total scale: " << pg->totalScaleFactor() << ", scale: " << pg->scaleFactor() << ", last scale: " << pg->lastScaleFactor());
1255
 
1192
 
1256
            if (pg->totalScaleFactor() > pg->scaleFactor())
1193
            if (pg->totalScaleFactor() > pg->scaleFactor())
1257
                settings();
1194
                settings();
-
 
1195
 
-
 
1196
            return true;
1258
        }
1197
        }
1259
    }
1198
    }
1260
    else if (QGesture *swipe = event->gesture(Qt::SwipeGesture))
1199
    else if (QGesture *swipe = event->gesture(Qt::SwipeGesture))
1261
    {
1200
    {
1262
        string gs;
-
 
1263
 
-
 
1264
        if (!gPageManager)
1201
        if (!gPageManager)
1265
            return false;
1202
            return false;
1266
 
1203
 
1267
        QSwipeGesture *sw = static_cast<QSwipeGesture *>(swipe);
1204
        QSwipeGesture *sw = static_cast<QSwipeGesture *>(swipe);
1268
        MSG_DEBUG("Swipe gesture detected.");
1205
        MSG_DEBUG("Swipe gesture detected.");
Line 1275... Line 1212...
1275
                gPageManager->onSwipeEvent(TPageManager::SW_RIGHT);
1212
                gPageManager->onSwipeEvent(TPageManager::SW_RIGHT);
1276
            else if (sw->verticalDirection() == QSwipeGesture::Up)
1213
            else if (sw->verticalDirection() == QSwipeGesture::Up)
1277
                gPageManager->onSwipeEvent(TPageManager::SW_UP);
1214
                gPageManager->onSwipeEvent(TPageManager::SW_UP);
1278
            else if (sw->verticalDirection() == QSwipeGesture::Down)
1215
            else if (sw->verticalDirection() == QSwipeGesture::Down)
1279
                gPageManager->onSwipeEvent(TPageManager::SW_DOWN);
1216
                gPageManager->onSwipeEvent(TPageManager::SW_DOWN);
-
 
1217
 
-
 
1218
            return true;
1280
        }
1219
        }
1281
    }
1220
    }
1282
 
1221
 
1283
    return false;
1222
    return false;
1284
}
1223
}
Line 1486... Line 1425...
1486
}
1425
}
1487
 
1426
 
1488
void MainWindow::mouseMoveEvent(QMouseEvent* event)
1427
void MainWindow::mouseMoveEvent(QMouseEvent* event)
1489
{
1428
{
1490
    DECL_TRACER("MainWindow::mouseMoveEvent(QMouseEvent* event)");
1429
    DECL_TRACER("MainWindow::mouseMoveEvent(QMouseEvent* event)");
-
 
1430
 
-
 
1431
    Q_UNUSED(event);
1491
/*
1432
/*
1492
    QWidget *w = childAt(event->x(), event->y());
1433
    QWidget *w = childAt(event->x(), event->y());
1493
 
1434
 
1494
    if (w)
1435
    if (w)
1495
    {
1436
    {
Line 1546... Line 1487...
1546
 
1487
 
1547
void MainWindow::keyReleaseEvent(QKeyEvent *event)
1488
void MainWindow::keyReleaseEvent(QKeyEvent *event)
1548
{
1489
{
1549
    DECL_TRACER("MainWindow::keyReleaseEvent(QKeyEvent *event)");
1490
    DECL_TRACER("MainWindow::keyReleaseEvent(QKeyEvent *event)");
1550
 
1491
 
1551
    if (event && event->key() == Qt::Key_Back && !mToolbar)
-
 
1552
        return;
1492
    Q_UNUSED(event);
1553
}
1493
}
1554
 
1494
 
1555
/**
1495
/**
1556
 * @brief MainWindow::onScreenOrientationChanged sets invers or normal orientation.
1496
 * @brief MainWindow::onScreenOrientationChanged sets invers or normal orientation.
1557
 * This method sets according to the actual set orientation the invers
1497
 * This method sets according to the actual set orientation the invers
Line 3726... Line 3666...
3726
            nobj.top = scale(top);
3666
            nobj.top = scale(top);
3727
        }
3667
        }
3728
 
3668
 
3729
        nobj.object.label = new QLabel("", par->object.widget);
3669
        nobj.object.label = new QLabel("", par->object.widget);
3730
        nobj.object.label->setObjectName(QString("Label_") + handleToString(handle).c_str());
3670
        nobj.object.label->setObjectName(QString("Label_") + handleToString(handle).c_str());
-
 
3671
 
-
 
3672
        if (mGestureFilter)
-
 
3673
        {
3731
        nobj.object.label->installEventFilter(this);
3674
            nobj.object.label->installEventFilter(mGestureFilter);
3732
        nobj.object.label->grabGesture(Qt::PinchGesture);
3675
            nobj.object.label->grabGesture(Qt::PinchGesture);
3733
        nobj.object.label->grabGesture(Qt::SwipeGesture);
3676
            nobj.object.label->grabGesture(Qt::SwipeGesture);
-
 
3677
        }
-
 
3678
 
3734
        nobj.object.label->move(nobj.left, nobj.top);
3679
        nobj.object.label->move(nobj.left, nobj.top);
3735
        nobj.object.label->setFixedSize(nobj.width, nobj.height);
3680
        nobj.object.label->setFixedSize(nobj.width, nobj.height);
3736
 
3681
 
3737
        if (passthrough)
3682
        if (passthrough)
3738
            nobj.object.label->setAttribute(Qt::WA_TransparentForMouseEvents);
3683
            nobj.object.label->setAttribute(Qt::WA_TransparentForMouseEvents);
Line 4185... Line 4130...
4185
 
4130
 
4186
    if (!obj->object.widget)
4131
    if (!obj->object.widget)
4187
    {
4132
    {
4188
        obj->object.widget = new QWidget;
4133
        obj->object.widget = new QWidget;
4189
        obj->object.widget->setObjectName(QString("Page_") + handleToString(handle).c_str());
4134
        obj->object.widget->setObjectName(QString("Page_") + handleToString(handle).c_str());
-
 
4135
 
-
 
4136
        if (mGestureFilter)
-
 
4137
        {
4190
        obj->object.widget->installEventFilter(this);
4138
            obj->object.widget->installEventFilter(mGestureFilter);
4191
        obj->object.widget->grabGesture(Qt::PinchGesture);
4139
            obj->object.widget->grabGesture(Qt::PinchGesture);
4192
        obj->object.widget->grabGesture(Qt::SwipeGesture);
4140
            obj->object.widget->grabGesture(Qt::SwipeGesture);
-
 
4141
        }
-
 
4142
 
4193
        obj->object.widget->setAutoFillBackground(true);
4143
        obj->object.widget->setAutoFillBackground(true);
4194
        obj->invalid = false;
4144
        obj->invalid = false;
4195
        obj->object.widget->move(0, 0);
4145
        obj->object.widget->move(0, 0);
4196
#if defined(Q_OS_IOS) || defined(Q_OS_ANDROID)
4146
#if defined(Q_OS_IOS) || defined(Q_OS_ANDROID)
4197
        obj->object.widget->setFixedSize(obj->width, obj->height);
4147
        obj->object.widget->setFixedSize(obj->width, obj->height);
Line 4297... Line 4247...
4297
    obj->width = scWidth;
4247
    obj->width = scWidth;
4298
    obj->height = scHeight;
4248
    obj->height = scHeight;
4299
    obj->invalid = false;
4249
    obj->invalid = false;
4300
    obj->remove = false;
4250
    obj->remove = false;
4301
    // filter move event
4251
    // filter move event
-
 
4252
    if (mGestureFilter)
-
 
4253
    {
4302
    obj->object.widget->installEventFilter(this);
4254
        obj->object.widget->installEventFilter(mGestureFilter);
4303
    obj->object.widget->grabGesture(Qt::PinchGesture);
4255
        obj->object.widget->grabGesture(Qt::PinchGesture);
4304
    obj->object.widget->grabGesture(Qt::SwipeGesture);
4256
        obj->object.widget->grabGesture(Qt::SwipeGesture);
-
 
4257
    }
-
 
4258
 
4305
    obj->aniDirection = true;
4259
    obj->aniDirection = true;
4306
    obj->animate = animate;
4260
    obj->animate = animate;
4307
 
4261
 
4308
    if (shouldAdd)
4262
    if (shouldAdd)
4309
    {
4263
    {
Line 5750... Line 5704...
5750
 
5704
 
5751
    if (gPageManager)
5705
    if (gPageManager)
5752
        gPageManager->inputCursorPositionChanged(handle, oldPos, newPos);
5706
        gPageManager->inputCursorPositionChanged(handle, oldPos, newPos);
5753
}
5707
}
5754
 
5708
 
-
 
5709
void MainWindow::onGestureEvent(QObject *obj, QGestureEvent *event)
-
 
5710
{
-
 
5711
    DECL_TRACER("MainWindow::onGestureEvent(QObject *obj, QGestureEvent *event)");
-
 
5712
 
-
 
5713
    Q_UNUSED(obj);
-
 
5714
    gestureEvent(event);
-
 
5715
}
-
 
5716
 
5755
QPixmap MainWindow::scaleImage(QPixmap& pix)
5717
QPixmap MainWindow::scaleImage(QPixmap& pix)
5756
{
5718
{
5757
    DECL_TRACER("MainWindow::scaleImage(QPixmap& pix)");
5719
    DECL_TRACER("MainWindow::scaleImage(QPixmap& pix)");
5758
 
5720
 
5759
    int width = scale(pix.width());
5721
    int width = scale(pix.width());