/** @file * @author Edouard DUPIN * @copyright 2016, Edouard DUPIN, all right reserved * @license GPL v3 (see license file) */ #pragma once #include #include #include #include #include #include #include namespace appl { class ClientProperty { public: std::string fromUser; std::string toUser; std::string pass; std::string address; uint16_t port; zeus::Client connection; void connect(); void disconnect(); }; class ElementProperty { public: std::mutex m_mutex; uint32_t m_id; //!< Remote Id of the Media bool m_metadataUpdated; //!< Check value to know when metadata is getted (like thumb ...) egami::Image m_thumb; //!< simple image describing the element std::string m_title; //!< Title of the Element std::string m_description; //!< Description of the element std::string m_serie; //!< Name of the serie or empty std::string m_episode; //!< Id of the Episode or empty std::string m_saison; //!< id of the saison or empty std::string m_mineType; //!< mine type: video/audio/image/... // TODO: float m_globalNote; //!< note over [0,0..1,0] // TODO: int32_t m_countPersonalView; //!< number of view this media // TODO: int64_t m_globalPersonalView; //!< number of time this media has been viewed }; class ElementDisplayed { public: ememory::SharedPtr m_property; int32_t m_idCurentElement; etk::Color m_bgColor; vec2 m_pos; vec2 m_size; protected: ewol::compositing::Image m_image; ewol::compositing::Text m_text; ewol::compositing::Drawing m_draw; public: void draw() { m_draw.draw(); m_image.draw(); m_text.draw(); } void generateDisplay(vec2 _startPos, vec2 _size); }; namespace widget { class ListViewer; using ListViewerShared = ememory::SharedPtr; using ListViewerWeak = ememory::WeakPtr; class ListViewer : public ewol::widget::WidgetScrolled { protected: ewol::compositing::Text m_text; public: esignal::Signal signalSelect; //!< when select a media to view protected: ememory::SharedPtr m_clientProp; //!< Generic entrypoint on the Client protected: std::vector> m_listElement; //!< list of all element getted in the remote access std::vector> m_listDisplay; //!< list of element in the current local display protected: //! @brief constructor ListViewer(); void init() override; public: DECLARE_WIDGET_FACTORY(ListViewer, "ListViewer"); //! @brief destructor virtual ~ListViewer(); public: void onDraw() override; void onRegenerateDisplay() override; public: void setClientProperty(ememory::SharedPtr _prop) { m_clientProp = _prop; } void searchElements(std::string _filter); bool onEventInput(const ewol::event::Input& _event) override; }; } }