MainWindow.hpp 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include "VideoModel.hpp"
  3. #include <gtkmm/window.h>
  4. #include <gtkmm/applicationwindow.h>
  5. #include <gtkmm/box.h>
  6. #include <gtkmm/stack.h>
  7. #include <gtkmm/stackswitcher.h>
  8. #include <gtkmm/entry.h>
  9. #include <gtkmm/button.h>
  10. #include <gtkmm/scrolledwindow.h>
  11. #include <gtkmm/listview.h>
  12. #include <gtkmm/singleselection.h>
  13. #include <giomm/liststore.h>
  14. #include <gtkmm/listitem.h>
  15. #include <gtkmm/paned.h>
  16. #include <gtkmm/menubutton.h>
  17. namespace components {
  18. // Главное окно приложения
  19. class MainWindow : public Gtk::ApplicationWindow
  20. {
  21. public:
  22. MainWindow();
  23. static MainWindow* create();
  24. protected:
  25. Gtk::Box m_layout;
  26. Gtk::Box m_head;
  27. Gtk::Stack m_body;
  28. Gtk::StackSwitcher m_stackswitcher;
  29. /// ПОИСК ///
  30. // --Виджеты--
  31. Gtk::Box m_search_layout;
  32. // Панель поиска
  33. Gtk::Box m_search_head;
  34. // Тело
  35. Gtk::Paned m_search_body;
  36. // Поле ввода запроса
  37. Gtk::Entry m_search_entry;
  38. // Кнопка поиска
  39. Gtk::Button m_search_button;
  40. // Окно прокрутки для видео
  41. Gtk::ScrolledWindow m_search_scroller;
  42. // Список видео
  43. Gtk::ListView m_search_video_list;
  44. // Список моделей видео
  45. Glib::RefPtr<Gio::ListStore<components::VideoModel>> m_video_storage;
  46. // Модель выбора
  47. Glib::RefPtr<Gtk::SingleSelection> selection_model;
  48. // --События--
  49. // Клик кнопки поиска
  50. void onSearchButtonClicked();
  51. // При создании элемента в m_video_list
  52. void onVideoSetup(const Glib::RefPtr<Gtk::ListItem>& list_item);
  53. // При записи данных в m_video_list
  54. void onVideoBind(const Glib::RefPtr<Gtk::ListItem>& list_item);
  55. // При выборе видео из списка
  56. void onVideoChanged();
  57. // --Общее--
  58. // Устанавливает боковую панель просмотра видео в обычный режим
  59. void searchSidebarRegularMode();
  60. // Устанавливает боковую панель просмотра видео в режим просмотра
  61. // информации о видео
  62. void searchSidebarVideoDetailsMode(
  63. Glib::ustring title,
  64. Glib::ustring channel_title,
  65. Glib::ustring description,
  66. std::string published_at,
  67. std::string yt_id);
  68. // Проигрывает конкретное видео
  69. void playSingleVideo(std::string yt_id);
  70. // Открывает страницу видео в YouTube
  71. void openVideoInWebBrowser(std::string yt_id);
  72. };
  73. }