diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index adb19c1876e656d101fa28ab510af1ca9b4cd10d..999455b0c6836abdaf0190e76fa0067c0b93d3f5 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -42,10 +42,17 @@ MainWindow::MainWindow( QWidget *parent ) : m_initializeDockWidgets(); createStatusBar(); + // Translation connect( this, SIGNAL( translateDockWidgetTitle() ), DockWidgetManager::instance(), SLOT( transLateWidgetTitle() ) ); + + // Zoom connect( m_zoomSlider, SIGNAL( valueChanged( int ) ), m_timeline, SLOT( changeZoom( int ) ) ); + connect( m_timeline->tracksView(), SIGNAL( zoomIn() ), + this, SLOT( zoomIn() ) ); + connect( m_timeline->tracksView(), SIGNAL( zoomOut() ), + this, SLOT( zoomOut() ) ); } MainWindow::~MainWindow() @@ -170,3 +177,13 @@ void MainWindow::on_actionOpen_Project_triggered() QDir::currentPath(), tr( "VideoLAN Movie Creator file (*.vlmc)" ) ); } + +void MainWindow::zoomIn() +{ + m_zoomSlider->setValue( m_zoomSlider->value() - 1 ); +} + +void MainWindow::zoomOut() +{ + m_zoomSlider->setValue( m_zoomSlider->value() + 1 ); +} diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index b4c3255e841ba048e80db6684dcc061c26923928..0ce270e84e1c596c3e5e67be6c74dd0864bd746f 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -41,6 +41,10 @@ public: explicit MainWindow( QWidget *parent = 0 ); ~MainWindow(); +public slots: + void zoomIn(); + void zoomOut(); + protected: virtual void changeEvent( QEvent *e ); diff --git a/src/gui/Timeline.cpp b/src/gui/Timeline.cpp index de0d03b4aaad5d454426ad106ef3af327e86a2f4..042083bf7cc262a5b6d5313a72ab372d52b89ba0 100644 --- a/src/gui/Timeline.cpp +++ b/src/gui/Timeline.cpp @@ -22,6 +22,7 @@ #include #include +#include #include "Timeline.h" #include "TracksView.h" #include "TracksScene.h" diff --git a/src/gui/TracksView.cpp b/src/gui/TracksView.cpp index b9b1408d143a8167c4d572885ce18f79097b8f21..383ffabe3dc8e0ff13c6e26e40d303530f861798 100644 --- a/src/gui/TracksView.cpp +++ b/src/gui/TracksView.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include #include "TracksView.h" @@ -134,6 +135,25 @@ void TracksView::mousePressEvent( QMouseEvent* event ) QGraphicsView::mousePressEvent( event ); } +void TracksView::wheelEvent( QWheelEvent* event ) +{ + if ( event->modifiers() == Qt::ControlModifier ) + { + // CTRL + WHEEL = Zoom + if ( event->delta() > 0 ) + emit zoomIn(); + else + emit zoomOut(); + event->accept(); + } + else + { + //TODO should scroll the timeline + event->ignore(); + QGraphicsView::wheelEvent( event ); + } +} + void TracksView::setCursorPos(int pos) { m_cursorPos = pos; diff --git a/src/gui/TracksView.h b/src/gui/TracksView.h index a699c8c129d5bc6af34f93e791c7769bcab5a5cf..6a5be4ebbcf47c7747500eada8770cee3776c27d 100644 --- a/src/gui/TracksView.h +++ b/src/gui/TracksView.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -50,6 +51,7 @@ protected: virtual void drawBackground( QPainter* painter, const QRectF& rect ); virtual void mouseMoveEvent( QMouseEvent* event ); virtual void mousePressEvent( QMouseEvent* event ); + virtual void wheelEvent( QWheelEvent* event ); virtual void dragEnterEvent( QDragEnterEvent* event ); virtual void dropEvent( QDropEvent* event ); virtual void dragMoveEvent( QDragMoveEvent* event ); @@ -63,6 +65,9 @@ private: int m_fps; QGraphicsLineItem* m_cursorLine; +signals: + void zoomIn(); + void zoomOut(); }; #endif // TRACKSVIEW_H