]> Some of my projects - anidbudpclient.git/commitdiff
Get AnimeCommand to a usable state.
authorAPTX <marek321@gmail.com>
Mon, 21 May 2012 19:11:54 +0000 (21:11 +0200)
committerAPTX <marek321@gmail.com>
Mon, 21 May 2012 19:11:54 +0000 (21:11 +0200)
animecommand.cpp
animecommand.h

index b4d352b2aff36e7d9e8431bdf22f893c0f0f5748..3a83a521e7d84cd277c3827d6153a0e5296ea62c 100644 (file)
@@ -1,6 +1,9 @@
 #include "animecommand.h"\r
 \r
 #include <QStringList>\r
+#include <QUrl>\r
+\r
+#include <QDebug>\r
 \r
 namespace AniDBUdpClient {\r
 \r
@@ -114,10 +117,278 @@ void AnimeReply::readReplyData(const QString &reply)
        QString d = reply.mid(reply.indexOf('\n')).trimmed();\r
        QStringList parts = d.split('|', QString::KeepEmptyParts);\r
 \r
+       if (command().amask() == 0)\r
+       {\r
+               if (parts.count() < 19)\r
+               {\r
+                       qWarning() << "Not enough parts in reply.";\r
+                       return;\r
+               }\r
+               animeFlagData.insert(AnimeFlag::Aid,                                    parts[0].toInt());\r
+               animeFlagData.insert(AnimeFlag::Episodes,                               parts[1].toInt());\r
+               animeFlagData.insert(AnimeFlag::HighestEpisodeNumber,   parts[2].toInt());\r
+               animeFlagData.insert(AnimeFlag::SpecialsCount,                  parts[3].toInt());\r
+               animeFlagData.insert(AnimeFlag::Rating,                                 parts[4].toInt());\r
+               animeFlagData.insert(AnimeFlag::VoteCount,                              parts[5].toInt());\r
+               animeFlagData.insert(AnimeFlag::TempRating,                             parts[6].toInt());\r
+               animeFlagData.insert(AnimeFlag::TempVoteCount,                  parts[7].toInt());\r
+               animeFlagData.insert(AnimeFlag::AverageReviewRating,    parts[8].toInt());\r
+               animeFlagData.insert(AnimeFlag::ReviewCount,                    parts[9].toInt());\r
+               animeFlagData.insert(AnimeFlag::Year,                                   parts[10]);\r
+               animeFlagData.insert(AnimeFlag::Type,                                   parts[11]);\r
+               animeFlagData.insert(AnimeFlag::RomajiName,                             parts[12]);\r
+               animeFlagData.insert(AnimeFlag::KanjiName,                              parts[13]);\r
+               animeFlagData.insert(AnimeFlag::EnglishName,                    parts[14]);\r
+               animeFlagData.insert(AnimeFlag::OtherName,                              parts[15]);\r
+               animeFlagData.insert(AnimeFlag::ShortNameList,                  parts[16]);\r
+               animeFlagData.insert(AnimeFlag::SynonymList,                    parts[17]);\r
+               animeFlagData.insert(AnimeFlag::CategoryList,                   parts[18]);\r
+               return;\r
+       }\r
+\r
+       int partNo = 0;\r
+       {\r
+               for (AnimeFlags::flag_type flag = AnimeFlag::LastFlag; flag > 0; flag >>= 1)\r
+               {\r
+                       if (command().amask() & flag)\r
+                       {\r
+                               if (partNo >= parts.size())\r
+                               {\r
+                                       qWarning() << "Not enough parts in reply.";\r
+                                       continue;\r
+                               }\r
+                               animeFlagData.insert(AnimeFlags(flag), parts[partNo]);\r
+                               ++partNo;\r
+                       }\r
+               }\r
+       }\r
 }\r
 \r
 void AnimeReply::init()\r
 {\r
 }\r
 \r
