📄 eventview.cpp
字号:
if ((*it)->has(Controller::NUMBER)) { data1Str = QString("%1 "). arg((*it)->get <Int>(Controller::NUMBER)); } else if ((*it)->has(Text::TextTypePropertyName)) { data1Str = QString("%1 "). arg(strtoqstr((*it)->get <String> (Text::TextTypePropertyName))); } else if ((*it)->has(Indication:: IndicationTypePropertyName)) { data1Str = QString("%1 "). arg(strtoqstr((*it)->get <String> (Indication:: IndicationTypePropertyName))); } else if ((*it)->has(::Rosegarden::Key::KeyPropertyName)) { data1Str = QString("%1 "). arg(strtoqstr((*it)->get <String> (::Rosegarden::Key::KeyPropertyName))); } else if ((*it)->has(Clef::ClefPropertyName)) { data1Str = QString("%1 "). arg(strtoqstr((*it)->get <String> (Clef::ClefPropertyName))); } else if ((*it)->has(PitchBend::MSB)) { data1Str = QString("%1 "). arg((*it)->get <Int>(PitchBend::MSB)); } else if ((*it)->has(BaseProperties::BEAMED_GROUP_TYPE)) { data1Str = QString("%1 "). arg(strtoqstr((*it)->get <String> (BaseProperties::BEAMED_GROUP_TYPE))); } if ((*it)->has(Controller::VALUE)) { data2Str = QString("%1 "). arg((*it)->get <Int>(Controller::VALUE)); } else if ((*it)->has(Text::TextPropertyName)) { data2Str = QString("%1 "). arg(strtoqstr((*it)->get <String> (Text::TextPropertyName))); /*!!! } else if ((*it)->has(Indication:: IndicationTypePropertyName)) { data2Str = QString("%1 "). arg((*it)->get<Int>(Indication:: IndicationDurationPropertyName)); */ } else if ((*it)->has(PitchBend::LSB)) { data2Str = QString("%1 "). arg((*it)->get <Int>(PitchBend::LSB)); } else if ((*it)->has(BaseProperties::BEAMED_GROUP_ID)) { data2Str = i18n("(group %1) "). arg((*it)->get <Int>(BaseProperties::BEAMED_GROUP_ID)); } if ((*it)->has(ProgramChange::PROGRAM)) { data1Str = QString("%1 "). arg((*it)->get <Int>(ProgramChange::PROGRAM) + 1); } if ((*it)->has(ChannelPressure::PRESSURE)) { data1Str = QString("%1 "). arg((*it)->get <Int>(ChannelPressure::PRESSURE)); } if ((*it)->isa(KeyPressure::EventType) && (*it)->has(KeyPressure::PITCH)) { data1Str = QString("%1 "). arg((*it)->get <Int>(KeyPressure::PITCH)); } if ((*it)->has(KeyPressure::PRESSURE)) { data2Str = QString("%1 "). arg((*it)->get <Int>(KeyPressure::PRESSURE)); } if ((*it)->getDuration() > 0 || (*it)->isa(Note::EventType) || (*it)->isa(Note::EventRestType)) { durationStr = makeDurationString(eventTime, (*it)->getDuration(), timeMode); } QString timeStr = makeTimeString(eventTime, timeMode); new EventViewItem(m_segments[i], *it, m_eventList, timeStr, durationStr, strtoqstr((*it)->getType()), pitchStr, velyStr, data1Str, data2Str); } } if (m_eventList->childCount() == 0) { if (m_segments.size()) new QListViewItem(m_eventList, i18n("<no events at this filter level>")); else new QListViewItem(m_eventList, i18n("<no events>")); m_eventList->setSelectionMode(QListView::NoSelection); stateChanged("have_selection", KXMLGUIClient::StateReverse); } else { m_eventList->setSelectionMode(QListView::Extended); // If no selection then select the first event if (m_listSelection.size() == 0) m_listSelection.push_back(0); stateChanged("have_selection", KXMLGUIClient::StateNoReverse); } // Set a selection from a range of indexes // std::vector<int>::iterator sIt = m_listSelection.begin(); int index = 0; for (; sIt != m_listSelection.end(); ++sIt) { index = *sIt; while (index > 0 && !m_eventList->itemAtIndex(index)) index--; m_eventList->setSelected(m_eventList->itemAtIndex(index), true); m_eventList->setCurrentItem(m_eventList->itemAtIndex(index)); // ensure visible m_eventList->ensureItemVisible(m_eventList->itemAtIndex(index)); } m_listSelection.clear(); m_deletedEvents.clear(); return true;}voidEventView::makeInitialSelection(timeT time){ m_listSelection.clear(); EventViewItem *goodItem = 0; int goodItemNo = 0; int i = 0; for (QListViewItem *child = m_eventList->firstChild(); child; child = child->nextSibling()) { EventViewItem * item = dynamic_cast<EventViewItem *>(child); if (item) { if (item->getEvent()->getAbsoluteTime() > time) break; goodItem = item; goodItemNo = i; } ++i; } /*!!! for (int i = 0; m_eventList->itemAtIndex(i); ++i) { EventViewItem *item = dynamic_cast<EventViewItem *> (m_eventList->itemAtIndex(i)); if (item) { if (item->getEvent()->getAbsoluteTime() > time) break; goodItem = item; goodItemNo = i; } } */ if (goodItem) { m_listSelection.push_back(goodItemNo); m_eventList->setSelected(goodItem, true); m_eventList->ensureItemVisible(goodItem); }}QStringEventView::makeTimeString(timeT time, int timeMode){ switch (timeMode) { case 0: // musical time { int bar, beat, fraction, remainder; getDocument()->getComposition().getMusicalTimeForAbsoluteTime (time, bar, beat, fraction, remainder); ++bar; return QString("%1%2%3-%4%5-%6%7-%8%9 ") .arg(bar / 100) .arg((bar % 100) / 10) .arg(bar % 10) .arg(beat / 10) .arg(beat % 10) .arg(fraction / 10) .arg(fraction % 10) .arg(remainder / 10) .arg(remainder % 10); } case 1: // real time { RealTime rt = getDocument()->getComposition().getElapsedRealTime(time); // return QString("%1 ").arg(rt.toString().c_str()); return QString("%1 ").arg(rt.toText().c_str()); } default: return QString("%1 ").arg(time); }}QStringEventView::makeDurationString(timeT time, timeT duration, int timeMode){ switch (timeMode) { case 0: // musical time { int bar, beat, fraction, remainder; getDocument()->getComposition().getMusicalTimeForDuration (time, duration, bar, beat, fraction, remainder); return QString("%1%2%3-%4%5-%6%7-%8%9 ") .arg(bar / 100) .arg((bar % 100) / 10) .arg(bar % 10) .arg(beat / 10) .arg(beat % 10) .arg(fraction / 10) .arg(fraction % 10) .arg(remainder / 10) .arg(remainder % 10); } case 1: // real time { RealTime rt = getDocument()->getComposition().getRealTimeDifference (time, time + duration); // return QString("%1 ").arg(rt.toString().c_str()); return QString("%1 ").arg(rt.toText().c_str()); } default: return QString("%1 ").arg(duration); }}voidEventView::refreshSegment(Segment * /*segment*/, timeT /*startTime*/, timeT /*endTime*/){ RG_DEBUG << "EventView::refreshSegment" << endl; applyLayout(0);}voidEventView::updateView(){ m_eventList->update();}voidEventView::slotEditTriggerName(){ bool ok = false; QString newLabel = KLineEditDlg::getText(i18n("Segment label"), i18n("Label:"), strtoqstr(m_segments[0]->getLabel()), &ok, this); if (ok) { SegmentSelection selection; selection.insert(m_segments[0]); SegmentLabelCommand *cmd = new SegmentLabelCommand(selection, newLabel); addCommandToHistory(cmd); m_triggerName->setText(newLabel); }}voidEventView::slotEditTriggerPitch(){ int id = m_segments[0]->getComposition()->getTriggerSegmentId(m_segments[0]); TriggerSegmentRec *rec = m_segments[0]->getComposition()->getTriggerSegmentRec(id); PitchDialog *dlg = new PitchDialog(this, i18n("Base pitch"), rec->getBasePitch()); if (dlg->exec() == QDialog::Accepted) { addCommandToHistory(new SetTriggerSegmentBasePitchCommand (&getDocument()->getComposition(), id, dlg->getPitch())); m_triggerPitch->setText(QString("%1").arg(dlg->getPitch())); }}voidEventView::slotEditTriggerVelocity(){ int id = m_segments[0]->getComposition()->getTriggerSegmentId(m_segments[0]); TriggerSegmentRec *rec = m_segments[0]->getComposition()->getTriggerSegmentRec(id); TrivialVelocityDialog *dlg = new TrivialVelocityDialog (this, i18n("Base velocity"), rec->getBaseVelocity()); if (dlg->exec() == QDialog::Accepted) { addCommandToHistory(new SetTriggerSegmentBaseVelocityCommand (&getDocument()->getComposition(), id, dlg->getVelocity())); m_triggerVelocity->setText(QString("%1").arg(dlg->getVelocity())); }}voidEventView::slotTriggerTimeAdjustChanged(int option){ std::string adjust = BaseProperties::TRIGGER_SEGMENT_ADJUST_SQUISH; switch (option) { case 0: adjust = BaseProperties::TRIGGER_SEGMENT_ADJUST_NONE; break; case 1: adjust = BaseProperties::TRIGGER_SEGMENT_ADJUST_SYNC_START; break; case 2: adjust = BaseProperties::TRIGGER_SEGMENT_ADJUST_SYNC_END; break; case 3: adjust = BaseProperties::TRIGGER_SEGMENT_ADJUST_SQUISH; break; default: break; } int id = m_segments[0]->getComposition()->getTriggerSegmentId(m_segments[0]); TriggerSegmentRec *rec = m_segments[0]->getComposition()->getTriggerSegmentRec(id); addCommandToHistory(new SetTriggerSegmentDefaultTimeAdjustCommand (&getDocument()->getComposition(), id, adjust));}voidEventView::slotTriggerRetuneChanged(){ int id = m_segments[0]->getComposition()->getTriggerSegmentId(m_segments[0]); TriggerSegmentRec *rec = m_segments[0]->getComposition()->getTriggerSegmentRec(id); addCommandToHistory(new SetTriggerSegmentDefaultRetuneCommand (&getDocument()->getComposition(), id, !rec->getDefaultRetune()));}voidEventView::slotEditCut(){ QPtrList<QListViewItem> selection = m_eventList->selectedItems(); if (selection.count() == 0) return ; RG_DEBUG << "EventView::slotEditCut - cutting " << selection.count() << " items" << endl; QPtrListIterator<QListViewItem> it(selection); QListViewItem *listItem; EventViewItem *item; EventSelection *cutSelection = 0; int itemIndex = -1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -