comparison src/gui/window.cc @ 236:4d461ef7d424

HUGE UPDATE: convert build system to autotools why? because cmake sucks :)
author Paper <mrpapersonic@gmail.com>
date Fri, 19 Jan 2024 00:24:02 -0500
parents ff0061e75f0f
children a7d0d543b334
comparison
equal deleted inserted replaced
235:593108b3d555 236:4d461ef7d424
91 for (const auto& file : files) { 91 for (const auto& file : files) {
92 anitomy::Anitomy anitomy; 92 anitomy::Anitomy anitomy;
93 anitomy.Parse(Strings::ToWstring(file)); 93 anitomy.Parse(Strings::ToWstring(file));
94 94
95 const auto& elements = anitomy.elements(); 95 const auto& elements = anitomy.elements();
96 96 const std::string title = Strings::ToUtf8String(elements.get(anitomy::kElementAnimeTitle));
97 int id = Anime::db.GetAnimeFromTitle(Strings::ToUtf8String(elements.get(anitomy::kElementAnimeTitle))); 97 std::cout << title << std::endl;
98
99 int id = Anime::db.GetAnimeFromTitle(title);
98 if (id <= 0) 100 if (id <= 0)
99 continue; 101 continue;
100 102
101 page->SetPlaying(Anime::db.items[id], elements); 103 page->SetPlaying(Anime::db.items[id], elements);
102 break; 104 break;
158 } 160 }
159 161
160 void MainWindow::CreateBars() { 162 void MainWindow::CreateBars() {
161 QMenuBar* menubar = new QMenuBar(this); 163 QMenuBar* menubar = new QMenuBar(this);
162 QMenu* folder_menu; /* this is used twice, so we declare it here */ 164 QMenu* folder_menu; /* this is used twice, so we declare it here */
165 QAction* sync_action;
163 166
164 { 167 {
165 /* File */ 168 /* File */
166 QMenu* menu = menubar->addMenu(tr("&File")); 169 QMenu* menu = menubar->addMenu(tr("&File"));
167 170
229 { 232 {
230 /* Services */ 233 /* Services */
231 QMenu* menu = menubar->addMenu(tr("&Services")); 234 QMenu* menu = menubar->addMenu(tr("&Services"));
232 { 235 {
233 { 236 {
234 QAction* action = menu->addAction(tr("Synchronize &list"), [this] { AsyncSynchronize(stack.get()); }); 237 sync_action = menu->addAction(tr("Synchronize &list"));
235 action->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_S)); 238
239 connect(sync_action, &QAction::triggered, this, [this, sync_action]{
240 AsyncSynchronize(sync_action, stack.get());
241 });
242
243 sync_action->setIcon(QIcon(":/icons/24x24/arrow-circle-double-135.png"));
244 sync_action->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_S));
236 } 245 }
237 246
238 // menu->addSeparator(); 247 // menu->addSeparator();
239 // 248 //
240 // { 249 // {
298 307
299 { 308 {
300 QAction* action = menu->addAction(tr("&Settings"), [this] { 309 QAction* action = menu->addAction(tr("&Settings"), [this] {
301 SettingsDialog dialog(this); 310 SettingsDialog dialog(this);
302 dialog.exec(); 311 dialog.exec();
312 CreateBars();
303 }); 313 });
304 action->setMenuRole(QAction::PreferencesRole); 314 action->setMenuRole(QAction::PreferencesRole);
305 } 315 }
306 } 316 }
307 317
406 } 416 }
407 417
408 { 418 {
409 /* Toolbar */ 419 /* Toolbar */
410 QToolBar* toolbar = new QToolBar(this); 420 QToolBar* toolbar = new QToolBar(this);
411 toolbar->addAction(QIcon(":/icons/24x24/arrow-circle-double-135.png"), tr("&Synchronize"), 421 toolbar->addAction(sync_action);
412 [this] { AsyncSynchronize(stack.get()); });
413 422
414 toolbar->addSeparator(); 423 toolbar->addSeparator();
415 424
416 { 425 {
417 QToolButton* button = new QToolButton(toolbar); 426 QToolButton* button = new QToolButton(toolbar);
463 472
464 toolbar->addSeparator(); 473 toolbar->addSeparator();
465 toolbar->addAction(QIcon(":/icons/24x24/gear.png"), tr("S&ettings"), [this] { 474 toolbar->addAction(QIcon(":/icons/24x24/gear.png"), tr("S&ettings"), [this] {
466 SettingsDialog dialog(this); 475 SettingsDialog dialog(this);
467 dialog.exec(); 476 dialog.exec();
477 CreateBars();
468 }); 478 });
469 addToolBar(toolbar); 479 addToolBar(toolbar);
470 } 480 }
471 } 481 }
472 482
473 void MainWindow::SetActivePage(QWidget* page) { 483 void MainWindow::SetActivePage(QWidget* page) {
474 this->setCentralWidget(page); 484 this->setCentralWidget(page);
475 } 485 }
476 486
477 void MainWindow::AsyncSynchronize(QStackedWidget* stack) { 487 void MainWindow::AsyncSynchronize(QAction* action, QStackedWidget* stack) {
478 if (session.config.service == Anime::Services::NONE) { 488 if (session.config.service == Anime::Services::NONE) {
479 QMessageBox msg; 489 QMessageBox msg;
480 msg.setWindowTitle(tr("Error synchronizing with service!")); 490 msg.setWindowTitle(tr("Error synchronizing with service!"));
481 msg.setText(tr("It seems you haven't yet selected a service to use.")); 491 msg.setText(tr("It seems you haven't yet selected a service to use."));
482 msg.setInformativeText(tr("Would you like to select one now?")); 492 msg.setInformativeText(tr("Would you like to select one now?"));
486 if (ret == QMessageBox::Yes) { 496 if (ret == QMessageBox::Yes) {
487 SettingsDialog dialog; 497 SettingsDialog dialog;
488 dialog.exec(); 498 dialog.exec();
489 } 499 }
490 } 500 }
491 QThreadPool::globalInstance()->start([stack] { 501
502 QThreadPool::globalInstance()->start([stack, action] {
503 action->setEnabled(false);
492 Services::Synchronize(); 504 Services::Synchronize();
493 reinterpret_cast<AnimeListPage*>(stack->widget(static_cast<int>(Pages::ANIME_LIST)))->Refresh(); 505 reinterpret_cast<AnimeListPage*>(stack->widget(static_cast<int>(Pages::ANIME_LIST)))->Refresh();
506 action->setEnabled(true);
494 }); 507 });
495 } 508 }
496 509
497 void MainWindow::RetranslateUI() { 510 void MainWindow::RetranslateUI() {
498 /* This kinda sucks but nobody's really going to be changing 511 /* This kinda sucks but nobody's really going to be changing
532 void MainWindow::closeEvent(QCloseEvent* event) { 545 void MainWindow::closeEvent(QCloseEvent* event) {
533 session.config.Save(); 546 session.config.Save();
534 Anime::db.SaveDatabaseToDisk(); 547 Anime::db.SaveDatabaseToDisk();
535 event->accept(); 548 event->accept();
536 } 549 }
537
538 #include "gui/moc_window.cpp"