Source Code (Use browser search to find items of interest.)

Class Index

kmidi'MidiApplication (./kdemultimedia/kmidi/midiapplication.h:75)

class MidiApplication : public KUniqueApplication
{
  Q_OBJECT 

public:
  
  MidiApplication(int &argc, char *argv[], const QCString &appName);

  virtual int newInstance(QValueList<QCString> params);

  bool process(const QCString &fun, const QByteArray &data,
		        QCString &replyType, QByteArray &replyData);

};

kmidi'MidiApplication::MidiApplication() (./kdemultimedia/kmidi/midiapplication.cpp:89)

MidiApplication::MidiApplication(int &argc, char *argv[], const QCString &appName)
  : KUniqueApplication(argc, argv, appName)
  //: KUniqueApplication()
{
//fprintf(stderr,"2: argc=%d argv[1]={%s}\n", argc, (argc>0)? argv[1] : "none");

    KAboutData about( appName, I18N_NOOP("KMidi"), "1.3alpha");

    KCmdLineArgs::init(argc, argv, &about);
    KCmdLineArgs::addCmdLineOptions( options );

    KUniqueApplication::addCmdLineOptions();
}


kmidi'MidiApplication::process() (./kdemultimedia/kmidi/midiapplication.cpp:103)

bool MidiApplication::process(const QCString &fun, const QByteArray &data,
		        QCString &replyType, QByteArray &replyData)
{
  QDataStream stream(data, IO_ReadOnly);
  QDataStream stream2(replyData, IO_WriteOnly);
  QString res;
  int exitcode;

  if (fun == "newInstance(QValueList<QCString>)") {
    QValueList<QCString> arg;
    stream >> arg;
    newInstance(arg);
    replyType = "int";
    exitcode = 0;
    stream2 << exitcode;
    return true;
  } else if (fun == "play(QString)") {
    QString arg;
    stream >> arg;
    replyType = "void";
    kmidi->stopClicked();
    kmidi->playlist->clear();
    kmidi->playlist->append(arg);
    kmidi->redoplaybox();
    kmidi->singleplay = true;
    kmidi->setSong(0);
    return true;
  } else {
    fprintf(stderr,"unknown function call %s to MidiApplication::process()\n", fun.data());
    return false;
  }
}
/*#define DO_IT_MYSELF*/


kmidi'MidiApplication::newInstance() (./kdemultimedia/kmidi/midiapplication.cpp:137)

int MidiApplication::newInstance(QValueList<QCString> params)
{
#ifndef DO_IT_MYSELF
    char mbuff[5];
    int newones = 0;
    QValueList<QCString>::Iterator it = params.begin();
    QFileInfo file;

//printf("count %d [%s]\n", (*it).count(), (*it).data());
    it++; // skip program name


    if (kmidi) {

        for (; it != params.end(); it++) {
//printf("NI:[%s]\n", (*it).data());

	    file.setFile(*it);
	    if (!file.isReadable()) continue;

            QFile f(*it);
            if (!f.open( IO_ReadOnly )) continue;
            if (f.readBlock(mbuff, 4) != 4) {
//printf("couldn't read 4 bytes\n");
		f.close();
		continue;
            }
            mbuff[4] = '\0';
            if (strcmp(mbuff, "MThd")) {
//printf("is not midi file\n");
		f.close();
		continue;
            }
            f.close();

	    file.setFile(*it);
	    //kmidi->playlist->insert(0, *it);
	    kmidi->playlist->append(file.absFilePath());
	    newones++;
        }
 
        if (newones) {
	    kmidi->restartPlaybox();
        }
    }
#endif
    return 0;
}