void UIImageView::onTouchEnded(const CCPoint &touchPoint) { if (m_bDoubleClickEnabled) { if (m_nClickCount >= 2) { doubleClickEvent(); m_nClickCount = 0; m_bStartCheckDoubleClick = false; } else { m_touchRelease = true; } } else { UIWidget::onTouchEnded(touchPoint); } }
void UIImageView::onTouchEnded(const cocos2d::Point &touchPoint) { if (_doubleClickEnabled) { if (_clickCount >= 2) { doubleClickEvent(); _clickCount = 0; _startCheckDoubleClick = false; } else { _touchRelease = true; } } else { UIWidget::onTouchEnded(touchPoint); } }
//==================================== // Event filter for application... //------------------------------------ bool XInputEvent::eventFilter ( QObject*, QEvent* event ) { QMouseEvent* mouse = (QMouseEvent*)event; QWheelEvent* wheel = (QWheelEvent*)event; if ((! mouse) && (! wheel)) { return (false); } switch (mouse->type()) { case QEvent::MouseButtonDblClick: timer->stop(); doubleClick = TRUE; mouseReleased = FALSE; mBtn = mouse->button(); doubleClickEvent (mBtn); break; case QEvent::MouseButtonPress: mBtn = mouse->button(); pressEvent (mBtn); mouseReleased = FALSE; timer->start ( 300, TRUE ); doubleClick = FALSE; break; case QEvent::MouseButtonRelease: if (! doubleClick) { mouseReleased = TRUE; mBtn = mouse->button(); releaseEvent (mBtn); } break; case QEvent::Wheel: wheelEvent ( wheel->delta()/WHEEL_DELTA ); break; case QEvent::MouseMove: moveEvent (mouse->x(),mouse->y()); break; default: break; } return (false); }
Geometryval::Geometryval(const MltVideoProfile profile, QPoint frame_size, QWidget* parent) : QWidget(parent), m_profile(profile), m_paramRect(NULL), m_geom(NULL), m_path(NULL), m_fixedMode(false), m_frameSize(frame_size) { m_ui.setupUi(this); QVBoxLayout* vbox = new QVBoxLayout(m_ui.widget); QGraphicsView *view = new QGraphicsView(this); view->setBackgroundBrush(QBrush(Qt::black)); vbox->addWidget(view); vbox->setContentsMargins(0, 0, 0, 0); QVBoxLayout* vbox2 = new QVBoxLayout(m_ui.keyframeWidget); m_helper = new KeyframeHelper(this); vbox2->addWidget(m_helper); vbox2->setContentsMargins(0, 0, 0, 0); connect(m_helper, SIGNAL(positionChanged(int)), this, SLOT(slotPositionChanged(int))); m_scene = new GraphicsSceneRectMove(this); m_scene->setTool(TITLE_SELECT); view->setScene(m_scene); QGraphicsRectItem *m_frameBorder = new QGraphicsRectItem(QRectF(0, 0, profile.width, profile.height)); m_frameBorder->setZValue(-1100); m_frameBorder->setBrush(QColor(255, 255, 0, 30)); m_frameBorder->setPen(QPen(QBrush(QColor(255, 255, 255, 255)), 1.0, Qt::DashLine)); m_scene->addItem(m_frameBorder); m_ui.buttonNext->setIcon(KIcon("media-skip-forward")); m_ui.buttonNext->setToolTip(i18n("Go to next keyframe")); m_ui.buttonPrevious->setIcon(KIcon("media-skip-backward")); m_ui.buttonPrevious->setToolTip(i18n("Go to previous keyframe")); m_ui.buttonAdd->setIcon(KIcon("document-new")); m_ui.buttonAdd->setToolTip(i18n("Add keyframe")); m_ui.buttonDelete->setIcon(KIcon("edit-delete")); m_ui.buttonDelete->setToolTip(i18n("Delete keyframe")); QMenu *configMenu = new QMenu(i18n("Misc..."), this); m_ui.buttonMenu->setIcon(KIcon("system-run")); m_ui.buttonMenu->setMenu(configMenu); m_ui.buttonMenu->setPopupMode(QToolButton::QToolButton::InstantPopup); configMenu->addAction(i18n("Geometry"), this, SLOT(slotGeometry())); m_scaleMenu = new QMenu(i18n("Resize..."), this); configMenu->addMenu(m_scaleMenu); m_scaleMenu->addAction(i18n("50%"), this, SLOT(slotResize50())); m_scaleMenu->addAction(i18n("100%"), this, SLOT(slotResize100())); m_scaleMenu->addAction(i18n("200%"), this, SLOT(slotResize200())); m_scaleMenu->addAction(i18n("Original size"), this, SLOT(slotResizeOriginal())); m_scaleMenu->addAction(i18n("Custom"), this, SLOT(slotResizeCustom())); m_alignMenu = new QMenu(i18n("Align..."), this); configMenu->addMenu(m_alignMenu); m_alignMenu->addAction(i18n("Center"), this, SLOT(slotAlignCenter())); m_alignMenu->addAction(i18n("Hor. Center"), this, SLOT(slotAlignHCenter())); m_alignMenu->addAction(i18n("Vert. Center"), this, SLOT(slotAlignVCenter())); m_alignMenu->addAction(i18n("Right"), this, SLOT(slotAlignRight())); m_alignMenu->addAction(i18n("Left"), this, SLOT(slotAlignLeft())); m_alignMenu->addAction(i18n("Top"), this, SLOT(slotAlignTop())); m_alignMenu->addAction(i18n("Bottom"), this, SLOT(slotAlignBottom())); m_syncAction = configMenu->addAction(i18n("Sync timeline cursor"), this, SLOT(slotSyncCursor())); m_syncAction->setCheckable(true); m_syncAction->setChecked(KdenliveSettings::transitionfollowcursor()); //scene->setSceneRect(0, 0, profile.width * 2, profile.height * 2); //view->fitInView(m_frameBorder, Qt::KeepAspectRatio); const double sc = 100.0 / profile.height * 0.8; QRectF srect = view->sceneRect(); view->setSceneRect(srect.x(), -srect.height() / 3 + 10, srect.width(), srect.height() + srect.height() / 3 * 2 - 10); m_scene->setZoom(sc); view->centerOn(m_frameBorder); connect(m_ui.buttonNext , SIGNAL(clicked()) , this , SLOT(slotNextFrame())); connect(m_ui.buttonPrevious , SIGNAL(clicked()) , this , SLOT(slotPreviousFrame())); connect(m_ui.buttonDelete , SIGNAL(clicked()) , this , SLOT(slotDeleteFrame())); connect(m_ui.buttonAdd , SIGNAL(clicked()) , this , SLOT(slotAddFrame())); connect(m_scene, SIGNAL(actionFinished()), this, SLOT(slotUpdateTransitionProperties())); connect(m_scene, SIGNAL(doubleClickEvent()), this, SLOT(slotGeometry())); }
LiteEditor::LiteEditor(LiteApi::IApplication *app) : m_liteApp(app), m_extension(new Extension), m_completer(0), m_bReadOnly(false) { m_widget = new QWidget; m_editorWidget = new LiteEditorWidget(m_widget); m_editorWidget->setCursorWidth(2); //m_editorWidget->setAcceptDrops(false); m_defEditorPalette = m_editorWidget->palette(); createActions(); createToolBars(); createMenu(); m_editorWidget->setContextMenu(m_contextMenu); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->setSpacing(0); /* m_toolBar->setStyleSheet("QToolBar {border: 1px ; background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #eeeeee, stop: 1 #ababab); }"\ "QToolBar QToolButton { border:1px ; border-radius: 1px; }"\ "QToolBar QToolButton::hover { background-color: #ababab;}"\ "QToolBar::separator {width:2px; margin-left:2px; margin-right:2px; background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #dedede, stop: 1 #a0a0a0);}"); */ QHBoxLayout *toolLayout = new QHBoxLayout; toolLayout->setMargin(0); toolLayout->setSpacing(0); toolLayout->addWidget(m_toolBar); toolLayout->addWidget(m_infoToolBar); layout->addLayout(toolLayout); // QHBoxLayout *hlayout = new QHBoxLayout; // hlayout->addWidget(m_editorWidget); // hlayout->addWidget(m_editorWidget->navigateArea()); //layout->addLayout(hlayout); layout->addWidget(m_editorWidget); m_widget->setLayout(layout); m_file = new LiteEditorFile(m_liteApp,this); m_file->setDocument(m_editorWidget->document()); // QTextOption option = m_editorWidget->document()->defaultTextOption(); // option.setFlags(option.flags() | QTextOption::ShowTabsAndSpaces); // option.setFlags(option.flags() | QTextOption::AddSpaceForLineAndParagraphSeparators); // option.setTabs(tabs); // m_editorWidget->document()->setDefaultTextOption(option); setEditToolbarVisible(true); connect(m_file->document(),SIGNAL(modificationChanged(bool)),this,SIGNAL(modificationChanged(bool))); connect(m_file->document(),SIGNAL(contentsChanged()),this,SIGNAL(contentsChanged())); connect(m_liteApp->optionManager(),SIGNAL(applyOption(QString)),this,SLOT(applyOption(QString))); connect(m_liteApp->editorManager(),SIGNAL(colorStyleSchemeChanged()),this,SLOT(loadColorStyleScheme())); connect(m_liteApp->editorManager(),SIGNAL(editToolbarVisibleChanged(bool)),this,SLOT(setEditToolbarVisible(bool))); //applyOption("option/liteeditor"); m_extension->addObject("LiteApi.ITextEditor",this); m_extension->addObject("LiteApi.ILiteEditor",this); m_extension->addObject("LiteApi.QToolBar",m_toolBar); m_extension->addObject("LiteApi.QPlainTextEdit",m_editorWidget); m_extension->addObject("LiteApi.ContextMenu",m_contextMenu); m_extension->addObject("LiteApi.Menu.Edit",m_editMenu); m_editorWidget->installEventFilter(m_liteApp->editorManager()); connect(m_editorWidget,SIGNAL(cursorPositionChanged()),this,SLOT(editPositionChanged())); connect(m_editorWidget,SIGNAL(navigationStateChanged(QByteArray)),this,SLOT(navigationStateChanged(QByteArray))); connect(m_editorWidget,SIGNAL(overwriteModeChanged(bool)),m_overInfoAct,SLOT(setVisible(bool))); connect(m_editorWidget,SIGNAL(requestFontZoom(int)),this,SLOT(requestFontZoom(int))); connect(m_lineInfo,SIGNAL(doubleClickEvent()),this,SLOT(gotoLine())); connect(m_closeEditorAct,SIGNAL(triggered()),m_liteApp->editorManager(),SLOT(closeEditor())); }
void TouchDispatcher::dispatchTouchBegin( QTouchDevice *device, Qt::KeyboardModifiers modifiers, const QList<QTouchEvent::TouchPoint> &touchPoints, QWindow *window, ulong timestamp) { Q_ASSERT(m_status == NoActiveTouch); QQuickItem *targetItem = m_targetItem.data(); if (!targetItem->isEnabled() || !targetItem->isVisible()) { ugDebug("Cannot dispatch touch event to " << targetItem << " because it's disabled or invisible."); return; } // Map touch points to targetItem coordinates QList<QTouchEvent::TouchPoint> targetTouchPoints = touchPoints; transformTouchPoints(targetTouchPoints, QQuickItemPrivate::get(targetItem)->windowToItemTransform()); QScopedPointer<QTouchEvent> touchEvent( createQTouchEvent(QEvent::TouchBegin, device, modifiers, targetTouchPoints, window, timestamp)); ugDebug("dispatching " << qPrintable(touchEventToString(touchEvent.data())) << " to " << targetItem); QCoreApplication::sendEvent(targetItem, touchEvent.data()); if (touchEvent->isAccepted()) { ugDebug("Item accepted the touch event."); setStatus(DeliveringTouchEvents); } else if (targetItem->acceptedMouseButtons() & Qt::LeftButton) { ugDebug("Item rejected the touch event. Trying a QMouseEvent"); // NB: Arbitrarily chose the first touch point to emulate the mouse pointer QScopedPointer<QMouseEvent> mouseEvent( touchToMouseEvent(QEvent::MouseButtonPress, targetTouchPoints.at(0), timestamp, modifiers, false /* transformNeeded */)); Q_ASSERT(targetTouchPoints.at(0).state() == Qt::TouchPointPressed); ugDebug("dispatching " << qPrintable(mouseEventToString(mouseEvent.data())) << " to " << m_targetItem.data()); QCoreApplication::sendEvent(targetItem, mouseEvent.data()); if (mouseEvent->isAccepted()) { ugDebug("Item accepted the QMouseEvent."); setStatus(DeliveringMouseEvents); m_touchMouseId = targetTouchPoints.at(0).id(); if (checkIfDoubleClicked(timestamp)) { QScopedPointer<QMouseEvent> doubleClickEvent( touchToMouseEvent(QEvent::MouseButtonDblClick, targetTouchPoints.at(0), timestamp, modifiers, false /* transformNeeded */)); ugDebug("dispatching " << qPrintable(mouseEventToString(doubleClickEvent.data())) << " to " << m_targetItem.data()); QCoreApplication::sendEvent(targetItem, doubleClickEvent.data()); } } else { ugDebug("Item rejected the QMouseEvent."); setStatus(TargetRejectedTouches); } } else { ugDebug("Item rejected the touch event and does not accept mouse buttons."); setStatus(TargetRejectedTouches); } }