/* Based up Neutrino-GUI - Tuxbox-Project Copyright (C) 2001 by Steffen Hehn 'McClean' Copyright (C) 2013, M. Liebmann 'micha-bbg' Copyright (C) 2013, Thilo Graf 'dbt' License: GPL This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include using namespace std; CBuildInfo::CBuildInfo() : CComponentsWindow(1, 1, 700, 500, LOCALE_BUILDINFO_MENU, NEUTRINO_ICON_INFO) { initVarBuildInfo(); } //init all var members void CBuildInfo::initVarBuildInfo() { x = frameBuffer->getScreenWidth(true)/2 - width/2; y = frameBuffer->getScreenHeight(true)/2 -height/2; append_v_offset = 1; font = NULL; setWindowHeaderButtons(CComponentsHeader::CC_BTN_MENU | CComponentsHeader::CC_BTN_EXIT); InitInfoItems(); shadow = true; } CBuildInfo::~CBuildInfo() { cleanCCForm(); } int CBuildInfo::exec(CMenuTarget* parent, const string & /*actionKey*/) { int res = menu_return::RETURN_REPAINT; if (parent) parent->hide(); //exit if no informations available if (!HasData()){ return res; } //paint window if (!is_painted) paint(); neutrino_msg_t msg; while (1) { neutrino_msg_data_t data; uint64_t timeoutEnd = CRCInput::calcTimeoutEnd_MS(100); g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd ); if(msg == CRCInput::RC_setup) { res = menu_return::RETURN_EXIT_ALL; break; } else if((msg == CRCInput::RC_sat) || (msg == CRCInput::RC_favorites)) { g_RCInput->postMsg (msg, 0); res = menu_return::RETURN_EXIT_ALL; break; } else if (msg <= CRCInput::RC_MaxRC){ break; } if ( msg > CRCInput::RC_MaxRC && msg != CRCInput::RC_timeout){ CNeutrinoApp::getInstance()->handleMsg( msg, data ); } } //hide window hide(); return res; } void CBuildInfo::setFontType(Font* font_text) { if (font_text == NULL) return; font = font_text; InitInfoItems(); } bool CBuildInfo::HasData() { v_info.clear(); #ifdef USED_COMPILER build_info_t compiler = {BI_TYPE_ID_USED_COMPILER, LOCALE_BUILDINFO_COMPILED_WITH, USED_COMPILER}; v_info.push_back(compiler); #endif #ifdef USED_CXXFLAGS string cxxflags = USED_CXXFLAGS; cxxflags = trim(cxxflags); // Remove double spaces size_t pos = cxxflags.find(" "); while (pos != string::npos) { cxxflags.erase(pos, 1); pos = cxxflags.find(" ", pos); } build_info_t flags = {BI_TYPE_ID_USED_CXXFLAGS, LOCALE_BUILDINFO_COMPILER_FLAGS, cxxflags}; v_info.push_back(flags); #endif #ifdef USED_BUILD build_info_t build = {BI_TYPE_ID_USED_BUILD , LOCALE_BUILDINFO_COMPILED_ON, USED_BUILD}; v_info.push_back(build); #endif CComponentsText utext; build_info_t kernel = {BI_TYPE_ID_USED_KERNEL, LOCALE_BUILDINFO_KERNEL, utext.getTextFromFile("/proc/version")}; v_info.push_back(kernel); #if 0 CConfigFile data ('\t'); data.loadConfig("/.version"); build_info_t creator = {BI_TYPE_ID_CREATOR, LOCALE_BUILDINFO_CREATOR, data.getString("creator", "n/a")}; v_info.push_back(creator); #endif if (v_info.empty()){ DisplayInfoMessage("No Informations available. Please report!"); return false; } return true; } void CBuildInfo::InitInfoItems() { //get and checkup required informations if (!HasData()) return; //ensure a clean body ccw_body->clearCCItems(); //define size and position int x_info = 10; int h_info = ccw_body->getHeight()/v_info.size(); //default height int w_info = width-2*x_info; //init info texts for(size_t i=0; igetText(v_info[i].caption), v_info[i].info_text); info->setLabelAndTextFont(font); info->setTextModes(CTextBox::TOP , CTextBox::AUTO_HIGH | CTextBox::TOP | CTextBox::AUTO_LINEBREAK_NO_BREAKCHARS); info->doPaintBg(false); ccw_body->addCCItem(info); } } // This allows to retrieve information about build infos. // Use parameter 'type_info' to get specific information. build_info_t CBuildInfo::getInfo(const info_type_id_t& type_id) { for(size_t i=0; i