Example #1
0
bool CSmartPlaylist::Save(CVariant &obj, bool full /* = true */) const
{
  if (obj.type() == CVariant::VariantTypeConstNull)
    return false;

  obj.clear();
  // add "type", "name" and "match"
  obj["type"] = m_playlistType;
  obj["match"] = m_matchAllRules ? "all" : "one";

  if (full)
    obj["name"] = m_playlistName;

  // add "rules"
  obj["rules"] = CVariant(CVariant::VariantTypeArray);
  for (vector<CSmartPlaylistRule>::const_iterator it = m_playlistRules.begin(); it != m_playlistRules.end(); ++it)
    it->Save(obj["rules"]);

  // add "limit"
  if (full && m_limit)
    obj["limit"] = m_limit;

  // add "order"
  if (full && m_orderField != SortByNone)
  {
    obj["order"] = CVariant(CVariant::VariantTypeObject);
    obj["order"]["method"] = CSmartPlaylistRule::TranslateOrder(m_orderField);
    obj["order"]["direction"] = m_orderAscending ? "ascending" : "descending";
  }

  return true;
}