Move gif timer stuff to its own class

Clean up unused includes
This commit is contained in:
Rasmus Karlsson 2018-06-05 18:30:26 +02:00 committed by fourtf
parent 78664f79ee
commit 8e70f02e3b
7 changed files with 63 additions and 53 deletions

View file

@ -124,6 +124,7 @@ SOURCES += \
src/singletons/helper/loggingchannel.cpp \ src/singletons/helper/loggingchannel.cpp \
src/singletons/helper/moderationaction.cpp \ src/singletons/helper/moderationaction.cpp \
src/singletons/helper/chatterinosetting.cpp \ src/singletons/helper/chatterinosetting.cpp \
src/singletons/helper/giftimer.cpp \
src/singletons/loggingmanager.cpp \ src/singletons/loggingmanager.cpp \
src/singletons/pathmanager.cpp \ src/singletons/pathmanager.cpp \
src/singletons/resourcemanager.cpp \ src/singletons/resourcemanager.cpp \
@ -251,6 +252,7 @@ HEADERS += \
src/singletons/emotemanager.hpp \ src/singletons/emotemanager.hpp \
src/singletons/fontmanager.hpp \ src/singletons/fontmanager.hpp \
src/singletons/helper/chatterinosetting.hpp \ src/singletons/helper/chatterinosetting.hpp \
src/singletons/helper/giftimer.hpp \
src/util/completionmodel.hpp \ src/util/completionmodel.hpp \
src/singletons/helper/loggingchannel.hpp \ src/singletons/helper/loggingchannel.hpp \
src/singletons/helper/moderationaction.hpp \ src/singletons/helper/moderationaction.hpp \

View file

