view src/gui/pages/seasons.cc @ 258:862d0d8619f6

*: HUUUGE changes animia has been renamed to animone, so instead of thinking of a health condition, you think of a beautiful flower :) I've also edited some of the code for animone, but I have no idea if it even works or not because I don't have a mac or windows machine lying around. whoops! ... anyway, all of the changes divergent from Anisthesia are now licensed under BSD. it's possible that I could even rewrite most of the code to where I don't even have to keep the MIT license, but that's thinking too far into the future I've been slacking off on implementing the anime seasons page, mostly out of laziness. I think I'd have to create another db file specifically for the seasons anyway, this code is being pushed *primarily* because the hard drive it's on is failing! yay :)
author Paper <paper@paper.us.eu.org>
date Mon, 01 Apr 2024 02:43:44 -0400
parents fe702c8f161f
children dd211ff68b36
line wrap: on
line source

#include "gui/pages/seasons.h"

#include "core/anime_db.h"
#include "gui/widgets/anime_button.h"

#include <QFrame>
#include <QListWidget>
#include <QListWidgetItem>
#include <QMenu>
#include <QToolBar>
#include <QToolButton>
#include <QVBoxLayout>

SeasonsPage::SeasonsPage(QWidget* parent) : QWidget(parent) {
	QVBoxLayout* full_layout = new QVBoxLayout(this);

	{
		/* Toolbar */
		QToolBar* toolbar = new QToolBar(this);
		toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
		toolbar->setIconSize(QSize(16, 16));
		toolbar->setMovable(false);

		{
			{
				QAction* action = new QAction(toolbar);
				action->setIcon(QIcon(":/icons/16x16/calendar-previous.png"));
				action->setToolTip(tr("Previous season"));
				toolbar->addAction(action);
			}

			{
				QAction* action = new QAction(toolbar);
				action->setIcon(QIcon(":/icons/16x16/calendar-next.png"));
				action->setToolTip(tr("Next season"));
				toolbar->addAction(action);
			}

			toolbar->addAction(QIcon(":/icons/16x16/calendar.png"),
			                   "Fall 2024"); // this must be named the name of the season
		}

		toolbar->addSeparator();

		{ toolbar->addAction(QIcon(":/icons/16x16/arrow-circle-315.png"), tr("Refresh data")); }

		toolbar->addSeparator();

		{
			QToolButton* button = new QToolButton(toolbar);

			{
				/* links */
				QMenu* menu = new QMenu(button);
				menu->addAction("Airing status");
				menu->addAction("List status");
				menu->addAction("Type");
				button->setMenu(menu);
			}

			button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
			button->setIcon(QIcon(":/icons/16x16/category.png"));
			button->setText("Group by:");
			button->setPopupMode(QToolButton::InstantPopup);
			toolbar->addWidget(button);
		}

		{
			QToolButton* button = new QToolButton(toolbar);

			{
				/* links */
				QMenu* menu = new QMenu(button);
				menu->addAction("Airing date");
				menu->addAction("Episodes");
				menu->addAction("Popularity");
				menu->addAction("Score");
				menu->addAction("Title");
				button->setMenu(menu);
			}

			button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
			button->setIcon(QIcon(":/icons/16x16/sort-quantity-descending.png"));
			button->setText("Sort by:");
			button->setPopupMode(QToolButton::InstantPopup);
			toolbar->addWidget(button);
		}

		{
			QToolButton* button = new QToolButton(toolbar);

			{
				/* links */
				QMenu* menu = new QMenu(button);
				menu->addAction("Images");
				menu->addAction("Details");
				button->setMenu(menu);
			}

			button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
			button->setIcon(QIcon(":/icons/16x16/ui-scroll-pane-detail.png"));
			button->setText("View:");
			button->setPopupMode(QToolButton::InstantPopup);
			toolbar->addWidget(button);
		}

		full_layout->addWidget(toolbar);
	}

	{
		QFrame* line = new QFrame(this);
		line->setFrameShape(QFrame::HLine);
		line->setFrameShadow(QFrame::Sunken);
		line->setLineWidth(1);
		full_layout->addWidget(line);
	}

	{
		buttons = new QListWidget(this);
		buttons->setFlow(QListView::LeftToRight);
		buttons->setWrapping(true);
		buttons->setContentsMargins(4, 4, 4, 4);
		buttons->setSpacing(2);
		buttons->setResizeMode(QListView::Adjust);

		{
			QListWidgetItem* item = new QListWidgetItem;
			AnimeButton* button = new AnimeButton(this);
			button->SetAnime(Anime::db.items[Anime::db.GetAnimeFromTitle("Another")]);
			item->setSizeHint(button->sizeHint());
			buttons->addItem(item);
			buttons->setItemWidget(item, button);
		}
		{
			QListWidgetItem* item = new QListWidgetItem;
			AnimeButton* button = new AnimeButton(this);
			button->SetAnime(Anime::db.items[Anime::db.GetAnimeFromTitle("Another")]);
			item->setSizeHint(button->sizeHint());
			buttons->addItem(item);
			buttons->setItemWidget(item, button);
		}
		{
			QListWidgetItem* item = new QListWidgetItem;
			AnimeButton* button = new AnimeButton(this);
			button->SetAnime(Anime::db.items[Anime::db.GetAnimeFromTitle("Another")]);
			item->setSizeHint(button->sizeHint());
			buttons->addItem(item);
			buttons->setItemWidget(item, button);
		}
		{
			QListWidgetItem* item = new QListWidgetItem;
			AnimeButton* button = new AnimeButton(this);
			button->SetAnime(Anime::db.items[Anime::db.GetAnimeFromTitle("Another")]);
			item->setSizeHint(button->sizeHint());
			buttons->addItem(item);
			buttons->setItemWidget(item, button);
		}

		full_layout->addWidget(buttons);
	}
}