Bladeren bron

Добавлена модель отображения видео 1/2

Вадим Королёв 1 jaar geleden
bovenliggende
commit
017bd4ada8
5 gewijzigde bestanden met toevoegingen van 67 en 7 verwijderingen
  1. 19 4
      src/YTMPV/MainWindow.cpp
  2. 13 2
      src/YTMPV/MainWindow.hpp
  3. 18 0
      src/YTMPV/VideoModel.cpp
  4. 16 0
      src/YTMPV/VideoModel.hpp
  5. 1 1
      src/YTMPV/meson.build

+ 19 - 4
src/YTMPV/MainWindow.cpp

@@ -3,18 +3,33 @@
 namespace components {
     
     MainWindow::MainWindow()
-    : m_btn()
+    : m_layout(Gtk::Orientation::VERTICAL)
+    , m_search_box(Gtk::Orientation::HORIZONTAL)
+    , m_search_field()
+    , m_search_btn()
+    , m_body(Gtk::Orientation::VERTICAL)
     {
         set_title("GTKYT");
         set_default_size(800, 600);
         set_icon_name("youtube");
 
-        m_btn.set_child(*(this->getButtonContents("Поиск", "find")));
-        m_btn.signal_clicked().connect(sigc::mem_fun(
+        m_search_btn.set_child(*(this->getButtonContents("Поиск", "find")));
+        m_search_btn.signal_clicked().connect(sigc::mem_fun(
             *this,
             &MainWindow::on_btn_clicked
         ));
-        set_child(m_btn);
+
+        // Searchbar
+        m_search_box.append(m_search_field);
+        m_search_box.append(m_search_btn);
+
+        // Body
+
+        // Layout
+        m_layout.append(m_search_box);
+        m_layout.append(m_body);
+        
+        set_child(m_layout);
     }
 
     MainWindow::~MainWindow()

+ 13 - 2
src/YTMPV/MainWindow.hpp

@@ -5,10 +5,13 @@
 #include <gtkmm/image.h>
 #include <gtkmm/box.h>
 #include <gtkmm/label.h>
+#include <gtkmm/entry.h>
 
 #include <glibmm/ustring.h>
 #include <giomm/icon.h>
 
+#include "VideoModel.hpp"
+
 namespace components {
     // Главное окно приложения
     class MainWindow : public Gtk::Window {
@@ -20,10 +23,18 @@ namespace components {
         // --Обработка событий--
         void on_btn_clicked();
 
-        // --Виджеты
-        Gtk::Button m_btn;  // Кнопка поиска
+        // --Виджеты--
+        Gtk::Box    m_layout;       // Главный контейнер
+        // Поиск
+        Gtk::Box    m_search_box;   // Панель поиска
+        Gtk::Entry  m_search_field; // Поле ввода запроса
+        Gtk::Button m_search_btn;   // Кнопка поиска
+        // Основное
+        Gtk::Box    m_body;         // Главное
 
         // --Общее--
+        // Модель отображения видео
+        Glib::RefPtr<Gio::ListStore<VideoModel>> m_video_store;
         // Возвращает дочерний виджет для кнопок, которым нужны иконка с текстом
         Gtk::Box* getButtonContents(Glib::ustring text, std::string icon_name);
     };

+ 18 - 0
src/YTMPV/VideoModel.cpp

@@ -0,0 +1,18 @@
+#include "VideoModel.hpp"
+
+namespace components {
+    Glib::RefPtr<VideoModel> VideoModel::create(int col_id, const Glib::ustring& col_name)
+    {
+        return Glib::make_refptr_for_instance<VideoModel>(
+            new VideoModel(
+                col_id,
+                col_name
+            )
+        );
+    }
+
+    VideoModel::VideoModel(int col_id, const Glib::ustring& col_name)
+        : m_col_id(col_id)
+        , m_col_name(col_name)
+        {}
+}

+ 16 - 0
src/YTMPV/VideoModel.hpp

@@ -0,0 +1,16 @@
+#pragma once
+#include <glibmm/ustring.h>
+#include <giomm/liststore.h>
+
+namespace components {
+    class VideoModel : public Glib::Object
+    {
+    public:
+        int m_col_id;
+        Glib::ustring m_col_name;
+        static Glib::RefPtr<VideoModel> create(int col_id, const Glib::ustring& col_name);
+
+    protected:
+        VideoModel(int col_id, const Glib::ustring& col_name);
+    };
+}

+ 1 - 1
src/YTMPV/meson.build

@@ -1,6 +1,6 @@
 ytmpv = executable(
   'ytmpv',
-  ['ytmpv.cpp', 'MainWindow.cpp'],
+  ['ytmpv.cpp', 'MainWindow.cpp', 'VideoModel.cpp'],
   link_with: [ytapi_lib, database_lib],
   include_directories: [dir_includes],
   dependencies: [glibmm_dep, curlpp_dep, json_dep, gtkmm_dep]