19#include <QApplication>
75#if defined(Q_OS_LINUX)
202class PianoKeybd::PianoKeybdPrivate {
204 PianoKeybdPrivate(): m_rotation(0), m_scene(nullptr), m_rawMap(nullptr)
206 ~PianoKeybdPrivate() =
default;
239 initScene(baseOctave, numKeys, startKey);
247 d->m_scene->setRawKeyboardMode(
false);
260 return d->m_scene->getPianoHandler();
273 d->m_scene->setPianoHandler(handler);
282 return d->m_scene->getHighlightPalette();
293 d->m_scene->setHighlightPalette(p);
302 return d->m_scene->getBackgroundPalette();
311 d->m_scene->setBackgroundPalette(p);
321 return d->m_scene->getForegroundPalette();
331 d->m_scene->setForegroundPalette(p);
340 return d->m_scene->showColorScale();
349 d->m_scene->setShowColorScale(show);
363 d->m_scene->useCustomNoteNames(names);
372 d->m_scene->useStandardNoteNames();
381 return d->m_scene->customNoteNames();
390 return d->m_scene->standardNoteNames();
400 d->m_scene->retranslate();
412 d->m_scene =
new PianoScene(base, num, strt, c,
this);
417 setScene(d->m_scene);
426 setAttribute(Qt::WA_AcceptTouchEvents);
427 setAttribute(Qt::WA_InputMethodEnabled,
false);
428 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
429 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
430 setViewportUpdateMode(MinimalViewportUpdate);
431 setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing|QPainter::SmoothPixmapTransform);
432#if (QT_VERSION < QT_VERSION_CHECK(5,15,0))
433 setOptimizationFlag(DontClipPainter,
true);
435 setOptimizationFlag(DontSavePainterState,
true);
436 setOptimizationFlag(DontAdjustForAntialiasing,
true);
446 QGraphicsView::resizeEvent(event);
447 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
458#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
459 static const auto touchScreen = QTouchDevice::DeviceType::TouchScreen;
461 static const auto touchScreen = QInputDevice::DeviceType::TouchScreen;
464 case QEvent::TouchBegin:
465 case QEvent::TouchUpdate:
466 case QEvent::TouchEnd:
467 case QEvent::TouchCancel:
470 QTouchEvent *touchEvent =
static_cast<QTouchEvent*
>(ev);
471 if (
isTouchEnabled() && (touchEvent->device()->type() == touchScreen)) {
472 return d->m_scene->touchScreenEvent(touchEvent);
479 return QGraphicsView::viewportEvent(ev);
496 if ( numKeys != d->m_scene->numKeys() || startKey != d->m_scene->startKey() )
498 QByteArray dataBuffer;
499 int baseOctave = d->m_scene->baseOctave();
500 QColor color = d->m_scene->getKeyPressedColor();
502 KeyboardMap* keyMap = d->m_scene->getKeyboardMap();
503 d->m_scene->saveData(dataBuffer);
505 initScene(baseOctave, numKeys, startKey, color);
506 d->m_scene->loadData(dataBuffer);
507 d->m_scene->setPianoHandler(handler);
508 d->m_scene->setKeyboardMap(keyMap);
509 d->m_scene->hideOrShowKeys();
510 d->m_scene->refreshKeys();
511 d->m_scene->refreshLabels();
512 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
522 if (r != d->m_rotation) {
525 rotate(d->m_rotation);
526 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
536 return mapFromScene(sceneRect()).boundingRect().size();
542 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
543 d->m_scene->keyOn(d->m_rawMap->value(keycode));
551 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
552 d->m_scene->keyOff(d->m_rawMap->value(keycode));
566 d->m_scene->setKeyPicture(natural, pix);
576 return d->m_scene->getKeyPicture(natural);
585 d->m_scene->setUseKeyPictures(enable);
594 return d->m_scene->getUseKeyPictures();
609 d->m_scene->setUsingNativeFilter( newState );
621 return d->m_scene->isUsingNativeFilter();
637 d->m_scene->setOctaveSubscript( enable );
652 return d->m_scene->octaveSubscript();
676int PianoKeybd::baseOctave()
const
678 return d->m_scene->baseOctave();
687 d->m_scene->setBaseOctave(baseOctave);
695int PianoKeybd::numKeys()
const
697 return d->m_scene->numKeys();
704int PianoKeybd::startKey()
const
706 return d->m_scene->startKey();
715 return d->m_rotation;
724 return d->m_scene->getKeyPressedColor();
735 d->m_scene->setKeyPressedColor(c);
743 d->m_scene->resetKeyPressedColor();
753 return d->m_scene->showLabels();
763 d->m_scene->setShowLabels(show);
773 return d->m_scene->alterations();
783 d->m_scene->setAlterations(use);
793 return d->m_scene->getOrientation();
803 d->m_scene->setOrientation(orientation);
813 return d->m_scene->getOctave();
823 d->m_scene->setOctave(octave);
833 return d->m_scene->getTranspose();
843 d->m_scene->setTranspose(t);
852 return d->m_scene->getChannel();
861 d->m_scene->setChannel(c);
871 return d->m_scene->getVelocity();
881 d->m_scene->setVelocity(v);
890 return d->m_scene->isKeyboardEnabled();
899 d->m_scene->setKeyboardEnabled(enable);
908 return d->m_scene->isMouseEnabled();
917 d->m_scene->setMouseEnabled(enable);
926 return d->m_scene->isTouchEnabled();
935 d->m_scene->setTouchEnabled(enable);
944 return d->m_scene->velocityTint();
954 d->m_scene->setVelocityTint(enable);
962 d->m_scene->allKeysOff();
971 d->m_scene->setKeyboardMap(m);
980 return d->m_scene->getKeyboardMap();
998 return d->m_scene->getRawKeyboardMode();
1007 d->m_scene->setRawKeyboardMode(b);
1025 d->m_scene->setKeyboardMap(m);
1045 d->m_scene->showNoteOn(note, color, vel);
1055 d->m_scene->showNoteOn(note, vel);
1065 d->m_scene->showNoteOff(note, vel);
1074 QWidget::setFont(font);
1075 d->m_scene->setFont(font);
1076 d->m_scene->refreshLabels();
The QEvent class is the base class of all event classes.
The QGraphicsView class provides a widget for displaying the contents of a QGraphicsScene.
PianoScene class declaration.