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;
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);
491 if ( numKeys != d->m_scene->numKeys() ||
startKey != d->m_scene->startKey() )
493 QByteArray dataBuffer;
494 int baseOctave = d->m_scene->baseOctave();
495 QColor color = d->m_scene->getKeyPressedColor();
497 KeyboardMap* keyMap = d->m_scene->getKeyboardMap();
498 d->m_scene->saveData(dataBuffer);
501 d->m_scene->loadData(dataBuffer);
502 d->m_scene->setPianoHandler(handler);
503 d->m_scene->setKeyboardMap(keyMap);
504 d->m_scene->hideOrShowKeys();
505 d->m_scene->refreshKeys();
506 d->m_scene->refreshLabels();
507 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
517 if (r != d->m_rotation) {
520 rotate(d->m_rotation);
521 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
531 return mapFromScene(sceneRect()).boundingRect().size();
537 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
538 d->m_scene->keyOn(d->m_rawMap->value(keycode));
546 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
547 d->m_scene->keyOff(d->m_rawMap->value(keycode));
561 d->m_scene->setKeyPicture(natural, pix);
571 return d->m_scene->getKeyPicture(natural);
580 d->m_scene->setUseKeyPictures(enable);
589 return d->m_scene->getUseKeyPictures();
604 d->m_scene->setUsingNativeFilter( newState );
616 return d->m_scene->isUsingNativeFilter();
624int PianoKeybd::baseOctave()
const
626 return d->m_scene->baseOctave();
635 d->m_scene->setBaseOctave(baseOctave);
643int PianoKeybd::numKeys()
const
645 return d->m_scene->numKeys();
654 return d->m_scene->startKey();
663 return d->m_rotation;
672 return d->m_scene->getKeyPressedColor();
683 d->m_scene->setKeyPressedColor(c);
691 d->m_scene->resetKeyPressedColor();
701 return d->m_scene->showLabels();
711 d->m_scene->setShowLabels(show);
721 return d->m_scene->alterations();
731 d->m_scene->setAlterations(use);
741 return d->m_scene->getOrientation();
751 d->m_scene->setOrientation(orientation);
761 return d->m_scene->getOctave();
771 d->m_scene->setOctave(octave);
781 return d->m_scene->getTranspose();
791 d->m_scene->setTranspose(t);
800 return d->m_scene->getChannel();
809 d->m_scene->setChannel(c);
819 return d->m_scene->getVelocity();
829 d->m_scene->setVelocity(v);
838 return d->m_scene->isKeyboardEnabled();
847 d->m_scene->setKeyboardEnabled(enable);
856 return d->m_scene->isMouseEnabled();
865 d->m_scene->setMouseEnabled(enable);
874 return d->m_scene->isTouchEnabled();
883 d->m_scene->setTouchEnabled(enable);
892 return d->m_scene->velocityTint();
902 d->m_scene->setVelocityTint(enable);
910 d->m_scene->allKeysOff();
919 d->m_scene->setKeyboardMap(m);
928 return d->m_scene->getKeyboardMap();
946 return d->m_scene->getRawKeyboardMode();
955 d->m_scene->setRawKeyboardMode(b);
973 d->m_scene->setKeyboardMap(m);
993 d->m_scene->showNoteOn(note, color, vel);
1003 d->m_scene->showNoteOn(note, vel);
1013 d->m_scene->showNoteOff(note, vel);
1022 QWidget::setFont(font);
1023 d->m_scene->setFont(font);
1024 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.