/** @file * @author Edouard DUPIN * @copyright 2016, Edouard DUPIN, all right reserved * @license GPL v3 (see license file) */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static std::string g_baseDBName = "USERDATA:config.json"; void appl::Windows::store_db() { APPL_DEBUG("Store database [START]"); ejson::Document database; database.add("login", ejson::String(m_login)); database.add("pass", ejson::String(m_password)); bool retGenerate = database.storeSafe(g_baseDBName); APPL_ERROR("Store database [STOP] : " << (g_baseDBName) << " ret = " << retGenerate); } void appl::Windows::load_db() { ejson::Document database; bool ret = database.load(g_baseDBName); if (ret == false) { APPL_WARNING(" ==> LOAD error"); } m_login = database["login"].toString().get(); m_password = database["pass"].toString().get(); } appl::Windows::Windows(): m_id(0) { addObjectType("appl::Windows"); propertyTitle.setDirectCheck(std::string("sample ") + PROJECT_NAME); } void appl::Windows::init() { ewol::widget::Windows::init(); load_db(); std::string composition = std::string(""); composition += "\n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += " \n"; composition += "\n"; m_composer = ewol::widget::Composer::create(); if (m_composer == nullptr) { APPL_CRITICAL(" An error occured ... in the windows creatrion ..."); return; } m_composer->loadFromString(composition); setSubWidget(m_composer); subBind(ewol::widget::Button, "bt-previous", signalPressed, sharedFromThis(), &appl::Windows::onCallbackPrevious); subBind(ewol::widget::Button, "bt-play", signalValue, sharedFromThis(), &appl::Windows::onCallbackPlay); subBind(ewol::widget::Button, "bt-next", signalPressed, sharedFromThis(), &appl::Windows::onCallbackNext); subBind(ewol::widget::Button, "bt-back", signalPressed, sharedFromThis(), &appl::Windows::onCallbackBack); subBind(appl::widget::VideoDisplay, "displayer", signalFps, sharedFromThis(), &appl::Windows::onCallbackFPS); subBind(appl::widget::VideoDisplay, "displayer", signalPosition, sharedFromThis(), &appl::Windows::onCallbackPosition); subBind(ewol::widget::Slider, "progress-bar", signalChange, sharedFromThis(), &appl::Windows::onCallbackSeekRequest); subBind(ewol::widget::Entry, "connect-login", signalModify, sharedFromThis(), &appl::Windows::onCallbackConnectLogin); subBind(ewol::widget::Entry, "connect-password", signalModify, sharedFromThis(), &appl::Windows::onCallbackConnectPassword); subBind(ewol::widget::Button, "connect-bt", signalPressed, sharedFromThis(), &appl::Windows::onCallbackConnectConnect); subBind(ewol::widget::Button, "bt-film-picture", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectFilms); subBind(ewol::widget::Button, "bt-film-draw", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectAnnimation); subBind(ewol::widget::Button, "bt-tv-picture", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectTVShow); subBind(ewol::widget::Button, "bt-tv-draw", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectTvAnnimation); subBind(ewol::widget::Button, "bt-theater", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectTeather); subBind(ewol::widget::Button, "bt-one-man-show", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectOneManShow); subBind(ewol::widget::Button, "bt-courses", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectSourses); propertySetOnWidgetNamed("connect-login", "value", m_login); propertySetOnWidgetNamed("connect-password", "value", m_password); } void appl::Windows::onCallbackPrevious() { m_id--; if (m_id < 0) { m_id = m_list.size()-1; } ememory::SharedPtr tmpDisp = ememory::dynamicPointerCast(getSubObjectNamed("displayer")); if (tmpDisp != nullptr) { // stop previous (if needed) tmpDisp->stop(); // Set new file: tmpDisp->setFile(m_list[m_id]); tmpDisp->play(); echrono::Duration time = tmpDisp->getDuration(); APPL_DEBUG("duration = " << time << " " << etk::to_string(time.toSeconds())); propertySetOnWidgetNamed("progress-bar", "value", "0"); propertySetOnWidgetNamed("progress-bar", "max", etk::to_string(time.toSeconds())); } } void appl::Windows::onCallbackBack() { } void appl::Windows::onCallbackPlay(const bool& _isPressed) { ememory::SharedPtr tmpDisp = ememory::dynamicPointerCast(getSubObjectNamed("displayer")); if (tmpDisp == nullptr) { return; } if (_isPressed == true) { tmpDisp->play(); } else { tmpDisp->pause(); } } void appl::Windows::onCallbackNext() { m_id++; if (m_id >= m_list.size()) { m_id = 0; } ememory::SharedPtr tmpDisp = ememory::dynamicPointerCast(getSubObjectNamed("displayer")); if (tmpDisp != nullptr) { // stop previous (if needed) tmpDisp->stop(); // Set new file: tmpDisp->setFile(m_list[m_id]); tmpDisp->play(); echrono::Duration time = tmpDisp->getDuration(); APPL_DEBUG("duration = " << time << " " << etk::to_string(time.toSeconds())); propertySetOnWidgetNamed("progress-bar", "value", "0"); propertySetOnWidgetNamed("progress-bar", "max", etk::to_string(time.toSeconds())); } } void appl::Windows::onCallbackFPS(const int32_t& _fps) { APPL_DEBUG("FPS = " << _fps); propertySetOnWidgetNamed("lb-fps", "value", "FPS=" + etk::to_string(_fps) + ""); } void appl::Windows::addFile(const std::string& _file) { APPL_DEBUG("Add file : " << _file); m_list.push_back(_file); if (m_list.size() == 1) { m_id = 0; ememory::SharedPtr tmpDisp = ememory::dynamicPointerCast(getSubObjectNamed("displayer")); if (tmpDisp != nullptr) { tmpDisp->setFile(m_list[m_id]); echrono::Duration time = tmpDisp->getDuration(); APPL_DEBUG("duration = " << time << " " << etk::to_string(time.toSeconds())); propertySetOnWidgetNamed("progress-bar", "value", "0"); propertySetOnWidgetNamed("progress-bar", "max", etk::to_string(time.toSeconds())); } } } void appl::Windows::onCallbackPosition(const echrono::Duration& _time) { APPL_DEBUG("time = " << _time); propertySetOnWidgetNamed("lb-time", "value", "" + etk::to_string(_time) + ""); propertySetOnWidgetNamed("progress-bar", "value", etk::to_string(_time.toSeconds())); } void appl::Windows::onCallbackSeekRequest(const float& _value) { ememory::SharedPtr tmpDisp = ememory::dynamicPointerCast(getSubObjectNamed("displayer")); if (tmpDisp != nullptr) { tmpDisp->seek(echrono::Duration(_value)); } } void appl::Windows::onCallbackConnectLogin(const std::string& _value) { m_login = _value; store_db(); } void appl::Windows::onCallbackConnectPassword(const std::string& _value) { m_password = _value; store_db(); } void appl::Windows::onCallbackConnectConnect() { APPL_INFO("Connect with : '" << m_login << "' ... '" << m_password << "'"); // check connection is correct: zeus::Client client1; // separate loggin and IP adress ... std::string login; std::vector listElem = etk::split(m_login, '~'); login = listElem[0]; if (listElem.size() == 1) { // connnect on local host ... nothing to do } else { std::vector listElem2 = etk::split(listElem[0], ':'); client1.propertyIp.set(listElem2[0]); if (listElem2.size() >= 1) { client1.propertyPort.set(etk::string_to_uint32_t(listElem2[1])); } } bool ret = client1.connect(login, m_password); if (ret == false) { APPL_ERROR(" ==> NOT Authentify to '" << login << "'"); ewol::tools::message::displayError("Can not connect the server with
'" + login + "'"); } else { APPL_INFO(" ==> Authentify with '" << login << "'"); ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list"); } } void appl::Windows::onCallbackSelectFilms() { ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("ws-name-list-viewer", "filter", "film"); } void appl::Windows::onCallbackSelectAnnimation() { ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("ws-name-list-viewer", "filter", "annimation"); } void appl::Windows::onCallbackSelectTVShow() { ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("ws-name-list-viewer", "filter", "tv-show"); } void appl::Windows::onCallbackSelectTvAnnimation() { ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("ws-name-list-viewer", "filter", "tv-annimation"); } void appl::Windows::onCallbackSelectTeather() { ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("ws-name-list-viewer", "filter", "teather"); } void appl::Windows::onCallbackSelectOneManShow() { ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("ws-name-list-viewer", "filter", "one-man"); } void appl::Windows::onCallbackSelectSourses() { ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("ws-name-list-viewer", "filter", "courses"); }