File indexing completed on 2024-04-28 12:39:50
0001 /* 0002 SPDX-FileCopyrightText: 2006 Koos Vriezen <koos.vriezen@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include "config-kmplayer.h" 0008 0009 #include "kmplayercommon_log.h" 0010 #include "kmplayer_opml.h" 0011 #include "expression.h" 0012 0013 using namespace KMPlayer; 0014 0015 0016 Node *OPML::Opml::childFromTag (const QString & tag) 0017 { 0018 QByteArray ba = tag.toLatin1 (); 0019 const char *name = ba.constData (); 0020 if (!strcasecmp (name, "head")) 0021 return new Head (m_doc); 0022 else if (!strcasecmp (name, "body")) 0023 return new Body (m_doc); 0024 return nullptr; 0025 } 0026 0027 void OPML::Opml::closed () 0028 { 0029 Expression *expr = evaluateExpr ("/head/title"); 0030 if (expr) { 0031 expr->setRoot (this); 0032 title = expr->toString (); 0033 delete expr; 0034 } 0035 Element::closed (); 0036 } 0037 0038 void *OPML::Opml::role (RoleType msg, void *content) 0039 { 0040 if (RolePlaylist == msg) 0041 return !title.isEmpty () ? (PlaylistRole *) this : nullptr; 0042 return Element::role (msg, content); 0043 } 0044 0045 //--------------------------%<------------------------------------------------- 0046 0047 Node *OPML::Head::childFromTag (const QString & tag) 0048 { 0049 QByteArray ba = tag.toLatin1 (); 0050 const char *name = ba.constData (); 0051 if (!strcasecmp (name, "title")) 0052 return new DarkNode (m_doc, name, id_node_title); 0053 else if (!strcasecmp (name, "dateCreated")) 0054 return new DarkNode (m_doc, name, id_node_ignore); 0055 return nullptr; 0056 } 0057 0058 //--------------------------%<------------------------------------------------- 0059 0060 Node *OPML::Body::childFromTag (const QString & tag) 0061 { 0062 QByteArray ba = tag.toLatin1 (); 0063 const char *name = ba.constData (); 0064 if (!strcasecmp (name, "outline")) 0065 return new Outline (m_doc); 0066 return nullptr; 0067 } 0068 0069 //--------------------------%<------------------------------------------------- 0070 0071 void OPML::Outline::closed () 0072 { 0073 src = getAttribute ("xmlUrl").trimmed (); 0074 title = getAttribute ("title").trimmed (); 0075 Mrl::closed (); 0076 }