+int AnimeReply::specialsCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::SpecialsCount).toInt();\r
+}\r
+\r
+int AnimeReply::creditsCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::CreditsCount).toInt();\r
+}\r
+\r
+int AnimeReply::otherCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::OtherCount).toInt();\r
+}\r
+\r
+int AnimeReply::trailerCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::TrailerCount).toInt();\r
+}\r
+\r
+int AnimeReply::parodyCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::ParodyCount).toInt();\r
+}\r
+\r
+QStringList AnimeReply::mainCreatorNameList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::MainCreatorNameList).toString().split(QChar('\''));\r
+}\r
+\r
+QStringList AnimeReply::mainCreatorIdList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::MainCreatorIdList).toString().split(QChar('\''));\r
+}\r
+\r
+QStringList AnimeReply::creatorIdList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::CreatorIdList).toString().split(QChar('\''));\r
+}\r
+\r
+QStringList AnimeReply::characterIdList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::CharacterIdList).toString().split(QChar('\''));\r
+}\r
+\r
+QDateTime AnimeReply::dateRecordUpdated() const\r
+{\r
+       return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::DateRecordUpdated).toUInt());\r
+}\r
+\r
+int AnimeReply::aniemNfoId() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::AnimeNfoId).toInt();\r
+}\r
+\r
+int AnimeReply::allCinemaId() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::AllCinemaId).toInt();\r
+}\r
+\r
+int AnimeReply::ANNId() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::ANNId).toInt();\r
+}\r
+\r
+int AnimeReply::animePlanetId() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::AnimePlanetId).toInt();\r
+}\r
+\r
+bool AnimeReply::is18Restricted() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::Is18Restricted).toBool();\r
+}\r
+\r
+QStringList AnimeReply::awardList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::AwardList).toString().split(QChar('\''));\r
+}\r
+\r
+int AnimeReply::reviewCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::ReviewCount).toInt();\r
+}\r
+\r
+double AnimeReply::averageReviewRating() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::AverageReviewRating).toDouble() / 1000;\r
+}\r
+\r
+int AnimeReply::tempVoteCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::TempVoteCount).toInt();\r
+}\r
+\r
+double AnimeReply::tempRating() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::TempRating).toDouble() / 1000;\r
+}\r
+\r
+int AnimeReply::voteCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::VoteCount).toInt();\r
+}\r
+\r
+double AnimeReply::rating() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::Rating).toDouble() / 1000;\r
+}\r
+\r
+QStringList AnimeReply::categoryIdList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::CategoryIdList).toString().split(QChar('\''));\r
+}\r
+\r
+QString AnimeReply::picName() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::PicName).toString();\r
+}\r
+\r
+QUrl AnimeReply::url() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::Url).toUrl();\r
+}\r
+\r
+QDateTime AnimeReply::endDate() const\r
+{\r
+       return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::EndDate).toUInt());\r
+}\r
+\r
+QDateTime AnimeReply::airDate() const\r
+{\r
+       return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::AirDate).toUInt());\r
+}\r
+\r
+int AnimeReply::specialEpCount() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::SpecialEpCount).toInt();\r
+}\r
+\r
+int AnimeReply::highestEpisodeNumber() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::HighestEpisodeNumber).toInt();\r
+}\r
+\r
+int AnimeReply::episodes() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::Episodes).toInt();\r
+}\r
+\r
+\r
+QStringList AnimeReply::synonymList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::SynonymList).toString().split(QChar('\''));\r
+}\r
+\r
+QStringList AnimeReply::shortNameList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::ShortNameList).toString().split(QChar('\''));\r
+}\r
+\r
+QString AnimeReply::otherName() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::OtherName).toString();\r
+}\r
+\r
+QString AnimeReply::englishName() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::EnglishName).toString();\r
+}\r
+\r
+QString AnimeReply::kanjiName() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::KanjiName).toString();\r
+}\r
+\r
+QString AnimeReply::romajiName() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::RomajiName).toString();\r
+}\r
+\r
+\r
+QString AnimeReply::categoryWeightList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::CategoryWeightList).toString();\r
+}\r
+\r
+QStringList AnimeReply::categoryList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::CategoryList).toString().split(QChar('\''));\r
+}\r
+\r
+QStringList AnimeReply::relatedAidType() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::RelatedAidType).toString().split(QChar('\''));\r
+}\r
+\r
+QStringList AnimeReply::relatedAidList() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::RelatedAidList).toString().split(QChar('\''));\r
+}\r
+\r
+QString AnimeReply::type() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::Type).toString();\r
+}\r
+\r
+int AnimeReply::year() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::Year).toInt();\r
+}\r
+\r
+int AnimeReply::dateFlags() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::DateFlags).toInt();\r
+}\r
+\r
+int AnimeReply::aid() const\r
+{\r
+       return animeFlagData.value(AnimeFlag::Aid).toInt();\r
+}\r
+\r
+\r
 } // namespace AniDBUdpClient\r
index 1a56a1f23c699b3e0ff42deccc550a88a947fa5f..90df173bf16cab8ba352cad869f4a35849eee6f4 100644 (file)
@@ -50,6 +50,57 @@ class ANIDBUDPCLIENTSHARED_EXPORT AnimeReply : public AbstractReply
 public:\r
        QVariant value(AnimeFlags f) const;\r
 \r
+       int specialsCount() const;\r
+       int creditsCount() const;\r
+       int otherCount() const;\r
+       int trailerCount() const;\r
+       int parodyCount() const;\r
+\r
+       QStringList mainCreatorNameList() const;\r
+       QStringList mainCreatorIdList() const;\r
+       QStringList creatorIdList() const;\r
+       QStringList characterIdList() const;\r
+\r
+       QDateTime dateRecordUpdated() const;\r
+       int aniemNfoId() const;\r
+       int allCinemaId() const;\r
+       int ANNId() const;\r
+       int animePlanetId() const;\r
+\r
+       bool is18Restricted() const;\r
+       QStringList awardList() const;\r
+       int reviewCount() const;\r
+       double averageReviewRating() const;\r
+       int tempVoteCount() const;\r
+       double tempRating() const;\r
+       int voteCount() const;\r
+       double rating() const;\r
+\r
+       QStringList categoryIdList() const;\r
+       QString picName() const;\r
+       QUrl url() const;\r
+       QDateTime endDate() const;\r
+       QDateTime airDate() const;\r
+       int specialEpCount() const;\r
+       int highestEpisodeNumber() const;\r
+       int episodes() const;\r
+\r
+       QStringList synonymList() const;\r
+       QStringList shortNameList() const;\r
+       QString otherName() const;\r
+       QString englishName() const;\r
+       QString kanjiName() const;\r
+       QString romajiName() const;\r
+\r
+       QString categoryWeightList() const;\r
+       QStringList categoryList() const;\r
+       QStringList relatedAidType() const;\r
+       QStringList relatedAidList() const;\r
+       QString type() const;\r
+       int year() const;\r
+       int dateFlags() const;\r
+       int aid() const;\r
+\r
        void setRawReply(ReplyCode replyCode, const QString &reply);\r
 \r
 private:\r