]> Some of my projects - anidbudpclient.git/commitdiff
Add AnimeCommand (unfinished)
authorAPTX <marek321@gmail.com>
Sun, 13 May 2012 17:30:50 +0000 (19:30 +0200)
committerAPTX <marek321@gmail.com>
Sun, 13 May 2012 17:30:50 +0000 (19:30 +0200)
anidbudpclient.pro
animecommand.cpp [new file with mode: 0644]
animecommand.h [new file with mode: 0644]

index de82abf48567db91c8feb8a98c192645418c21b4..30f33088ef976d1ae46322a85b39c671b3a5498a 100644 (file)
@@ -40,7 +40,8 @@ SOURCES += client.cpp \
        filerenamedelegate.cpp \
        clientinterface.cpp \
        myliststate.cpp \
-       episodecommand.cpp
+       episodecommand.cpp \
+       animecommand.cpp
 
 HEADERS += client.h \
        anidbudpclient_global.h \
@@ -65,7 +66,8 @@ HEADERS += client.h \
        filerenamedelegate.h \
        clientinterface.h \
        myliststate.h \
-       episodecommand.h
+       episodecommand.h \
+       animecommand.h
 
 CONV_HEADERS += include/AniDBUdpClient/Client \
        include/AniDBUdpClient/AbstractCommand \
diff --git a/animecommand.cpp b/animecommand.cpp
new file mode 100644 (file)
index 0000000..b4d352b
--- /dev/null
@@ -0,0 +1,123 @@
+#include "animecommand.h"\r
+\r
+#include <QStringList>\r
+\r
+namespace AniDBUdpClient {\r
+\r
+AnimeCommand::AnimeCommand()\r
+{\r
+       init();\r
+}\r
+\r
+AnimeCommand::AnimeCommand(int aid, AnimeFlags amask)\r
+{\r
+       init();\r
+       m_aid = aid;\r
+       m_amask = amask;\r
+}\r
+\r
+AnimeCommand::AnimeCommand(const QString &aname, AnimeFlags amask)\r
+{\r
+       init();\r
+       m_aname = aname;\r
+       m_amask = amask;\r
+}\r
+\r
+int AnimeCommand::aid() const\r
+{\r
+       return m_aid;\r
+}\r
+\r
+void AnimeCommand::setAid(int aid)\r
+{\r
+       m_aid = aid;\r
+}\r
+\r
+AnimeFlags AnimeCommand::amask() const\r
+{\r
+       return m_amask;\r
+}\r
+\r
+void AnimeCommand::amask(AnimeFlags amask)\r
+{\r
+       m_amask = amask;\r
+}\r
+\r
+QString AnimeCommand::aname() const\r
+{\r
+       return m_aname;\r
+}\r
+\r
+void AnimeCommand::setAname(const QString &aname)\r
+{\r
+       m_aname = aname;\r
+}\r
+\r
+bool AnimeCommand::isValid() const\r
+{\r
+       return m_aid || !m_aname.isEmpty();\r
+       // amask doesn't need to be checked as all invalid bits are removed\r
+}\r
+\r
+bool AnimeCommand::waitForResult() const\r
+{\r
+       return true;\r
+}\r
+\r
+Command AnimeCommand::rawCommand() const\r
+{\r
+       Command cmd;\r
+       cmd.first = "ANIME";\r
+\r
+       if (m_aid)\r
+               cmd.second["aid"] = m_aid;\r
+       else if (!m_aname.isEmpty())\r
+               cmd.second["aname"] = m_aname;\r
+\r
+       if (m_amask)\r
+               cmd.second["amask"] = QString::number(m_amask & AnimeFlag::AllData, 16)\r
+                               .rightJustified(14, QLatin1Char('0'));;\r
+\r
+       return cmd;\r
+}\r
+\r
+void AnimeCommand::init()\r
+{\r
+       m_aid = 0;\r
+       m_amask = 0;\r
+}\r
+\r
+QVariant AnimeReply::value(AnimeFlags f) const\r
+{\r
+       return animeFlagData.value(f);\r
+}\r
+\r
+void AnimeReply::setRawReply(ReplyCode replyCode, const QString &reply)\r
+{\r
+       AbstractReply::setRawReply(replyCode, reply);\r
+\r
+       switch (replyCode)\r
+       {\r
+               case ANIME:\r
+                       readReplyData(reply);\r
+                       signalReplyReady(true);\r
+               break;\r
+               case NO_SUCH_ANIME:\r
+               default:\r
+                       signalReplyReady(false);\r
+               break;\r
+       }\r
+}\r
+\r
+void AnimeReply::readReplyData(const QString &reply)\r
+{\r
+       QString d = reply.mid(reply.indexOf('\n')).trimmed();\r
+       QStringList parts = d.split('|', QString::KeepEmptyParts);\r
+\r
+}\r
+\r
+void AnimeReply::init()\r
+{\r
+}\r
+\r
+} // namespace AniDBUdpClient\r
diff --git a/animecommand.h b/animecommand.h
new file mode 100644 (file)
index 0000000..1a56a1f
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef ANIMECOMMAND_H\r
+#define ANIMECOMMAND_H\r
+\r
+#include "abstractcommand.h"\r
+\r
+namespace AniDBUdpClient {\r
+\r
+class AnimeReply;\r
+\r
+class ANIDBUDPCLIENTSHARED_EXPORT AnimeCommand : public AbstractCommand\r
+{\r
+       //Q_PROPERTY(int eid READ eid WRITE setEid)\r
+       //Q_PROPERTY(int aid READ aid WRITE setAid)\r
+       //Q_PROPERTY(int epno READ epno WRITE setEpno)\r
+       //Q_PROPERTY(int aname READ aname WRITE setAname)\r
+\r
+public:\r
+       typedef AnimeReply ReplyType;\r
+       AnimeCommand();\r
+       explicit AnimeCommand(int aid, AnimeFlags amask = 0);\r
+       explicit AnimeCommand(const QString &aname, AnimeFlags amask = 0);\r
+\r
+       int aid() const;\r
+       void setAid(int aid);\r
+\r
+       AnimeFlags amask() const;\r
+       void amask(AnimeFlags amask);\r
+\r
+       QString aname() const;\r
+       void setAname(const QString &aname);\r
+\r
+       bool isValid() const;\r
+\r
+       bool waitForResult() const;\r
+       Command rawCommand() const;\r
+\r
+private:\r
+       void init();\r
+\r
+       int m_aid;\r
+       AnimeFlags m_amask;\r
+       QString m_aname;\r
+};\r
+\r
+class ANIDBUDPCLIENTSHARED_EXPORT AnimeReply : public AbstractReply\r
+{\r
+       Q_OBJECT\r
+       REPLY_DEFINITION_HELPER2(Anime)\r
+\r
+public:\r
+       QVariant value(AnimeFlags f) const;\r
+\r
+       void setRawReply(ReplyCode replyCode, const QString &reply);\r
+\r
+private:\r
+       void readReplyData(const QString &reply);\r
+       void init();\r
+\r
+       QMap<AnimeFlags, QVariant> animeFlagData;\r
+};\r
+\r
+} // namespace AniDBUdpClient\r
+\r
+#endif // ANIMECOMMAND_H\r