view include/gui/widgets/anime_info.h @ 406:31ce85df55a8 default tip

filesystem: add mac os x directory watcher this code is incredibly stinky tbh we should probably be using C++ threads everywhere else just because they are SO much easier to code for than the shitty Qt threads API
author Paper <paper@tflc.us>
date Mon, 19 Jan 2026 22:48:56 -0500
parents 1e5d922fe82b
children
line wrap: on
line source

#ifndef MINORI_GUI_WIDGETS_ANIME_INFO_H_
#define MINORI_GUI_WIDGETS_ANIME_INFO_H_

#include <QWidget>
#include <QThread>
#include "gui/widgets/text.h"

#include <mutex>
#include <queue>

namespace Anime {
class Anime;
}

class AnimeInfoWidgetGetMetadataThread final : public QThread {
	Q_OBJECT

public:
	AnimeInfoWidgetGetMetadataThread(QObject* parent = nullptr);

	void AddToQueue(int id);

signals:
	void NeedRefresh(int id);

protected:
	void run() override;

private:
	std::mutex queue_mutex_;
	std::queue<int> queue_;
};

class AnimeInfoWidget final : public QWidget {
	Q_OBJECT

public:
	AnimeInfoWidget(QWidget* parent = nullptr);
	AnimeInfoWidget(const Anime::Anime& anime, QWidget* parent = nullptr);
	~AnimeInfoWidget();
	void SetAnime(const Anime::Anime& anime);

protected:
	void RefreshGenres(const Anime::Anime& anime);

private:
	TextWidgets::OneLineSection _title;
	TextWidgets::LabelledSection _details;
	TextWidgets::SelectableSection _synopsis;

	int id_ = 0;
};

#endif // MINORI_GUI_WIDGETS_ANIME_INFO_H_