Mercurial > minori
diff src/gui/pages/anime_list.cc @ 409:8d06825d96d1
library: refresh in a separate thread
this is fugly but it works
| author | Paper <paper@tflc.us> |
|---|---|
| date | Thu, 02 Apr 2026 00:18:56 -0400 |
| parents | 2f4dc1580b84 |
| children |
line wrap: on
line diff
--- a/src/gui/pages/anime_list.cc Wed Jan 21 11:35:32 2026 -0500 +++ b/src/gui/pages/anime_list.cc Thu Apr 02 00:18:56 2026 -0400 @@ -468,6 +468,7 @@ QKeySequence(QKeySequence::Refresh)); if (path) { + /* This is really dumb. */ menu->addSeparator(); { @@ -482,52 +483,36 @@ const int progress = anime->GetUserProgress(); const int episodes = anime->GetEpisodes(); - // I think this is right? + /* I think this is right? */ if (progress > 0) { - menu->addAction(tr("Play last episode (#%1)").arg(progress), [this, anime, progress] { - const int id = anime->GetId(); - - if (Library::db.items.find(id) == Library::db.items.end() || - Library::db.items[id].find(progress) == Library::db.items[id].end()) - return; - - QDesktopServices::openUrl( - QUrl::fromLocalFile(Strings::ToQString(Library::db.items[id][progress].u8string()))); - }); + std::optional<std::filesystem::path> x = Library::db.GetAnimeEpisodePath(anime->GetId(), progress - 1); + if (x) + menu->addAction(tr("Play last episode (#%1)").arg(progress - 1), [this, x] { + QDesktopServices::openUrl( + QUrl::fromLocalFile(Strings::ToQString(x.value().u8string()))); + }); } if (progress < episodes) { - menu->addAction( - tr("Play next episode (#%1)").arg(progress + 1), - [this, anime, progress] { - const int id = anime->GetId(); - - if (Library::db.items.find(id) == Library::db.items.end() || - Library::db.items[id].find(progress + 1) == Library::db.items[id].end()) - return; - - QDesktopServices::openUrl( - QUrl::fromLocalFile(Strings::ToQString(Library::db.items[id][progress + 1].u8string()))); - }, - QKeySequence(Qt::CTRL | Qt::Key_N)); + std::optional<std::filesystem::path> x = Library::db.GetAnimeEpisodePath(anime->GetId(), progress + 1); + if (x) + menu->addAction(tr("Play next episode (#%1)").arg(progress + 1), [this, x] { + QDesktopServices::openUrl( + QUrl::fromLocalFile(Strings::ToQString(x.value().u8string()))); + }, QKeySequence(Qt::CTRL | Qt::Key_N)); } menu->addAction( tr("Play random episode"), [this, anime, episodes] { - const int id = anime->GetId(); - std::uniform_int_distribution<int> distrib(1, episodes); const int episode = distrib(session.gen); - if (Library::db.items.find(id) == Library::db.items.end() || - Library::db.items[id].find(episode) == Library::db.items[id].end()) - return; + std::optional<std::filesystem::path> x = Library::db.GetAnimeEpisodePath(anime->GetId(), episode); - QDesktopServices::openUrl( - QUrl::fromLocalFile(Strings::ToQString(Library::db.items[id][episode].u8string()))); - }, - QKeySequence(Qt::CTRL | Qt::Key_R)); + if (x) + QDesktopServices::openUrl(QUrl::fromLocalFile(Strings::ToQString(x.value().u8string()))); + }, QKeySequence(Qt::CTRL | Qt::Key_R)); } menu->popup(QCursor::pos());
