Exemplo n.º 1
0
void WplParser::Save(const SongList& songs, QIODevice* device,
                     const QDir& dir) const {
  QXmlStreamWriter writer(device);
  writer.setAutoFormatting(true);
  writer.setAutoFormattingIndent(2);
  writer.writeProcessingInstruction("wpl", "version=\"1.0\"");

  StreamElement smil("smil", &writer);

  {
    StreamElement head("head", &writer);
    WriteMeta("Generator", "Clementine -- " CLEMENTINE_VERSION_DISPLAY,
              &writer);
    WriteMeta("ItemCount", QString::number(songs.count()), &writer);
  }

  {
    StreamElement body("body", &writer);
    {
      StreamElement seq("seq", &writer);
      for (const Song& song : songs) {
        writer.writeStartElement("media");
        writer.writeAttribute("src", URLOrRelativeFilename(song.url(), dir));
        writer.writeEndElement();
      }
    }
  }
}
Exemplo n.º 2
0
void PLSParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const {
    QTextStream s(device);
    s << "[playlist]" << endl;
    s << "Version=2" << endl;
    s << "NumberOfEntries=" << songs.count() << endl;

    int n = 1;
    foreach (const Song& song, songs) {
        s << "File" << n << "=" << URLOrRelativeFilename(song.url(), dir) << endl;
        s << "Title" << n << "=" << song.title() << endl;
        s << "Length" << n << "=" << song.length_nanosec() / kNsecPerSec << endl;
        ++n;
    }
Exemplo n.º 3
0
void M3UParser::Save(const SongList& songs, QIODevice* device,
                     const QDir& dir) const {
  device->write("#EXTM3U\n");

  QSettings s;
  s.beginGroup(Playlist::kSettingsGroup);
  bool writeMetadata = s.value(Playlist::kWriteMetadata, true).toBool();
  s.endGroup();

  for (const Song& song : songs) {
    if (song.url().isEmpty()) {
      continue;
    }
    if (writeMetadata) {
      QString meta = QString("#EXTINF:%1,%2 - %3\n")
                         .arg(song.length_nanosec() / kNsecPerSec)
                         .arg(song.artist())
                         .arg(song.title());
      device->write(meta.toUtf8());
    }
    device->write(URLOrRelativeFilename(song.url(), dir).toUtf8());
    device->write("\n");
  }
}