Skip to content

Commit

Permalink
fix #22018: Filename as black text on dark grey difficult to read
Browse files Browse the repository at this point in the history
  • Loading branch information
trig-ger committed Jul 26, 2013
1 parent 32d2937 commit 6048773
Show file tree
Hide file tree
Showing 8 changed files with 239 additions and 230 deletions.
103 changes: 59 additions & 44 deletions mscore/importmidi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -948,12 +948,14 @@ QList<MTrack> prepareTrackList(const std::multimap<int, MTrack> &tracks)
return trackList;
}

void createMTrackList(Fraction &lastTick, TimeSigMap *sigmap,
std::multimap<int, MTrack> &tracks, MidiFile *mf)
std::multimap<int, MTrack> createMTrackList(Fraction &lastTick,
TimeSigMap *sigmap,
const MidiFile *mf)
{
sigmap->clear();
sigmap->add(0, Fraction(4, 4)); // default time signature

std::multimap<int, MTrack> tracks; // <track index, track>
int trackIndex = -1;
foreach(MidiTrack* t, mf->tracks()) {
t->mergeNoteOnOff();
Expand Down Expand Up @@ -1016,6 +1018,8 @@ void createMTrackList(Fraction &lastTick, TimeSigMap *sigmap,
}
}
}

return tracks;
}

//---------------------------------------------------------
Expand Down Expand Up @@ -1111,12 +1115,12 @@ QString instrumentName(int type, int program)
return MidiInstrument::instrName(type, hbank, lbank, program);
}

void setTrackInfo(MidiFile *mf, MTrack &mt)
void setTrackInfo(MidiType midiType, MTrack &mt)
{
if (mt.staff->isTop()) {
Part *part = mt.staff->part();
if (mt.name.isEmpty()) {
QString name = instrumentName(mf->midiType(), mt.program);
QString name = instrumentName(midiType, mt.program);
if (!name.isEmpty())
part->setLongName(name);
}
Expand Down Expand Up @@ -1169,7 +1173,7 @@ void createTimeSignatures(Score *score)
}
}

