mirror-chatterino2/src/resources.cpp

95 lines
3.9 KiB
C++
Raw Normal View History

2017-06-11 09:31:45 +02:00
#include "resources.hpp"
#include "emotemanager.hpp"
2017-06-15 23:13:01 +02:00
#include "util/urlfetch.hpp"
#include "windowmanager.hpp"
2017-01-18 04:52:47 +01:00
#include <QPixmap>
2017-01-13 18:59:11 +01:00
2017-04-14 17:52:22 +02:00
namespace chatterino {
2017-01-13 18:59:11 +01:00
namespace {
2017-01-13 18:59:11 +01:00
inline messages::LazyLoadedImage *lli(EmoteManager &emoteManager, WindowManager &windowManager,
const char *pixmapPath, qreal scale = 1)
2017-01-13 18:59:11 +01:00
{
return new messages::LazyLoadedImage(emoteManager, windowManager, new QPixmap(pixmapPath),
scale);
2017-01-13 18:59:11 +01:00
}
} // namespace
Resources::Resources(EmoteManager &emoteManager, WindowManager &windowManager)
: badgeStaff(lli(emoteManager, windowManager, ":/images/staff_bg.png"))
, badgeAdmin(lli(emoteManager, windowManager, ":/images/admin_bg.png"))
, badgeGlobalModerator(lli(emoteManager, windowManager, ":/images/globalmod_bg.png"))
, badgeModerator(lli(emoteManager, windowManager, ":/images/moderator_bg.png"))
, badgeTurbo(lli(emoteManager, windowManager, ":/images/turbo_bg.png"))
, badgeBroadcaster(lli(emoteManager, windowManager, ":/images/broadcaster_bg.png"))
, badgePremium(lli(emoteManager, windowManager, ":/images/twitchprime_bg.png"))
2017-06-15 23:13:01 +02:00
, badgeVerified(lli(emoteManager, windowManager, ":/images/verified.png", 0.25))
, cheerBadge100000(lli(emoteManager, windowManager, ":/images/cheer100000"))
, cheerBadge10000(lli(emoteManager, windowManager, ":/images/cheer10000"))
, cheerBadge5000(lli(emoteManager, windowManager, ":/images/cheer5000"))
, cheerBadge1000(lli(emoteManager, windowManager, ":/images/cheer1000"))
, cheerBadge100(lli(emoteManager, windowManager, ":/images/cheer100"))
, cheerBadge1(lli(emoteManager, windowManager, ":/images/cheer1"))
, buttonBan(lli(emoteManager, windowManager, ":/images/button_ban.png", 0.25))
, buttonTimeout(lli(emoteManager, windowManager, ":/images/button_timeout.png", 0.25))
2017-01-13 18:59:11 +01:00
{
2017-06-15 23:13:01 +02:00
QString badgesUrl("https://badges.twitch.tv/v1/badges/global/display?language=en");
2017-06-16 08:03:13 +02:00
util::urlJsonFetch(badgesUrl, [this, &emoteManager, &windowManager](QJsonObject &root) {
2017-06-15 23:13:01 +02:00
QJsonObject sets = root.value("badge_sets").toObject();
for (auto it = std::begin(sets); it != std::end(sets); ++it) {
auto &badgeSet = this->badgeSets[it.key().toStdString()];
std::map<std::string, BadgeVersion> &versionsMap = badgeSet.versions;
2017-06-16 08:03:13 +02:00
QJsonObject versions = it.value().value("versions").toObject();
2017-06-15 23:13:01 +02:00
for (auto versionIt = std::begin(versions); versionIt != std::end(versions);
++versionIt) {
std::string kkey = versionIt.key().toStdString();
QJsonObject versionObj = versionIt.value().toObject();
2017-06-16 08:03:13 +02:00
BadgeVersion v(std::move(versionObj), emoteManager, windowManager);
versionsMap.emplace(kkey, v);
2017-06-15 23:13:01 +02:00
}
}
2017-06-16 08:03:13 +02:00
this->dynamicBadgesLoaded = true;
2017-06-15 23:13:01 +02:00
});
}
2017-06-16 08:03:13 +02:00
Resources::BadgeVersion::BadgeVersion(QJsonObject &&root, EmoteManager &emoteManager,
WindowManager &windowManager)
: badgeImage1x(new messages::LazyLoadedImage(emoteManager, windowManager,
root.value("image_url_1x").toString()))
, badgeImage2x(new messages::LazyLoadedImage(emoteManager, windowManager,
root.value("image_url_2x").toString()))
, badgeImage4x(new messages::LazyLoadedImage(emoteManager, windowManager,
root.value("image_url_4x").toString()))
, description(root.value("description").toString().toStdString())
, title(root.value("title").toString().toStdString())
, clickAction(root.value("clickAction").toString().toStdString())
, clickURL(root.value("clickURL").toString().toStdString())
2017-06-15 23:13:01 +02:00
{
}
void Resources::Channel::loadData()
{
/*
if (this->loaded) {
return;
}
this->loaded = true;
if (this->id.empty()) {
//util::urlJsonFetch()
}
*/
2017-01-18 21:30:23 +01:00
}
} // namespace chatterino