MImWordTracker::MImWordTracker(MSceneWindow *parentWindow)
    : MStylableWidget(),
      containerWidget(new QGraphicsWidget()),
      mIdealWidth(0),
      candidateItem(new MImCorrectionCandidateItem("", this))
{
    RegionTracker::instance().addRegion(*containerWidget);
    containerWidget->setObjectName("WordTrackerContainer");

    containerWidget->setParentItem(parentWindow);
    this->setParentItem(containerWidget);

    // By default multi-touch is disabled
    setAcceptTouchEvents(MGConfItem(MultitouchSetting).value().toBool());

    setObjectName(WordTrackerObjectName);

    mainLayout = new QGraphicsLinearLayout(Qt::Vertical);
    mainLayout->setSpacing(0);
    mainLayout->setContentsMargins(0, 0, 0, 0);
    setLayout(mainLayout);
    mainLayout->addItem(candidateItem);
    mainLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    connect(candidateItem, SIGNAL(clicked()), this, SLOT(select()));
    connect(candidateItem, SIGNAL(longTapped()), this, SLOT(longTap()));

    connect(MTheme::instance(), SIGNAL(themeChangeCompleted()),
            this, SLOT(onThemeChangeCompleted()),
            Qt::UniqueConnection);

    setupTimeLine();
    containerWidget->hide();
}
TouchScreen::TouchScreen()
{
    TOP_MARGIN = BOTTOM_MARGIN = RIGHT_MARGIN = LEFT_MARGIN = 33; // margins in %

    loadConfiguration();

    w = Device::getWidth();
    h = Device::getHeight();

    lpx = w * LEFT_MARGIN / 100;
    rpx = w * RIGHT_MARGIN / 100;
    tpx = h * TOP_MARGIN / 100;
    bpx = h * BOTTOM_MARGIN / 100;

    MIN_SWIPE_PIXELS = w * MIN_SWIPE / 100;
    LONG_TAP_ZONE_PIXELS = w * LONG_TAP_ZONE / 100;

    buttonState = 0;
    newButtonState = 0;
    lastEvent = 0;

    wasFocusInReader = true;
    isGestureEnabled = true;
    wasGestureEnabled = true;
    isLongTapHandled = false;
    isSimulatedClick = false;

    oldX = 0;
    oldY = 0;

    longTapTimer = new QTimer(this);
    longTapTimer->setSingleShot(true);
    connect(longTapTimer, SIGNAL(timeout()), this, SLOT(longTap()));
}