void createNotes(const Fraction &lastTick, QList<MTrack> &tracks, MidiFile *mf)
void createNotes(const Fraction &lastTick, QList<MTrack> &tracks, MidiType midiType)
{
for (int i = 0; i < tracks.size(); ++i) {
MTrack &mt = tracks[i];
Expand All @@ -1179,7 +1183,7 @@ void createNotes(const Fraction &lastTick, QList<MTrack> &tracks, MidiFile *mf)
if ((e.type() == ME_META) && (e.metaType() != META_LYRIC))
mt.processMeta(ie.first, e);
}
setTrackInfo(mf, mt);
setTrackInfo(midiType, mt);
// pass current track index to the convertTrack function
// through MidiImportOperations
preferences.midiImportOperations.setCurrentTrack(mt.indexOfOperation);
Expand Down Expand Up @@ -1215,14 +1219,12 @@ QList<TrackMeta> getTracksMeta(const std::multimap<int, MTrack> &tracks,
return tracksMeta;
}

void convertMidi(Score *score, MidiFile *mf)
void convertMidi(Score *score, const MidiFile *mf)
{
std::multimap<int, MTrack> tracks; // <track index, track>
Fraction lastTick;
auto sigmap = score->sigmap();

mf->separateChannel();
createMTrackList(lastTick, sigmap, tracks, mf);
auto tracks = createMTrackList(lastTick, sigmap, mf);
collectChords(tracks, Fraction::fromTicks(MScore::division) / 32); // tol = 1/128 note
quantizeAllTracks(tracks, sigmap, lastTick);
removeOverlappingNotes(tracks);
Expand All @@ -1232,7 +1234,7 @@ void convertMidi(Score *score, MidiFile *mf)
splitUnequalChords(trackList);
createInstruments(score, trackList);
createMeasures(lastTick, score);
createNotes(lastTick, trackList, mf);
createNotes(lastTick, trackList, mf->midiType());
createTimeSignatures(score);
score->connectTies();
}
Expand All @@ -1241,26 +1243,31 @@ QList<TrackMeta> extractMidiTracksMeta(const QString &fileName)
{
if (fileName.isEmpty())
return QList<TrackMeta>();
QFile fp(fileName);
if (!fp.open(QIODevice::ReadOnly))
return QList<TrackMeta>();
MidiFile mf;
try {
mf.read(&fp);

auto &midiData = preferences.midiImportOperations.midiData();
if (!midiData.midiFile(fileName)) {
QFile fp(fileName);
if (!fp.open(QIODevice::ReadOnly))
return QList<TrackMeta>();
MidiFile mf;
try {
mf.read(&fp);
}
catch(...) {
fp.close();
return QList<TrackMeta>();
}
catch(...) {
fp.close();
return QList<TrackMeta>();

mf.separateChannel();
midiData.setMidiFile(fileName, mf);
}
fp.close();

Score mockScore;
std::multimap<int, MTrack> tracks;
Fraction lastTick;

mf.separateChannel();
createMTrackList(lastTick, mockScore.sigmap(), tracks, &mf);
return getTracksMeta(tracks, &mf);
auto tracks = createMTrackList(lastTick, mockScore.sigmap(),
midiData.midiFile(fileName));
return getTracksMeta(tracks, midiData.midiFile(fileName));
}

//---------------------------------------------------------
Expand All @@ -1272,29 +1279,37 @@ Score::FileError importMidi(Score *score, const QString &name)
{
if (name.isEmpty())
return Score::FILE_NOT_FOUND;
QFile fp(name);
if (!fp.open(QIODevice::ReadOnly)) {
qDebug("importMidi: file open error <%s>", qPrintable(name));
return Score::FILE_OPEN_ERROR;
}
MidiFile mf;
try {
mf.read(&fp);
}
catch(QString errorText) {
if (!noGui) {
QMessageBox::warning(0,
QWidget::tr("MuseScore: load midi"),
QWidget::tr("Load failed: ") + errorText,
QString::null, QWidget::tr("Quit"), QString::null, 0, 1);

auto &midiData = preferences.midiImportOperations.midiData();
if (!midiData.midiFile(name)) {
QFile fp(name);
if (!fp.open(QIODevice::ReadOnly)) {
qDebug("importMidi: file open error <%s>", qPrintable(name));
return Score::FILE_OPEN_ERROR;
}
MidiFile mf;
try {
mf.read(&fp);
}
catch(QString errorText) {
if (!noGui) {
QMessageBox::warning(0,
QWidget::tr("MuseScore: load midi"),
QWidget::tr("Load failed: ") + errorText,
QString::null, QWidget::tr("Quit"), QString::null, 0, 1);
}
fp.close();
qDebug("importMidi: bad file format");
return Score::FILE_BAD_FORMAT;
}
fp.close();
qDebug("importMidi: bad file format");
return Score::FILE_BAD_FORMAT;

mf.separateChannel();
midiData.setMidiFile(name, mf);
}
fp.close();

convertMidi(score, &mf);
convertMidi(score, midiData.midiFile(name));

return Score::FILE_NO_ERROR;
}
}
Expand Down
28 changes: 13 additions & 15 deletions mscore/importmidi_data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,6 @@

namespace Ms {

MidiData::MidiData()
{
}

MidiData::~MidiData()
{
}

struct MidiData::MidiDataStore
{
QByteArray tableViewData;
QList<TrackData> tracksData;
int selectedRow = 0;
};

void MidiData::setTracksData(const QString &fileName, const QList<TrackData> &tracksData)
{
data[fileName].tracksData = tracksData;
Expand Down Expand Up @@ -63,4 +48,17 @@ void MidiData::setSelectedRow(const QString &fileName, int row)
data[fileName].selectedRow = row;
}

void MidiData::setMidiFile(const QString &fileName, const MidiFile &midiFile)
{
data[fileName].midiFile = midiFile;
}

const MidiFile* MidiData::midiFile(const QString &fileName) const
{
auto it = data.find(fileName);
if (it == data.end())
return nullptr;
return &(it.value().midiFile);
}

} // namespace Ms
15 changes: 11 additions & 4 deletions mscore/importmidi_data.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#ifndef IMPORTMIDI_DATA_H
#define IMPORTMIDI_DATA_H

#include "midi/midifile.h"


namespace Ms {

Expand All @@ -9,19 +11,24 @@ struct TrackData;
class MidiData
{
public:
MidiData();
~MidiData();

void setTracksData(const QString &fileName, const QList<TrackData> &tracksData);
void setTableViewData(const QString &fileName, const QByteArray &tableViewData);
void excludeFile(const QString &fileName);
QList<TrackData> tracksData(const QString &fileName) const;
QByteArray tableViewData(const QString &fileName) const;
int selectedRow(const QString &fileName) const;
void setSelectedRow(const QString &fileName, int row);
void setMidiFile(const QString &fileName, const MidiFile &midiFile);
const MidiFile *midiFile(const QString &fileName) const;

private:
struct MidiDataStore;
struct MidiDataStore
{
QByteArray tableViewData;
QList<TrackData> tracksData;
int selectedRow = 0;
MidiFile midiFile;
};
QMap<QString, MidiDataStore> data; // <file name, tracks data>
};

Expand Down
3 changes: 3 additions & 0 deletions mscore/importmidi_operations.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define IMPORTMIDI_OPERATIONS_H

#include "importmidi_operation.h"
#include "importmidi_data.h"


namespace Ms {
Expand Down Expand Up @@ -80,10 +81,12 @@ class MidiImportOperations
TrackOperations currentTrackOperations() const;
TrackOperations trackOperations(int trackIndex) const;
int count() const { return operations_.size(); }
MidiData& midiData() { return midiData_; }

private:
QList<TrackOperations> operations_;
int currentTrack_ = -1;
MidiData midiData_;

bool isValidIndex(int index) const;
};
Expand Down
Loading

0 comments on commit 6048773

Please sign in to comment.