bool SheetMusicConverter::convert(const std::string &name, const SheetMusic &sheet)
{
    output.open(name.c_str(), ios::out | ios::trunc);

    // MusicXML header
    output << "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>";
    output << std::endl;
    output << "<!DOCTYPE score-partwise PUBLIC" << std::endl;
    output << "\"-//Recordare//DTD MusicXML 3.0 Partwise//EN\"" << std::endl;
    output << "\"http://www.musicxml.org/dtds/partwise.dtd\">" << std::endl;

    // Sheet music format
    open("score-partwise", "version=\"3.0\"");
    open("part-list");
    open("score-part", "id=\"P1\"");
    print("part-name", "");
    close();
    close();
    open("part", "id=\"P1\"");

    std::vector<Measure> measures = sheet.getAllMeasures();
    for (unsigned int i = 0; i < measures.size(); i++)
    {
        addMeasure();
        std::vector<Note> notes = measures[i].getAllNotes();
        for (unsigned int j = 0; j < notes.size(); j++)
        {
            addNote(notes[j].getPitch(), notes[j].getstart(),
                    notes[j].getDuration(), measures[i].getBeat());
        }
        close();
    }

    while (tags.size() > 0)
        close();
    output.close();

    return true;
}
LocalLibraryController::LocalLibraryController(BaseApp *t_app)
  : QObject(),
    m_app(t_app)
{
  LOG(Debug, "Creating LocalLibraryController with base app " << t_app);
  QDomDocument doc("taxonomy");
  QFile file(":/shared_gui_components/taxonomy.xml");
  file.open(QIODevice::ReadOnly);
  doc.setContent(&file);
  file.close();

  QSharedPointer<LibraryTypeListController> userLibraryListController = createLibraryListController(doc,LocalLibrary::USER);

  userLibraryView = new OSListView(true);
  userLibraryView->setContentsMargins(0,0,0,0);
  userLibraryView->setSpacing(0);
  userLibraryView->setDelegate(QSharedPointer<LibraryTypeItemDelegate>(new LibraryTypeItemDelegate(m_app)));
  userLibraryView->setListController(userLibraryListController); 

  QSharedPointer<LibraryTypeListController> bclLibraryListController = createLibraryListController(doc,LocalLibrary::BCL);

  bclLibraryView = new OSListView(true);
  bclLibraryView->setContentsMargins(0,0,0,0);
  bclLibraryView->setSpacing(0);
  bclLibraryView->setDelegate(QSharedPointer<LibraryTypeItemDelegate>(new LibraryTypeItemDelegate(m_app)));
  bclLibraryView->setListController(bclLibraryListController); 

  QString organizationName = QCoreApplication::organizationName();
  QString applicationName = QCoreApplication::applicationName();
  QSettings m_settings(organizationName, applicationName);

  localLibraryView = new LocalLibraryView();
  if (m_settings.value("library_view", "bcl") == "user"){
    showMyMeasures(true);
  }else{
    showBCLMeasures(true);
  }

  bool bingo = connect(localLibraryView->bclMeasuresButton,SIGNAL(toggled(bool)),this,SLOT(showBCLMeasures(bool)));

  Q_ASSERT(bingo);

  bingo = connect(localLibraryView->myMeasuresButton,SIGNAL(toggled(bool)),this,SLOT(showMyMeasures(bool)));

  Q_ASSERT(bingo);

  bingo = connect(localLibraryView->addMeasureButton,SIGNAL(clicked()), this,SLOT(addMeasure()));

  Q_ASSERT(bingo);

  bingo = connect(localLibraryView->duplicateMeasureButton,SIGNAL(clicked()),this,SLOT(duplicateSelectedMeasure()));

  Q_ASSERT(bingo);

  bingo = connect(localLibraryView->myMeasuresFolderButton,SIGNAL(clicked()),this,SLOT(showMyMeasuresFolder()));

  Q_ASSERT(bingo);

  bingo = connect(localLibraryView->updateMyMeasuresButton,SIGNAL(clicked()), this,SLOT(updateMyMeasures()));

  Q_ASSERT(bingo);

  bingo = connect(localLibraryView->updateBCLMeasuresButton,SIGNAL(clicked()), this,SLOT(updateBCLMeasures()));

  Q_ASSERT(bingo);

  bingo = connect(localLibraryView->addBCLMeasureButton,SIGNAL(clicked()), this,SLOT(openBclDlg()));

  Q_ASSERT(bingo);
}