From: APTX Date: Sat, 10 Feb 2018 11:36:02 +0000 (+0900) Subject: Apply API updates from 2016 and 2017 X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=6215431e9d7a7dd46f4df18545366627d746af7a;p=anidbudpclient.git Apply API updates from 2016 and 2017 The following AnimeFlags have been retired and have been removed: - MainCreatorNameList - MainCreatorIdList - CreatorIdList Helper getters for these flags have been removed from AnimeCommand: - mainCreatorNameList - mainCreatorIdList - creatorIdList The following AnimeFlags have been added: - TagWeightList - TagIdList - TagNameList Helper getters for these flags have been added to AnimeCommand: - tagWeightList - tagIdList - tagNameList The new "External Storage" State has been added as: StateOnExternalStorage --- diff --git a/anidbudpclient_global.h b/anidbudpclient_global.h index 30e81c3..1e1c6e5 100644 --- a/anidbudpclient_global.h +++ b/anidbudpclient_global.h @@ -214,7 +214,8 @@ namespace AniDBUdpClient StateUnknown = 0, StateOnHdd = 1, StateOnCd = 2, - StateDeleted = 3 + StateDeleted = 3, + StateOnExternalStorage = 4, }; enum FileState { @@ -379,15 +380,15 @@ namespace AniDBUdpClient // Unused = Q_UINT64_C(0x0000000000000200), // Unused = Q_UINT64_C(0x0000000000000400), // Unused = Q_UINT64_C(0x0000000000000800), - MainCreatorNameList = Q_UINT64_C(0x0000000000001000), - MainCreatorIdList = Q_UINT64_C(0x0000000000002000), - CreatorIdList = Q_UINT64_C(0x0000000000004000), + // MainCreatorNameList = Q_UINT64_C(0x0000000000001000), RETIRED + // MainCreatorIdList = Q_UINT64_C(0x0000000000002000), RETIRED + // CreatorIdList = Q_UINT64_C(0x0000000000004000), RETIRED CharacterIdList = Q_UINT64_C(0x0000000000008000), DateRecordUpdated = Q_UINT64_C(0x0000000000010000), - // Unused = Q_UINT64_C(0x0000000000020000), - // Unused = Q_UINT64_C(0x0000000000040000), - // Unused = Q_UINT64_C(0x0000000000080000), + TagWeightList = Q_UINT64_C(0x0000000000020000), + TagIdList = Q_UINT64_C(0x0000000000040000), + TagNameList = Q_UINT64_C(0x0000000000080000), AnimeNfoId = Q_UINT64_C(0x0000000000100000), AllCinemaId = Q_UINT64_C(0x0000000000200000), ANNId = Q_UINT64_C(0x0000000000400000), @@ -433,8 +434,7 @@ namespace AniDBUdpClient Byte1 = SpecialsCount | CreditsCount | OtherCount | TrailerCount | ParodyCount, - Byte2 = MainCreatorNameList | MainCreatorIdList | CreatorIdList - | CharacterIdList, + Byte2 = CharacterIdList, Byte3 = DateRecordUpdated | AnimeNfoId | AllCinemaId | ANNId, Byte4 = Is18Restricted | AwardList | ReviewCount diff --git a/animecommand.cpp b/animecommand.cpp index f1ba1d8..6d70a9d 100644 --- a/animecommand.cpp +++ b/animecommand.cpp @@ -1,400 +1,410 @@ -#include "animecommand.h" - -#include -#include - -#include - -namespace AniDBUdpClient { - -AnimeCommand::AnimeCommand() -{ - init(); -} - -AnimeCommand::AnimeCommand(int aid, AnimeFlags amask) -{ - init(); - m_aid = aid; - m_amask = amask; -} - -AnimeCommand::AnimeCommand(const QString &aname, AnimeFlags amask) -{ - init(); - m_aname = aname; - m_amask = amask; -} - -int AnimeCommand::aid() const -{ - return m_aid; -} - -void AnimeCommand::setAid(int aid) -{ - m_aid = aid; -} - -AnimeFlags AnimeCommand::amask() const -{ - return m_amask; -} - -void AnimeCommand::amask(AnimeFlags amask) -{ - m_amask = amask; -} - -QString AnimeCommand::aname() const -{ - return m_aname; -} - -void AnimeCommand::setAname(const QString &aname) -{ - m_aname = aname; -} - -bool AnimeCommand::isValid() const -{ - return m_aid || !m_aname.isEmpty(); - // amask doesn't need to be checked as all invalid bits are removed -} - -bool AnimeCommand::waitForResult() const -{ - return true; -} - -Command AnimeCommand::rawCommand() const -{ - Command cmd; - cmd.first = "ANIME"; - - if (m_aid) - cmd.second["aid"] = m_aid; - else if (!m_aname.isEmpty()) - cmd.second["aname"] = m_aname; - - if (m_amask) - { - if ((m_amask & AnimeFlag::AllData) != m_amask) - { - qWarning() << "Clearing invalid bits in amask"; - } - - cmd.second["amask"] = QString::number(m_amask & AnimeFlag::AllData, 16) - .rightJustified(14, QLatin1Char('0'));; - } - - return cmd; -} - -void AnimeCommand::init() -{ - m_aid = 0; - m_amask = 0; -} - -QVariant AnimeReply::value(AnimeFlags f) const -{ - return animeFlagData.value(f); -} - -void AnimeReply::setRawReply(ReplyCode replyCode, const QString &reply) -{ - AbstractReply::setRawReply(replyCode, reply); - - switch (replyCode) - { - case ANIME: - readReplyData(reply); - signalReplyReady(true); - break; - case NO_SUCH_ANIME: - default: - signalReplyReady(false); - break; - } -} - -void AnimeReply::readReplyData(const QString &reply) -{ - QString d = reply.mid(reply.indexOf('\n')).trimmed(); - QStringList parts = d.split('|', QString::KeepEmptyParts); - - if (command().amask() == 0) - { - if (parts.count() < 19) - { - qWarning() << "Not enough parts in reply."; - return; - } - animeFlagData.insert(AnimeFlag::Aid, parts[0].toInt()); - animeFlagData.insert(AnimeFlag::Episodes, parts[1].toInt()); - animeFlagData.insert(AnimeFlag::HighestEpisodeNumber, parts[2].toInt()); - animeFlagData.insert(AnimeFlag::SpecialsCount, parts[3].toInt()); - animeFlagData.insert(AnimeFlag::Rating, parts[4].toInt()); - animeFlagData.insert(AnimeFlag::VoteCount, parts[5].toInt()); - animeFlagData.insert(AnimeFlag::TempRating, parts[6].toInt()); - animeFlagData.insert(AnimeFlag::TempVoteCount, parts[7].toInt()); - animeFlagData.insert(AnimeFlag::AverageReviewRating, parts[8].toInt()); - animeFlagData.insert(AnimeFlag::ReviewCount, parts[9].toInt()); - animeFlagData.insert(AnimeFlag::Year, parts[10]); - animeFlagData.insert(AnimeFlag::Type, parts[11]); - animeFlagData.insert(AnimeFlag::RomajiName, parts[12]); - animeFlagData.insert(AnimeFlag::KanjiName, parts[13]); - animeFlagData.insert(AnimeFlag::EnglishName, parts[14]); - animeFlagData.insert(AnimeFlag::OtherName, parts[15]); - animeFlagData.insert(AnimeFlag::ShortNameList, parts[16]); - animeFlagData.insert(AnimeFlag::SynonymList, parts[17]); - return; - } - - int partNo = 0; - { - for (AnimeFlags::flag_type flag = AnimeFlag::LastFlag; flag > 0; flag >>= 1) - { - if (command().amask() & flag) - { - if (partNo >= parts.size()) - { - qWarning() << "Not enough parts in reply."; - continue; - } - animeFlagData.insert(AnimeFlags(flag), parts[partNo]); - ++partNo; - } - } - } -} - -void AnimeReply::init() -{ -} - -int AnimeReply::specialsCount() const -{ - return animeFlagData.value(AnimeFlag::SpecialsCount).toInt(); -} - -int AnimeReply::creditsCount() const -{ - return animeFlagData.value(AnimeFlag::CreditsCount).toInt(); -} - -int AnimeReply::otherCount() const -{ - return animeFlagData.value(AnimeFlag::OtherCount).toInt(); -} - -int AnimeReply::trailerCount() const -{ - return animeFlagData.value(AnimeFlag::TrailerCount).toInt(); -} - -int AnimeReply::parodyCount() const -{ - return animeFlagData.value(AnimeFlag::ParodyCount).toInt(); -} - -QStringList AnimeReply::mainCreatorNameList() const -{ - return animeFlagData.value(AnimeFlag::MainCreatorNameList).toString().split(QChar('\'')); -} - -QStringList AnimeReply::mainCreatorIdList() const -{ - return animeFlagData.value(AnimeFlag::MainCreatorIdList).toString().split(QChar('\'')); -} - -QStringList AnimeReply::creatorIdList() const -{ - return animeFlagData.value(AnimeFlag::CreatorIdList).toString().split(QChar('\'')); -} - -QStringList AnimeReply::characterIdList() const -{ - return animeFlagData.value(AnimeFlag::CharacterIdList).toString().split(QChar('\'')); -} - -QDateTime AnimeReply::dateRecordUpdated() const -{ - return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::DateRecordUpdated).toUInt()); -} - -int AnimeReply::aniemNfoId() const -{ - return animeFlagData.value(AnimeFlag::AnimeNfoId).toInt(); -} - -int AnimeReply::allCinemaId() const -{ - return animeFlagData.value(AnimeFlag::AllCinemaId).toInt(); -} - -int AnimeReply::ANNId() const -{ - return animeFlagData.value(AnimeFlag::ANNId).toInt(); -} - -int AnimeReply::animePlanetId() const -{ - return 0; -} - -bool AnimeReply::is18Restricted() const -{ - return animeFlagData.value(AnimeFlag::Is18Restricted).toBool(); -} - -QStringList AnimeReply::awardList() const -{ - return animeFlagData.value(AnimeFlag::AwardList).toString().split(QChar('\'')); -} - -int AnimeReply::reviewCount() const -{ - return animeFlagData.value(AnimeFlag::ReviewCount).toInt(); -} - -double AnimeReply::averageReviewRating() const -{ - return animeFlagData.value(AnimeFlag::AverageReviewRating).toDouble() / 100; -} - -int AnimeReply::tempVoteCount() const -{ - return animeFlagData.value(AnimeFlag::TempVoteCount).toInt(); -} - -double AnimeReply::tempRating() const -{ - return animeFlagData.value(AnimeFlag::TempRating).toDouble() / 100; -} - -int AnimeReply::voteCount() const -{ - return animeFlagData.value(AnimeFlag::VoteCount).toInt(); -} - -double AnimeReply::rating() const -{ - return animeFlagData.value(AnimeFlag::Rating).toDouble() / 100; -} - -QStringList AnimeReply::categoryIdList() const -{ - return animeFlagData.value(AnimeFlag::CategoryIdList).toString().split(QChar('\'')); -} - -QString AnimeReply::picName() const -{ - return animeFlagData.value(AnimeFlag::PicName).toString(); -} - -QUrl AnimeReply::url() const -{ - return animeFlagData.value(AnimeFlag::Url).toUrl(); -} - -QDateTime AnimeReply::endDate() const -{ - return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::EndDate).toUInt()); -} - -QDateTime AnimeReply::airDate() const -{ - return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::AirDate).toUInt()); -} - -int AnimeReply::specialEpCount() const -{ - return animeFlagData.value(AnimeFlag::SpecialEpCount).toInt(); -} - -int AnimeReply::highestEpisodeNumber() const -{ - return animeFlagData.value(AnimeFlag::HighestEpisodeNumber).toInt(); -} - -int AnimeReply::episodes() const -{ - return animeFlagData.value(AnimeFlag::Episodes).toInt(); -} - - -QStringList AnimeReply::synonymList() const -{ - return animeFlagData.value(AnimeFlag::SynonymList).toString().split(QChar('\'')); -} - -QStringList AnimeReply::shortNameList() const -{ - return animeFlagData.value(AnimeFlag::ShortNameList).toString().split(QChar('\'')); -} - -QString AnimeReply::otherName() const -{ - return animeFlagData.value(AnimeFlag::OtherName).toString(); -} - -QString AnimeReply::englishName() const -{ - return animeFlagData.value(AnimeFlag::EnglishName).toString(); -} - -QString AnimeReply::kanjiName() const -{ - return animeFlagData.value(AnimeFlag::KanjiName).toString(); -} - -QString AnimeReply::romajiName() const -{ - return animeFlagData.value(AnimeFlag::RomajiName).toString(); -} - - -QString AnimeReply::categoryWeightList() const -{ - return QString(); -} - -QStringList AnimeReply::categoryList() const -{ - return QStringList(); -} - -QStringList AnimeReply::relatedAidType() const -{ - return animeFlagData.value(AnimeFlag::RelatedAidType).toString().split(QChar('\'')); -} - -QStringList AnimeReply::relatedAidList() const -{ - return animeFlagData.value(AnimeFlag::RelatedAidList).toString().split(QChar('\'')); -} - -QString AnimeReply::type() const -{ - return animeFlagData.value(AnimeFlag::Type).toString(); -} - -QString AnimeReply::year() const -{ - return animeFlagData.value(AnimeFlag::Year).toString(); -} - -int AnimeReply::dateFlags() const -{ - return animeFlagData.value(AnimeFlag::DateFlags).toInt(); -} - -int AnimeReply::aid() const -{ - return animeFlagData.value(AnimeFlag::Aid).toInt(); -} - - -} // namespace AniDBUdpClient + #include "animecommand.h" + +#include + +#include +#include + +#include + +namespace AniDBUdpClient { + +AnimeCommand::AnimeCommand() +{ + init(); +} + +AnimeCommand::AnimeCommand(int aid, AnimeFlags amask) +{ + init(); + m_aid = aid; + m_amask = amask; +} + +AnimeCommand::AnimeCommand(const QString &aname, AnimeFlags amask) +{ + init(); + m_aname = aname; + m_amask = amask; +} + +int AnimeCommand::aid() const +{ + return m_aid; +} + +void AnimeCommand::setAid(int aid) +{ + m_aid = aid; +} + +AnimeFlags AnimeCommand::amask() const +{ + return m_amask; +} + +void AnimeCommand::amask(AnimeFlags amask) +{ + m_amask = amask; +} + +QString AnimeCommand::aname() const +{ + return m_aname; +} + +void AnimeCommand::setAname(const QString &aname) +{ + m_aname = aname; +} + +bool AnimeCommand::isValid() const +{ + return m_aid || !m_aname.isEmpty(); + // amask doesn't need to be checked as all invalid bits are removed +} + +bool AnimeCommand::waitForResult() const +{ + return true; +} + +Command AnimeCommand::rawCommand() const +{ + Command cmd; + cmd.first = "ANIME"; + + if (m_aid) + cmd.second["aid"] = m_aid; + else if (!m_aname.isEmpty()) + cmd.second["aname"] = m_aname; + + if (m_amask) + { + if ((m_amask & AnimeFlag::AllData) != m_amask) + { + qWarning() << "Clearing invalid bits in amask"; + } + + cmd.second["amask"] = QString::number(m_amask & AnimeFlag::AllData, 16) + .rightJustified(14, QLatin1Char('0'));; + } + + return cmd; +} + +void AnimeCommand::init() +{ + m_aid = 0; + m_amask = 0; +} + +QVariant AnimeReply::value(AnimeFlags f) const +{ + return animeFlagData.value(f); +} + +void AnimeReply::setRawReply(ReplyCode replyCode, const QString &reply) +{ + AbstractReply::setRawReply(replyCode, reply); + + switch (replyCode) + { + case ANIME: + readReplyData(reply); + signalReplyReady(true); + break; + case NO_SUCH_ANIME: + default: + signalReplyReady(false); + break; + } +} + +void AnimeReply::readReplyData(const QString &reply) +{ + QString d = reply.mid(reply.indexOf('\n')).trimmed(); + QStringList parts = d.split('|', QString::KeepEmptyParts); + + if (command().amask() == 0) + { + if (parts.count() < 19) + { + qWarning() << "Not enough parts in reply."; + return; + } + animeFlagData.insert(AnimeFlag::Aid, parts[0].toInt()); + animeFlagData.insert(AnimeFlag::Episodes, parts[1].toInt()); + animeFlagData.insert(AnimeFlag::HighestEpisodeNumber, parts[2].toInt()); + animeFlagData.insert(AnimeFlag::SpecialsCount, parts[3].toInt()); + animeFlagData.insert(AnimeFlag::Rating, parts[4].toInt()); + animeFlagData.insert(AnimeFlag::VoteCount, parts[5].toInt()); + animeFlagData.insert(AnimeFlag::TempRating, parts[6].toInt()); + animeFlagData.insert(AnimeFlag::TempVoteCount, parts[7].toInt()); + animeFlagData.insert(AnimeFlag::AverageReviewRating, parts[8].toInt()); + animeFlagData.insert(AnimeFlag::ReviewCount, parts[9].toInt()); + animeFlagData.insert(AnimeFlag::Year, parts[10]); + animeFlagData.insert(AnimeFlag::Type, parts[11]); + animeFlagData.insert(AnimeFlag::RomajiName, parts[12]); + animeFlagData.insert(AnimeFlag::KanjiName, parts[13]); + animeFlagData.insert(AnimeFlag::EnglishName, parts[14]); + animeFlagData.insert(AnimeFlag::OtherName, parts[15]); + animeFlagData.insert(AnimeFlag::ShortNameList, parts[16]); + animeFlagData.insert(AnimeFlag::SynonymList, parts[17]); + return; + } + + int partNo = 0; + { + for (AnimeFlags::flag_type flag = AnimeFlag::LastFlag; flag > 0; flag >>= 1) + { + if (command().amask() & flag) + { + if (partNo >= parts.size()) + { + qWarning() << "Not enough parts in reply."; + continue; + } + animeFlagData.insert(AnimeFlags(flag), parts[partNo]); + ++partNo; + } + } + } +} + +void AnimeReply::init() +{ +} + +int AnimeReply::specialsCount() const +{ + return animeFlagData.value(AnimeFlag::SpecialsCount).toInt(); +} + +int AnimeReply::creditsCount() const +{ + return animeFlagData.value(AnimeFlag::CreditsCount).toInt(); +} + +int AnimeReply::otherCount() const +{ + return animeFlagData.value(AnimeFlag::OtherCount).toInt(); +} + +int AnimeReply::trailerCount() const +{ + return animeFlagData.value(AnimeFlag::TrailerCount).toInt(); +} + +int AnimeReply::parodyCount() const +{ + return animeFlagData.value(AnimeFlag::ParodyCount).toInt(); +} + +QStringList AnimeReply::characterIdList() const +{ + return animeFlagData.value(AnimeFlag::CharacterIdList).toString().split(QChar('\'')); +} + +QDateTime AnimeReply::dateRecordUpdated() const +{ + return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::DateRecordUpdated).toUInt()); +} + +QList AnimeReply::tagWeightList() const +{ + const auto stringWeights = animeFlagData.value(AnimeFlag::TagWeightList).toString().split(QChar('\'')); + QList ret; + std::transform(std::cbegin(stringWeights), std::cend(stringWeights), std::back_inserter(ret), + [](const QString &str) { return str.toInt(); }); + return ret; +} + +QList AnimeReply::tagIdList() const +{ + const auto stringIds = animeFlagData.value(AnimeFlag::TagWeightList).toString().split(QChar('\'')); + QList ret; + std::transform(std::cbegin(stringIds), std::cend(stringIds), std::back_inserter(ret), + [](const QString &str) { return str.toInt(); }); + return ret; +} + +QStringList AnimeReply::tagNameList() const +{ + return animeFlagData.value(AnimeFlag::TagNameList).toString().split(QChar('\'')); +} + +int AnimeReply::aniemNfoId() const +{ + return animeFlagData.value(AnimeFlag::AnimeNfoId).toInt(); +} + +int AnimeReply::allCinemaId() const +{ + return animeFlagData.value(AnimeFlag::AllCinemaId).toInt(); +} + +int AnimeReply::ANNId() const +{ + return animeFlagData.value(AnimeFlag::ANNId).toInt(); +} + +int AnimeReply::animePlanetId() const +{ + return 0; +} + +bool AnimeReply::is18Restricted() const +{ + return animeFlagData.value(AnimeFlag::Is18Restricted).toBool(); +} + +QStringList AnimeReply::awardList() const +{ + return animeFlagData.value(AnimeFlag::AwardList).toString().split(QChar('\'')); +} + +int AnimeReply::reviewCount() const +{ + return animeFlagData.value(AnimeFlag::ReviewCount).toInt(); +} + +double AnimeReply::averageReviewRating() const +{ + return animeFlagData.value(AnimeFlag::AverageReviewRating).toDouble() / 100; +} + +int AnimeReply::tempVoteCount() const +{ + return animeFlagData.value(AnimeFlag::TempVoteCount).toInt(); +} + +double AnimeReply::tempRating() const +{ + return animeFlagData.value(AnimeFlag::TempRating).toDouble() / 100; +} + +int AnimeReply::voteCount() const +{ + return animeFlagData.value(AnimeFlag::VoteCount).toInt(); +} + +double AnimeReply::rating() const +{ + return animeFlagData.value(AnimeFlag::Rating).toDouble() / 100; +} + +QStringList AnimeReply::categoryIdList() const +{ + return animeFlagData.value(AnimeFlag::CategoryIdList).toString().split(QChar('\'')); +} + +QString AnimeReply::picName() const +{ + return animeFlagData.value(AnimeFlag::PicName).toString(); +} + +QUrl AnimeReply::url() const +{ + return animeFlagData.value(AnimeFlag::Url).toUrl(); +} + +QDateTime AnimeReply::endDate() const +{ + return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::EndDate).toUInt()); +} + +QDateTime AnimeReply::airDate() const +{ + return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::AirDate).toUInt()); +} + +int AnimeReply::specialEpCount() const +{ + return animeFlagData.value(AnimeFlag::SpecialEpCount).toInt(); +} + +int AnimeReply::highestEpisodeNumber() const +{ + return animeFlagData.value(AnimeFlag::HighestEpisodeNumber).toInt(); +} + +int AnimeReply::episodes() const +{ + return animeFlagData.value(AnimeFlag::Episodes).toInt(); +} + + +QStringList AnimeReply::synonymList() const +{ + return animeFlagData.value(AnimeFlag::SynonymList).toString().split(QChar('\'')); +} + +QStringList AnimeReply::shortNameList() const +{ + return animeFlagData.value(AnimeFlag::ShortNameList).toString().split(QChar('\'')); +} + +QString AnimeReply::otherName() const +{ + return animeFlagData.value(AnimeFlag::OtherName).toString(); +} + +QString AnimeReply::englishName() const +{ + return animeFlagData.value(AnimeFlag::EnglishName).toString(); +} + +QString AnimeReply::kanjiName() const +{ + return animeFlagData.value(AnimeFlag::KanjiName).toString(); +} + +QString AnimeReply::romajiName() const +{ + return animeFlagData.value(AnimeFlag::RomajiName).toString(); +} + + +QString AnimeReply::categoryWeightList() const +{ + return QString(); +} + +QStringList AnimeReply::categoryList() const +{ + return QStringList(); +} + +QStringList AnimeReply::relatedAidType() const +{ + return animeFlagData.value(AnimeFlag::RelatedAidType).toString().split(QChar('\'')); +} + +QStringList AnimeReply::relatedAidList() const +{ + return animeFlagData.value(AnimeFlag::RelatedAidList).toString().split(QChar('\'')); +} + +QString AnimeReply::type() const +{ + return animeFlagData.value(AnimeFlag::Type).toString(); +} + +QString AnimeReply::year() const +{ + return animeFlagData.value(AnimeFlag::Year).toString(); +} + +int AnimeReply::dateFlags() const +{ + return animeFlagData.value(AnimeFlag::DateFlags).toInt(); +} + +int AnimeReply::aid() const +{ + return animeFlagData.value(AnimeFlag::Aid).toInt(); +} + + +} // namespace AniDBUdpClient diff --git a/animecommand.h b/animecommand.h index 7c84e91..41587e4 100644 --- a/animecommand.h +++ b/animecommand.h @@ -1,115 +1,115 @@ -#ifndef ANIMECOMMAND_H -#define ANIMECOMMAND_H - -#include "abstractcommand.h" - -namespace AniDBUdpClient { - -class AnimeReply; - -class ANIDBUDPCLIENTSHARED_EXPORT AnimeCommand : public AbstractCommand -{ - //Q_PROPERTY(int eid READ eid WRITE setEid) - //Q_PROPERTY(int aid READ aid WRITE setAid) - //Q_PROPERTY(int epno READ epno WRITE setEpno) - //Q_PROPERTY(int aname READ aname WRITE setAname) - -public: - typedef AnimeReply ReplyType; - AnimeCommand(); - explicit AnimeCommand(int aid, AnimeFlags amask = 0); - explicit AnimeCommand(const QString &aname, AnimeFlags amask = 0); - - int aid() const; - void setAid(int aid); - - AnimeFlags amask() const; - void amask(AnimeFlags amask); - - QString aname() const; - void setAname(const QString &aname); - - bool isValid() const; - - bool waitForResult() const; - Command rawCommand() const; - -private: - void init(); - - int m_aid; - AnimeFlags m_amask; - QString m_aname; -}; - -class ANIDBUDPCLIENTSHARED_EXPORT AnimeReply : public AbstractReply -{ - Q_OBJECT - REPLY_DEFINITION_HELPER2(Anime) - -public: - QVariant value(AnimeFlags f) const; - - int specialsCount() const; - int creditsCount() const; - int otherCount() const; - int trailerCount() const; - int parodyCount() const; - - QStringList mainCreatorNameList() const; - QStringList mainCreatorIdList() const; - QStringList creatorIdList() const; - QStringList characterIdList() const; - - QDateTime dateRecordUpdated() const; - int aniemNfoId() const; - int allCinemaId() const; - int ANNId() const; - int animePlanetId() const; - - bool is18Restricted() const; - QStringList awardList() const; - int reviewCount() const; - double averageReviewRating() const; - int tempVoteCount() const; - double tempRating() const; - int voteCount() const; - double rating() const; - - QStringList categoryIdList() const; - QString picName() const; - QUrl url() const; - QDateTime endDate() const; - QDateTime airDate() const; - int specialEpCount() const; - int highestEpisodeNumber() const; - int episodes() const; - - QStringList synonymList() const; - QStringList shortNameList() const; - QString otherName() const; - QString englishName() const; - QString kanjiName() const; - QString romajiName() const; - - QString categoryWeightList() const; - QStringList categoryList() const; - QStringList relatedAidType() const; - QStringList relatedAidList() const; - QString type() const; - QString year() const; - int dateFlags() const; - int aid() const; - - void setRawReply(ReplyCode replyCode, const QString &reply); - -private: - void readReplyData(const QString &reply); - void init(); - - QMap animeFlagData; -}; - -} // namespace AniDBUdpClient - -#endif // ANIMECOMMAND_H +#ifndef ANIMECOMMAND_H +#define ANIMECOMMAND_H + +#include "abstractcommand.h" + +namespace AniDBUdpClient { + +class AnimeReply; + +class ANIDBUDPCLIENTSHARED_EXPORT AnimeCommand : public AbstractCommand +{ + //Q_PROPERTY(int eid READ eid WRITE setEid) + //Q_PROPERTY(int aid READ aid WRITE setAid) + //Q_PROPERTY(int epno READ epno WRITE setEpno) + //Q_PROPERTY(int aname READ aname WRITE setAname) + +public: + typedef AnimeReply ReplyType; + AnimeCommand(); + explicit AnimeCommand(int aid, AnimeFlags amask = 0); + explicit AnimeCommand(const QString &aname, AnimeFlags amask = 0); + + int aid() const; + void setAid(int aid); + + AnimeFlags amask() const; + void amask(AnimeFlags amask); + + QString aname() const; + void setAname(const QString &aname); + + bool isValid() const; + + bool waitForResult() const; + Command rawCommand() const; + +private: + void init(); + + int m_aid; + AnimeFlags m_amask; + QString m_aname; +}; + +class ANIDBUDPCLIENTSHARED_EXPORT AnimeReply : public AbstractReply +{ + Q_OBJECT + REPLY_DEFINITION_HELPER2(Anime) + +public: + QVariant value(AnimeFlags f) const; + + int specialsCount() const; + int creditsCount() const; + int otherCount() const; + int trailerCount() const; + int parodyCount() const; + + QStringList characterIdList() const; + + QDateTime dateRecordUpdated() const; + QList tagWeightList() const; + QList tagIdList() const; + QStringList tagNameList() const; + int aniemNfoId() const; + int allCinemaId() const; + int ANNId() const; + int animePlanetId() const; + + bool is18Restricted() const; + QStringList awardList() const; + int reviewCount() const; + double averageReviewRating() const; + int tempVoteCount() const; + double tempRating() const; + int voteCount() const; + double rating() const; + + QStringList categoryIdList() const; + QString picName() const; + QUrl url() const; + QDateTime endDate() const; + QDateTime airDate() const; + int specialEpCount() const; + int highestEpisodeNumber() const; + int episodes() const; + + QStringList synonymList() const; + QStringList shortNameList() const; + QString otherName() const; + QString englishName() const; + QString kanjiName() const; + QString romajiName() const; + + QString categoryWeightList() const; + QStringList categoryList() const; + QStringList relatedAidType() const; + QStringList relatedAidList() const; + QString type() const; + QString year() const; + int dateFlags() const; + int aid() const; + + void setRawReply(ReplyCode replyCode, const QString &reply); + +private: + void readReplyData(const QString &reply); + void init(); + + QMap animeFlagData; +}; + +} // namespace AniDBUdpClient + +#endif // ANIMECOMMAND_H