diff options
author | Florian Jung <flo@windfisch.org> | 2011-05-16 12:16:44 +0000 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2011-05-16 12:16:44 +0000 |
commit | 2cf9d99932d8f45d5508c45729bea7af4e6ec8fd (patch) | |
tree | ea423f965efa83e841e267778f537af8de28a953 /muse2/muse/waveedit | |
parent | 4e1ca61b03bab50d5e71e6da433503ac3b4470c0 (diff) | |
parent | 38988a37365c8772da11f3f41d49e5c1fd083084 (diff) |
set focus policy to strong in all editors
merged with trunk
Diffstat (limited to 'muse2/muse/waveedit')
-rw-r--r-- | muse2/muse/waveedit/waveedit.cpp | 32 | ||||
-rw-r--r-- | muse2/muse/waveedit/waveedit.h | 3 | ||||
-rw-r--r-- | muse2/muse/waveedit/waveview.cpp | 49 | ||||
-rw-r--r-- | muse2/muse/waveedit/waveview.h | 3 |
4 files changed, 82 insertions, 5 deletions
diff --git a/muse2/muse/waveedit/waveedit.cpp b/muse2/muse/waveedit/waveedit.cpp index 99dfd5f1..7a5ad815 100644 --- a/muse2/muse/waveedit/waveedit.cpp +++ b/muse2/muse/waveedit/waveedit.cpp @@ -65,6 +65,7 @@ WaveEdit::WaveEdit(PartList* pl) : MidiEditor(1, pl) { resize(_widthInit, _heightInit); + setFocusPolicy(Qt::StrongFocus); QSignalMapper* mapper = new QSignalMapper(this); QAction* act; @@ -223,6 +224,9 @@ WaveEdit::WaveEdit(PartList* pl) ymag->setFixedWidth(16); connect(view, SIGNAL(mouseWheelMoved(int)), this, SLOT(moveVerticalSlider(int))); connect(ymag, SIGNAL(valueChanged(int)), view, SLOT(setYScale(int))); + connect(view, SIGNAL(horizontalZoomIn()), SLOT(horizontalZoomIn())); + connect(view, SIGNAL(horizontalZoomOut()), SLOT(horizontalZoomOut())); + time->setOrigin(0, 0); mainGrid->setRowStretch(0, 100); @@ -247,6 +251,8 @@ WaveEdit::WaveEdit(PartList* pl) // connect(time, SIGNAL(timeChanged(unsigned)), SLOT(setTime(unsigned))); connect(view, SIGNAL(timeChanged(unsigned)), SLOT(setTime(unsigned))); + connect(view, SIGNAL(horizontalScroll(unsigned)),hscroll, SLOT(setPos(unsigned))); + connect(hscroll, SIGNAL(scaleChanged(int)), SLOT(updateHScrollRange())); connect(song, SIGNAL(songChanged(int)), SLOT(songChanged1(int))); @@ -526,3 +532,29 @@ void WaveEdit::moveVerticalSlider(int val) ymag->setValue(ymag->value() + val); } + +void WaveEdit::horizontalZoomIn() +{ + int mag = hscroll->mag(); + int zoomlvl = ScrollScale::getQuickZoomLevel(mag); + if (zoomlvl < 23) + zoomlvl++; + + int newmag = ScrollScale::convertQuickZoomLevelToMag(zoomlvl); + + hscroll->setMag(newmag); + +} + +void WaveEdit::horizontalZoomOut() +{ + int mag = hscroll->mag(); + int zoomlvl = ScrollScale::getQuickZoomLevel(mag); + if (zoomlvl > 1) + zoomlvl--; + + int newmag = ScrollScale::convertQuickZoomLevelToMag(zoomlvl); + + hscroll->setMag(newmag); + +} diff --git a/muse2/muse/waveedit/waveedit.h b/muse2/muse/waveedit/waveedit.h index 5c06d37f..e966a635 100644 --- a/muse2/muse/waveedit/waveedit.h +++ b/muse2/muse/waveedit/waveedit.h @@ -71,6 +71,9 @@ class WaveEdit : public MidiEditor { void configChanged(); virtual void updateHScrollRange(); + void horizontalZoomIn(); + void horizontalZoomOut(); + signals: void deleted(unsigned long); diff --git a/muse2/muse/waveedit/waveview.cpp b/muse2/muse/waveedit/waveview.cpp index f83ae1d5..0c387f72 100644 --- a/muse2/muse/waveedit/waveview.cpp +++ b/muse2/muse/waveedit/waveview.cpp @@ -25,6 +25,7 @@ #include "waveedit.h" #include "audio.h" #include "gconfig.h" +#include "fastlog.h" bool modifyWarnedYet = false; //--------------------------------------------------------- @@ -381,14 +382,52 @@ void WaveView::viewMousePressEvent(QMouseEvent* event) viewMouseMoveEvent(event); } - +#define WHEEL_STEPSIZE 40 +#define WHEEL_DELTA 120 //--------------------------------------------------------- // wheelEvent //--------------------------------------------------------- -void WaveView::wheelEvent(QWheelEvent* event) - { - emit mouseWheelMoved(event->delta() / 10); - } +void WaveView::wheelEvent(QWheelEvent* ev) +{ + int keyState = ev->modifiers(); + + bool shift = keyState & Qt::ShiftModifier; + bool alt = keyState & Qt::AltModifier; + bool ctrl = keyState & Qt::ControlModifier; + + if (shift) { // scroll vertically + emit mouseWheelMoved(ev->delta() / 10); + + } else if (ctrl) { // zoom horizontally + if (ev->delta()>0) + emit horizontalZoomIn(); + else + emit horizontalZoomOut(); + + } else { // scroll horizontally + int delta = ev->delta() / WHEEL_DELTA; + int xpixelscale = 5*fast_log10(rmapxDev(1)); + + + if (xpixelscale <= 0) + xpixelscale = 1; + + int scrollstep = WHEEL_STEPSIZE * (delta); + ///if (ev->state() == Qt::ShiftModifier) +// if (((QInputEvent*)ev)->modifiers() == Qt::ShiftModifier) + scrollstep = scrollstep / 10; + + int newXpos = xpos + xpixelscale * scrollstep; + + if (newXpos < 0) + newXpos = 0; + + //setYPos(newYpos); + emit horizontalScroll((unsigned)newXpos); + + } + +} //--------------------------------------------------------- // viewMouseReleaseEvent diff --git a/muse2/muse/waveedit/waveview.h b/muse2/muse/waveedit/waveview.h index 3ee0d5f8..c7992952 100644 --- a/muse2/muse/waveedit/waveview.h +++ b/muse2/muse/waveedit/waveview.h @@ -88,6 +88,9 @@ class WaveView : public View { void followEvent(int); void timeChanged(unsigned); void mouseWheelMoved(int); + void horizontalScroll(unsigned); + void horizontalZoomIn(); + void horizontalZoomOut(); public: WaveView(MidiEditor*, QWidget* parent, int xscale, int yscale); |