@ -125,7 +125,7 @@ void Image::loadImage()
if (this->allFrames.size() > 1) { if (this->allFrames.size() > 1) {
if (!this->animated) { if (!this->animated) {
util::postToThread([this] { util::postToThread([this] {
getApp()->emotes->getGifUpdateSignal().connect([=]() { getApp()->emotes->gifTimer.signal.connect([=]() {
this->gifUpdateTimout(); this->gifUpdateTimout();
}); // For some reason when Boost signal is in }); // For some reason when Boost signal is in
// thread scope and thread deletes the signal // thread scope and thread deletes the signal

View file

@ -4,8 +4,6 @@
#include "messages/image.hpp" #include "messages/image.hpp"
#include "util/urlfetch.hpp" #include "util/urlfetch.hpp"
#define TWITCH_EMOTE_TEMPLATE "https://static-cdn.jtvnw.net/emoticons/v1/{id}/{scale}"
namespace chatterino { namespace chatterino {
namespace providers { namespace providers {
namespace bttv { namespace bttv {

View file

@ -1,22 +1,10 @@
#include "emotemanager.hpp" #include "singletons/emotemanager.hpp"
#include "application.hpp" #include "application.hpp"
#include "common.hpp" #include "common.hpp"
#include "singletons/settingsmanager.hpp" #include "controllers/accounts/accountcontroller.hpp"
#include "singletons/windowmanager.hpp"
#include "util/urlfetch.hpp"
#include <QDebug>
#include <QFile> #include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <memory>
using namespace chatterino::providers::twitch; using namespace chatterino::providers::twitch;
using namespace chatterino::messages; using namespace chatterino::messages;
@ -41,6 +29,8 @@ void EmoteManager::initialize()
this->loadEmojis(); this->loadEmojis();
this->bttv.loadGlobalEmotes(); this->bttv.loadGlobalEmotes();
this->ffz.loadGlobalEmotes(); this->ffz.loadGlobalEmotes();
this->gifTimer.initialize();
} }
util::EmoteMap &EmoteManager::getChatterinoEmotes() util::EmoteMap &EmoteManager::getChatterinoEmotes()
@ -234,35 +224,6 @@ util::EmoteData EmoteManager::getCheerImage(long long amount, bool animated)
return util::EmoteData(); return util::EmoteData();
} }
pajlada::Signals::NoArgSignal &EmoteManager::getGifUpdateSignal()
{
if (!this->gifUpdateTimerInitiated) {
auto app = getApp();
this->gifUpdateTimerInitiated = true;
this->gifUpdateTimer.setInterval(30);
this->gifUpdateTimer.start();
app->settings->enableGifAnimations.connect([this](bool enabled, auto) {
if (enabled) {
this->gifUpdateTimer.start();
} else {
this->gifUpdateTimer.stop();
}
});
QObject::connect(&this->gifUpdateTimer, &QTimer::timeout, [this] {
this->gifUpdateTimerSignal.invoke();
// fourtf:
auto app = getApp();
app->windows->repaintGifEmotes();
});
}
return this->gifUpdateTimerSignal;
}
} // namespace singletons } // namespace singletons
} // namespace chatterino } // namespace chatterino

View file

@ -8,6 +8,7 @@
#include "providers/ffz/ffzemotes.hpp" #include "providers/ffz/ffzemotes.hpp"
#include "providers/twitch/twitchemotes.hpp" #include "providers/twitch/twitchemotes.hpp"
#include "signalvector.hpp" #include "signalvector.hpp"
#include "singletons/helper/giftimer.hpp"
#include "util/concurrentmap.hpp" #include "util/concurrentmap.hpp"
#include "util/emotemap.hpp" #include "util/emotemap.hpp"
@ -16,7 +17,6 @@
#include <QRegularExpression> #include <QRegularExpression>
#include <QString> #include <QString>
#include <QTimer> #include <QTimer>
#include <pajlada/signals/signal.hpp>
namespace chatterino { namespace chatterino {
namespace singletons { namespace singletons {
@ -32,6 +32,8 @@ public:
providers::bttv::BTTVEmotes bttv; providers::bttv::BTTVEmotes bttv;
providers::ffz::FFZEmotes ffz; providers::ffz::FFZEmotes ffz;
GIFTimer gifTimer;
void initialize(); void initialize();
util::EmoteMap &getChatterinoEmotes(); util::EmoteMap &getChatterinoEmotes();
@ -39,9 +41,8 @@ public:
util::EmoteData getCheerImage(long long int amount, bool animated); util::EmoteData getCheerImage(long long int amount, bool animated);
pajlada::Signals::NoArgSignal &getGifUpdateSignal();
// Bit badge/emotes? // Bit badge/emotes?
// TODO: Move to twitch emote provider
util::ConcurrentMap<QString, messages::Image *> miscImageCache; util::ConcurrentMap<QString, messages::Image *> miscImageCache;
private: private:
@ -68,10 +69,6 @@ public:
/// Chatterino emotes /// Chatterino emotes
util::EmoteMap _chatterinoEmotes; util::EmoteMap _chatterinoEmotes;
pajlada::Signals::NoArgSignal gifUpdateTimerSignal;
QTimer gifUpdateTimer;
bool gifUpdateTimerInitiated = false;
}; };
} // namespace singletons } // namespace singletons

View file

@ -0,0 +1,31 @@
#include "singletons/helper/giftimer.hpp"
#include "application.hpp"
#include "singletons/settingsmanager.hpp"
#include "singletons/windowmanager.hpp"
namespace chatterino {
namespace singletons {
void GIFTimer::initialize()
{
this->timer.setInterval(30);
getApp()->settings->enableGifAnimations.connect([this](bool enabled, auto) {
if (enabled) {
this->timer.start();
} else {
this->timer.stop();
}
});
QObject::connect(&this->timer, &QTimer::timeout, [this] {
this->signal.invoke();
// fourtf:
auto app = getApp();
app->windows->repaintGifEmotes();
});
}
} // namespace singletons
} // namespace chatterino

View file

@ -0,0 +1,21 @@
#pragma once
#include <QTimer>
#include <pajlada/signals/signal.hpp>
namespace chatterino {
namespace singletons {
class GIFTimer
{
public:
void initialize();
pajlada::Signals::NoArgSignal signal;
private:
QTimer timer;
};
} // namespace singletons
} // namespace chatterino