mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-01 09:51:13 +02:00
Merge branch 'master' of https://github.com/tuxbox-neutrino/gui-neutrino into ni/cst-next
Origin commit data
------------------
Branch: ni/coolstream
Commit: 6bfde8a3f8
Author: vanhofen <vanhofen@gmx.de>
Date: 2016-10-13 (Thu, 13 Oct 2016)
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
This commit is contained in:
@@ -609,22 +609,93 @@ int COPKGManager::showMenu()
|
|||||||
|
|
||||||
bool COPKGManager::hasOpkgSupport()
|
bool COPKGManager::hasOpkgSupport()
|
||||||
{
|
{
|
||||||
string deps[] = {"/var/lib/opkg", /*"/bin/opkg-check-config", "/bin/update-alternatives", "/share/opkg/intercept"*/};
|
|
||||||
|
|
||||||
if (find_executable(OPKG_CL).empty()) {
|
if (find_executable(OPKG_CL).empty()) {
|
||||||
dprintf(DEBUG_NORMAL, "[COPKGManager] [%s - %d]" OPKG_CL " executable not found\n", __func__, __LINE__);
|
dprintf(DEBUG_NORMAL, "[COPKGManager] [%s - %d]" OPKG_CL " executable not found\n", __func__, __LINE__);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* If directory /var/lib/opkg resp. /opt/opkg
|
||||||
|
does not exist, it is created by opkg itself */
|
||||||
|
string deps[] = {"/var/lib/opkg", /*"/bin/opkg-check-config", "/bin/update-alternatives", "/share/opkg/intercept"*/};
|
||||||
for(size_t i=0; i<sizeof(deps)/sizeof(deps[0]) ;i++){
|
for(size_t i=0; i<sizeof(deps)/sizeof(deps[0]) ;i++){
|
||||||
if(access(deps[i].c_str(), R_OK) !=0) {
|
if(access(deps[i].c_str(), R_OK) !=0) {
|
||||||
dprintf(DEBUG_NORMAL, "[COPKGManager] [%s - %d] %s not found\n", __func__, __LINE__, deps[i].c_str());
|
dprintf(DEBUG_NORMAL, "[COPKGManager] [%s - %d] %s not found\n", __func__, __LINE__, deps[i].c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string COPKGManager::getInfoDir()
|
||||||
|
{
|
||||||
|
/* /opt/opkg/... is path in patched opkg, /var/lib/opkg/... is original path */
|
||||||
|
string dirs[] = {TARGET_PREFIX"/opt/opkg/info", TARGET_PREFIX"/var/lib/opkg/info"};
|
||||||
|
for (size_t i = 0; i < sizeof(dirs) / sizeof(dirs[0]); i++) {
|
||||||
|
if (access(dirs[i].c_str(), R_OK) == 0)
|
||||||
|
return dirs[i];
|
||||||
|
}
|
||||||
|
dprintf(DEBUG_NORMAL, "[COPKGManager] [%s - %d] InfoDir not found\n", __func__, __LINE__);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
string COPKGManager::getPkgDescription(std::string pkgName, std::string pkgDesc)
|
||||||
|
{
|
||||||
|
static string infoPath;
|
||||||
|
if (infoPath.empty())
|
||||||
|
infoPath = getInfoDir();
|
||||||
|
if (infoPath.empty())
|
||||||
|
return pkgDesc;
|
||||||
|
|
||||||
|
string infoFile = infoPath + "/" + pkgName + ".control";
|
||||||
|
if (file_exists(infoFile.c_str())) {
|
||||||
|
FILE* fd = fopen(infoFile.c_str(), "r");
|
||||||
|
if (fd == NULL)
|
||||||
|
return pkgDesc;
|
||||||
|
|
||||||
|
fpos_t fz;
|
||||||
|
fseek(fd, 0, SEEK_END);
|
||||||
|
fgetpos(fd, &fz);
|
||||||
|
fseek(fd, 0, SEEK_SET);
|
||||||
|
if (fz.__pos == 0)
|
||||||
|
return pkgDesc;
|
||||||
|
|
||||||
|
char buf[512];
|
||||||
|
string package, version, description;
|
||||||
|
while (fgets(buf, sizeof(buf), fd)) {
|
||||||
|
if (buf[0] == ' ')
|
||||||
|
continue;
|
||||||
|
string line(buf);
|
||||||
|
trim(line, " ");
|
||||||
|
string tmp;
|
||||||
|
/* When pkgDesc is empty, return description only for OM_INFO */
|
||||||
|
if (!pkgDesc.empty()) {
|
||||||
|
tmp = getKeyInfo(line, "Package:", " ");
|
||||||
|
if (!tmp.empty())
|
||||||
|
package = tmp;
|
||||||
|
tmp = getKeyInfo(line, "Version:", " ");
|
||||||
|
if (!tmp.empty())
|
||||||
|
version = tmp;
|
||||||
|
}
|
||||||
|
tmp = getKeyInfo(line, "Description:", " ");
|
||||||
|
if (!tmp.empty())
|
||||||
|
description = tmp;
|
||||||
|
}
|
||||||
|
fclose(fd);
|
||||||
|
|
||||||
|
if (pkgDesc.empty())
|
||||||
|
return description;
|
||||||
|
|
||||||
|
string desc = package + " - " + version;
|
||||||
|
if (!description.empty())
|
||||||
|
desc += " - " + description;
|
||||||
|
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
return pkgDesc;
|
||||||
|
}
|
||||||
|
|
||||||
void COPKGManager::getPkgData(const int pkg_content_id)
|
void COPKGManager::getPkgData(const int pkg_content_id)
|
||||||
{
|
{
|
||||||
dprintf(DEBUG_INFO, "[COPKGManager] [%s - %d] executing %s\n", __func__, __LINE__, pkg_types[pkg_content_id].c_str());
|
dprintf(DEBUG_INFO, "[COPKGManager] [%s - %d] executing %s\n", __func__, __LINE__, pkg_types[pkg_content_id].c_str());
|
||||||
@@ -672,12 +743,16 @@ void COPKGManager::getPkgData(const int pkg_content_id)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch (pkg_content_id) {
|
switch (pkg_content_id) {
|
||||||
case OM_LIST:
|
case OM_LIST: {
|
||||||
/* do not even put "bad" packages into the list to save memory */
|
/* do not even put "bad" packages into the list to save memory */
|
||||||
if (badpackage(name))
|
if (badpackage(name))
|
||||||
continue;
|
continue;
|
||||||
pkg_map[name] = pkg(name, line, line);
|
pkg_map[name] = pkg(name, line, line);
|
||||||
|
map<string, struct pkg>::iterator it = pkg_map.find(name);
|
||||||
|
if (it != pkg_map.end())
|
||||||
|
it->second.desc = getPkgDescription(name, line);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case OM_LIST_INSTALLED: {
|
case OM_LIST_INSTALLED: {
|
||||||
map<string, struct pkg>::iterator it = pkg_map.find(name);
|
map<string, struct pkg>::iterator it = pkg_map.find(name);
|
||||||
if (it != pkg_map.end())
|
if (it != pkg_map.end())
|
||||||
@@ -722,8 +797,17 @@ string COPKGManager::getPkgInfo(const string& pkg_name, const string& pkg_key, b
|
|||||||
execCmd(pkg_types[current_status ? OM_STATUS : OM_INFO] + pkg_name, CShellWindow::QUIET);
|
execCmd(pkg_types[current_status ? OM_STATUS : OM_INFO] + pkg_name, CShellWindow::QUIET);
|
||||||
dprintf(DEBUG_INFO, "[COPKGManager] [%s - %d] [data: %s]\n", __func__, __LINE__, tmp_str.c_str());
|
dprintf(DEBUG_INFO, "[COPKGManager] [%s - %d] [data: %s]\n", __func__, __LINE__, tmp_str.c_str());
|
||||||
|
|
||||||
if (pkg_key.empty())
|
if (pkg_key.empty()) {
|
||||||
|
/* When description is empty, read data from InfoDir */
|
||||||
|
string tmp = getKeyInfo(tmp_str, "Description:", " ");
|
||||||
|
if (tmp.empty()) {
|
||||||
|
tmp = getPkgDescription(pkg_name);
|
||||||
|
if (!tmp.empty()) {
|
||||||
|
tmp_str += (string)"\nDescription: " + tmp + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
return tmp_str;
|
return tmp_str;
|
||||||
|
}
|
||||||
|
|
||||||
return getKeyInfo(tmp_str, pkg_key, ":");
|
return getKeyInfo(tmp_str, pkg_key, ":");
|
||||||
}
|
}
|
||||||
|
@@ -150,6 +150,9 @@ class COPKGManager : public CMenuTarget
|
|||||||
int doUpdate();
|
int doUpdate();
|
||||||
void handleShellOutput(std::string* cur_line, int* res, bool* ok);
|
void handleShellOutput(std::string* cur_line, int* res, bool* ok);
|
||||||
|
|
||||||
|
std::string getInfoDir();
|
||||||
|
std::string getPkgDescription(std::string pkgName, std::string pkgDesc="");
|
||||||
|
|
||||||
struct pkg {
|
struct pkg {
|
||||||
std::string name;
|
std::string name;
|
||||||
std::string version;
|
std::string version;
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
UPnP Browser (c) 2007 by Jochen Friedrich
|
UPnP Browser (c) 2007 by Jochen Friedrich
|
||||||
(c) 2009-2011,2016 Stefan Seyfried
|
(c) 2009-2011,2016 Stefan Seyfried
|
||||||
(c) 2016 Thilo Graf
|
(c) 2016 Thilo Graf
|
||||||
|
(c) 2016 Sven Hoefer
|
||||||
|
|
||||||
License: GPL
|
License: GPL
|
||||||
|
|
||||||
@@ -46,9 +47,10 @@
|
|||||||
#include <gui/components/cc.h>
|
#include <gui/components/cc.h>
|
||||||
#include <gui/widget/messagebox.h>
|
#include <gui/widget/messagebox.h>
|
||||||
#include <gui/widget/hintbox.h>
|
#include <gui/widget/hintbox.h>
|
||||||
#include <system/settings.h>
|
|
||||||
#include <gui/infoclock.h>
|
#include <gui/infoclock.h>
|
||||||
#include <gui/upnpbrowser.h>
|
#include <gui/upnpbrowser.h>
|
||||||
|
#include <system/settings.h>
|
||||||
|
#include <system/helpers.h>
|
||||||
#include <zapit/zapit.h>
|
#include <zapit/zapit.h>
|
||||||
#include <video.h>
|
#include <video.h>
|
||||||
|
|
||||||
@@ -121,8 +123,8 @@ void CUpnpBrowserGui::Init()
|
|||||||
|
|
||||||
m_header_height = _title_height;
|
m_header_height = _title_height;
|
||||||
m_footer_height = _title_height;
|
m_footer_height = _title_height;
|
||||||
m_topbox_height = _top_height*3 + 10; // topbox: 3 lines + inner offset + shadow
|
m_topbox_height = _top_height*3 + OFFSET_INNER_MID; // topbox: 3 lines + inner offset
|
||||||
m_infobox_height = _info_height*2 + 20; // infobox/timebox: 2 lines + inner offset + shadow
|
m_infobox_height = _info_height*2 + OFFSET_INNER_LARGE; // infobox/timebox: 2 lines + inner offset
|
||||||
|
|
||||||
/* From top to bottom we have:
|
/* From top to bottom we have:
|
||||||
*
|
*
|
||||||
@@ -192,8 +194,7 @@ int CUpnpBrowserGui::exec(CMenuTarget* parent, const std::string & /*actionKey*/
|
|||||||
|
|
||||||
selectDevice();
|
selectDevice();
|
||||||
|
|
||||||
if (CAudioPlayer::getInstance()->getState() != CBaseDec::STOP)
|
stopAudio();
|
||||||
CAudioPlayer::getInstance()->stop();
|
|
||||||
|
|
||||||
// Start Sectionsd
|
// Start Sectionsd
|
||||||
//NI g_Sectionsd->setPauseScanning(false);
|
//NI g_Sectionsd->setPauseScanning(false);
|
||||||
@@ -860,9 +861,8 @@ bool CUpnpBrowserGui::selectItem(std::string id)
|
|||||||
m_playid++;
|
m_playid++;
|
||||||
}
|
}
|
||||||
else if (msg == CRCInput::RC_yellow) {
|
else if (msg == CRCInput::RC_yellow) {
|
||||||
if (CAudioPlayer::getInstance()->getState() != CBaseDec::STOP)
|
|
||||||
CAudioPlayer::getInstance()->stop();
|
|
||||||
m_folderplay = false;
|
m_folderplay = false;
|
||||||
|
stopAudio();
|
||||||
}
|
}
|
||||||
else if (m_folderplay && msg == (neutrino_msg_t) CRCInput::RC_stop) {
|
else if (m_folderplay && msg == (neutrino_msg_t) CRCInput::RC_stop) {
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
@@ -878,8 +878,7 @@ bool CUpnpBrowserGui::selectItem(std::string id)
|
|||||||
}
|
}
|
||||||
else if (m_folderplay && msg == (neutrino_msg_t) CRCInput::RC_next) {
|
else if (m_folderplay && msg == (neutrino_msg_t) CRCInput::RC_next) {
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
if (CAudioPlayer::getInstance()->getState() != CBaseDec::STOP)
|
stopAudio();
|
||||||
CAudioPlayer::getInstance()->stop();
|
|
||||||
}
|
}
|
||||||
else if (msg == NeutrinoMessages::RECORD_START ||
|
else if (msg == NeutrinoMessages::RECORD_START ||
|
||||||
msg == NeutrinoMessages::ZAPTO ||
|
msg == NeutrinoMessages::ZAPTO ||
|
||||||
@@ -911,6 +910,17 @@ bool CUpnpBrowserGui::selectItem(std::string id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/*
|
||||||
|
maybe it's better to stop audio here,
|
||||||
|
because infobox and timebox will never been painted and updated
|
||||||
|
*/
|
||||||
|
if (endall)
|
||||||
|
{
|
||||||
|
stopAudio();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
delete entries;
|
delete entries;
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
m_frameBuffer->Clear();
|
m_frameBuffer->Clear();
|
||||||
@@ -951,8 +961,8 @@ void CUpnpBrowserGui::paintDevice(unsigned int _pos)
|
|||||||
unsigned int pos = m_deviceliststart + _pos;
|
unsigned int pos = m_deviceliststart + _pos;
|
||||||
if (pos == m_selecteddevice)
|
if (pos == m_selecteddevice)
|
||||||
{
|
{
|
||||||
color = COL_MENUCONTENT_TEXT_PLUS_2;
|
color = COL_MENUCONTENTSELECTED_TEXT;
|
||||||
bgcolor = COL_MENUCONTENT_PLUS_2;
|
bgcolor = COL_MENUCONTENTSELECTED_PLUS_0;
|
||||||
paintDeviceInfo();
|
paintDeviceInfo();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -965,17 +975,12 @@ void CUpnpBrowserGui::paintDevice(unsigned int _pos)
|
|||||||
if (pos >= m_devices.size())
|
if (pos >= m_devices.size())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char sNr[20];
|
std::string num = to_string(pos + 1);
|
||||||
sprintf(sNr, "%2d", pos + 1);
|
|
||||||
std::string num = sNr;
|
|
||||||
|
|
||||||
std::string name = m_devices[pos].friendlyname;
|
std::string name = m_devices[pos].friendlyname;
|
||||||
|
|
||||||
int w = g_Font[font_item]->getRenderWidth(name) + 5;
|
int w = g_Font[font_item]->getRenderWidth(name);
|
||||||
g_Font[font_item]->RenderString(m_x + 10, ypos + m_item_height, m_width - 30 - w,
|
g_Font[font_item]->RenderString(m_x + OFFSET_INNER_MID, ypos + m_item_height, m_width - 15 - OFFSET_INNER_MID - w, num, color, m_item_height);
|
||||||
num, color, m_item_height);
|
g_Font[font_item]->RenderString(m_x + m_width - 15 - OFFSET_INNER_MID - w, ypos + m_item_height, w, name, color, m_item_height);
|
||||||
g_Font[font_item]->RenderString(m_x + m_width - 15 - w, ypos + m_item_height,
|
|
||||||
w, name, color, m_item_height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUpnpBrowserGui::paintDevices()
|
void CUpnpBrowserGui::paintDevices()
|
||||||
@@ -1013,7 +1018,7 @@ void CUpnpBrowserGui::paintDevices()
|
|||||||
// Foot
|
// Foot
|
||||||
footer.paintButtons(m_x, m_footer_y, m_width, m_footer_height, 1, &RescanButton, m_width/2);
|
footer.paintButtons(m_x, m_footer_y, m_width, m_footer_height, 1, &RescanButton, m_width/2);
|
||||||
|
|
||||||
paintItem2DetailsLine (-1); // clear it
|
paintItem2DetailsLine(-1); // clear it
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUpnpBrowserGui::paintItem(std::vector<UPnPEntry> *entries, unsigned int pos, unsigned int selected)
|
void CUpnpBrowserGui::paintItem(std::vector<UPnPEntry> *entries, unsigned int pos, unsigned int selected)
|
||||||
@@ -1044,9 +1049,9 @@ void CUpnpBrowserGui::paintItem(std::vector<UPnPEntry> *entries, unsigned int po
|
|||||||
paintItemInfo(entry);
|
paintItemInfo(entry);
|
||||||
paintDetails(entry);
|
paintDetails(entry);
|
||||||
if (entry->isdir)
|
if (entry->isdir)
|
||||||
paintItem2DetailsLine (-1); // clear it
|
paintItem2DetailsLine(-1); // clear it
|
||||||
else
|
else
|
||||||
paintItem2DetailsLine (pos);
|
paintItem2DetailsLine(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
int preferred=entry->preferred;
|
int preferred=entry->preferred;
|
||||||
@@ -1072,7 +1077,7 @@ void CUpnpBrowserGui::paintItem(std::vector<UPnPEntry> *entries, unsigned int po
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string name = entry->title;
|
std::string name = entry->title;
|
||||||
char tmp_time[] = "00:00:00.0";
|
char tmp_time[] = "0:00:00.00";
|
||||||
int w = g_Font[font_item]->getRenderWidth(tmp_time);
|
int w = g_Font[font_item]->getRenderWidth(tmp_time);
|
||||||
|
|
||||||
int icon_w = 0;
|
int icon_w = 0;
|
||||||
@@ -1081,11 +1086,11 @@ void CUpnpBrowserGui::paintItem(std::vector<UPnPEntry> *entries, unsigned int po
|
|||||||
m_frameBuffer->getIconSize(fileicon.c_str(), &icon_w, &icon_h);
|
m_frameBuffer->getIconSize(fileicon.c_str(), &icon_w, &icon_h);
|
||||||
if (icon_w && icon_h)
|
if (icon_w && icon_h)
|
||||||
{
|
{
|
||||||
icon_o = icon_w + 10;
|
icon_o = icon_w + OFFSET_INNER_MID;
|
||||||
m_frameBuffer->paintIcon(fileicon, m_x + 10, ypos + (m_item_height - icon_h) / 2);
|
m_frameBuffer->paintIcon(fileicon, m_x + OFFSET_INNER_MID, ypos + (m_item_height - icon_h)/2);
|
||||||
}
|
}
|
||||||
g_Font[font_item]->RenderString(m_x + m_width - 15 - 10 - w, ypos + m_item_height, w, info, color, m_item_height);
|
g_Font[font_item]->RenderString(m_x + OFFSET_INNER_MID + icon_o, ypos + m_item_height, m_width - 15 - OFFSET_INNER_MID - w, name, color, m_item_height);
|
||||||
g_Font[font_item]->RenderString(m_x + 10 + icon_o, ypos + m_item_height, m_width - icon_o - 15 - 2*10 - w, name, color, m_item_height);
|
g_Font[font_item]->RenderString(m_x + m_width - 15 - OFFSET_INNER_MID - w, ypos + m_item_height, w, info, color, m_item_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUpnpBrowserGui::paintItemInfo(UPnPEntry *entry)
|
void CUpnpBrowserGui::paintItemInfo(UPnPEntry *entry)
|
||||||
@@ -1131,7 +1136,7 @@ void CUpnpBrowserGui::paintItemInfo(UPnPEntry *entry)
|
|||||||
int h_image = infobox.getHeight() - OFFSET_INTER - infobox.getCornerRadius();
|
int h_image = infobox.getHeight() - OFFSET_INTER - infobox.getCornerRadius();
|
||||||
int y_image = infobox.getYPos() + infobox.getHeight()/2 - h_image/2;
|
int y_image = infobox.getYPos() + infobox.getHeight()/2 - h_image/2;
|
||||||
if (!image){
|
if (!image){
|
||||||
image = new CComponentsPicture(100, y_image, tmpname, NULL, CC_SHADOW_OFF, COL_MENUCONTENTDARK_PLUS_0);
|
image = new CComponentsPicture(0, y_image, tmpname, NULL, CC_SHADOW_OFF, COL_MENUCONTENTDARK_PLUS_0);
|
||||||
image->doPaintBg(false);
|
image->doPaintBg(false);
|
||||||
image->SetTransparent(CFrameBuffer::TM_BLACK);
|
image->SetTransparent(CFrameBuffer::TM_BLACK);
|
||||||
}
|
}
|
||||||
@@ -1167,7 +1172,6 @@ void CUpnpBrowserGui::paintItems(std::vector<UPnPEntry> *entry, unsigned int sel
|
|||||||
CComponentsHeader header(m_x, m_header_y, m_width, m_header_height, name, NEUTRINO_ICON_UPNP);
|
CComponentsHeader header(m_x, m_header_y, m_width, m_header_height, name, NEUTRINO_ICON_UPNP);
|
||||||
if (CNeutrinoApp::getInstance()->isMuted())
|
if (CNeutrinoApp::getInstance()->isMuted())
|
||||||
header.setContextButton(NEUTRINO_ICON_BUTTON_MUTE_SMALL);
|
header.setContextButton(NEUTRINO_ICON_BUTTON_MUTE_SMALL);
|
||||||
//header.enableShadow();
|
|
||||||
header.paint(CC_SAVE_SCREEN_NO);
|
header.paint(CC_SAVE_SCREEN_NO);
|
||||||
|
|
||||||
// Items
|
// Items
|
||||||
@@ -1185,25 +1189,23 @@ void CUpnpBrowserGui::paintItems(std::vector<UPnPEntry> *entry, unsigned int sel
|
|||||||
sbh = 2;
|
sbh = 2;
|
||||||
m_frameBuffer->paintBoxRel(m_x + m_width - 13, m_item_y + 2 + sbs*((sb-4)/sbc+sbh), 11, (sb-4)/sbc + sbh, COL_SCROLLBAR_ACTIVE_PLUS_0);
|
m_frameBuffer->paintBoxRel(m_x + m_width - 13, m_item_y + 2 + sbs*((sb-4)/sbc+sbh), 11, (sb-4)/sbc + sbh, COL_SCROLLBAR_ACTIVE_PLUS_0);
|
||||||
|
|
||||||
//shadow
|
|
||||||
//m_frameBuffer->paintBoxRel(m_x + m_width, m_item_y + OFFSET_SHADOW, OFFSET_SHADOW, sb, COL_SHADOW_PLUS_0);
|
|
||||||
|
|
||||||
// Foot buttons
|
// Foot buttons
|
||||||
size_t numbuttons = sizeof(BrowseButtons)/sizeof(BrowseButtons[0]);
|
size_t numbuttons = sizeof(BrowseButtons)/sizeof(BrowseButtons[0]);
|
||||||
|
|
||||||
footer.paintButtons(m_x, m_footer_y, m_width, m_footer_height, numbuttons, BrowseButtons, m_width/numbuttons);
|
footer.paintButtons(m_x, m_footer_y, m_width, m_footer_height, numbuttons, BrowseButtons, m_width/numbuttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUpnpBrowserGui::paintDetails(UPnPEntry *entry, bool use_playing)
|
void CUpnpBrowserGui::paintDetails(UPnPEntry *entry, bool use_playing)
|
||||||
{
|
{
|
||||||
// Foot info
|
// Foot info
|
||||||
int timebox_width = m_infobox_height; // maybe not enough
|
char tmp_time[] = "000:00";
|
||||||
|
int timebox_width = timebox.getFont()->getRenderWidth(tmp_time) + OFFSET_INNER_MID*2;
|
||||||
infobox.setDimensionsAll(m_x, m_infobox_y, m_width - OFFSET_SHADOW - OFFSET_INTER - timebox_width, m_infobox_height);
|
infobox.setDimensionsAll(m_x, m_infobox_y, m_width - OFFSET_SHADOW - OFFSET_INTER - timebox_width, m_infobox_height);
|
||||||
timebox.setDimensionsAll(m_x + m_width - timebox_width, infobox.getYPos(), m_infobox_height, timebox_width);
|
timebox.setDimensionsAll(m_x + m_width - timebox_width, infobox.getYPos(), timebox_width, m_infobox_height);
|
||||||
|
|
||||||
printf("paintDetails: use_playing %d shown %d\n", use_playing, m_playing_entry_is_shown);
|
printf("paintDetails: use_playing %d shown %d\n", use_playing, m_playing_entry_is_shown);
|
||||||
if ((!use_playing) && entry->isdir){
|
if ((!use_playing) && entry->isdir){
|
||||||
infobox.kill();
|
infobox.kill();
|
||||||
|
timebox.kill();
|
||||||
m_playing_entry_is_shown = false;
|
m_playing_entry_is_shown = false;
|
||||||
}else{
|
}else{
|
||||||
string text = "";
|
string text = "";
|
||||||
@@ -1232,7 +1234,7 @@ void CUpnpBrowserGui::paintDetails(UPnPEntry *entry, bool use_playing)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUpnpBrowserGui::paintItem2DetailsLine (int pos)
|
void CUpnpBrowserGui::paintItem2DetailsLine(int pos)
|
||||||
{
|
{
|
||||||
if (pos < 0)
|
if (pos < 0)
|
||||||
return;
|
return;
|
||||||
@@ -1245,7 +1247,7 @@ void CUpnpBrowserGui::paintItem2DetailsLine (int pos)
|
|||||||
|
|
||||||
if (!dline)
|
if (!dline)
|
||||||
dline = new CComponentsDetailLine();
|
dline = new CComponentsDetailLine();
|
||||||
dline->setDimensionsAll(xpos, ypos1a, ypos2, m_item_height/2, infobox.getHeight()-RADIUS_LARGE*2);
|
dline->setDimensionsAll(xpos, ypos1a, ypos2, m_item_height/2, infobox.getHeight() - RADIUS_LARGE*2);
|
||||||
dline->paint();
|
dline->paint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1280,6 +1282,14 @@ void CUpnpBrowserGui::playAudio(std::string name, int type)
|
|||||||
CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::CHANGEMODE, NeutrinoMessages::mode_upnp | NeutrinoMessages::norezap);
|
CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::CHANGEMODE, NeutrinoMessages::mode_upnp | NeutrinoMessages::norezap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CUpnpBrowserGui::stopAudio()
|
||||||
|
{
|
||||||
|
if (CAudioPlayer::getInstance()->getState() != CBaseDec::STOP)
|
||||||
|
{
|
||||||
|
CAudioPlayer::getInstance()->stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CUpnpBrowserGui::showPicture(std::string name)
|
void CUpnpBrowserGui::showPicture(std::string name)
|
||||||
{
|
{
|
||||||
CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::CHANGEMODE, NeutrinoMessages::mode_pic);
|
CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::CHANGEMODE, NeutrinoMessages::mode_pic);
|
||||||
|
@@ -105,7 +105,7 @@ class CUpnpBrowserGui : public CMenuTarget, public CListHelpers
|
|||||||
|
|
||||||
bool discoverDevices();
|
bool discoverDevices();
|
||||||
void splitProtocol(std::string &protocol, std::string &prot, std::string &network, std::string &mime, std::string &additional);
|
void splitProtocol(std::string &protocol, std::string &prot, std::string &network, std::string &mime, std::string &additional);
|
||||||
bool getResults(std::string id, unsigned int start, unsigned int count, std::list<UPnPAttribute> &results);
|
bool getResults(std::string id, unsigned int start, unsigned int count, std::list<UPnPAttribute> &results);
|
||||||
std::vector<UPnPEntry> *decodeResult(std::string);
|
std::vector<UPnPEntry> *decodeResult(std::string);
|
||||||
void Init();
|
void Init();
|
||||||
void updateDeviceSelection(int newpos);
|
void updateDeviceSelection(int newpos);
|
||||||
@@ -119,13 +119,14 @@ class CUpnpBrowserGui : public CMenuTarget, public CListHelpers
|
|||||||
bool updateItemSelection(std::string id, std::vector<UPnPEntry> * &entries, int newpos, unsigned int &selected, unsigned int &liststart);
|
bool updateItemSelection(std::string id, std::vector<UPnPEntry> * &entries, int newpos, unsigned int &selected, unsigned int &liststart);
|
||||||
bool selectItem(std::string);
|
bool selectItem(std::string);
|
||||||
void paintItems(std::vector<UPnPEntry> *entry, unsigned int selected, unsigned int max, unsigned int offset);
|
void paintItems(std::vector<UPnPEntry> *entry, unsigned int selected, unsigned int max, unsigned int offset);
|
||||||
void paintItem (std::vector<UPnPEntry> *entry, unsigned int pos, unsigned int selected);
|
void paintItem(std::vector<UPnPEntry> *entry, unsigned int pos, unsigned int selected);
|
||||||
void paintItemInfo(UPnPEntry *entry);
|
void paintItemInfo(UPnPEntry *entry);
|
||||||
void paintDetails(UPnPEntry *entry, bool use_playing = false);
|
void paintDetails(UPnPEntry *entry, bool use_playing = false);
|
||||||
void paintItem2DetailsLine (int pos);
|
void paintItem2DetailsLine(int pos);
|
||||||
|
|
||||||
void updateTimes(const bool force = false);
|
void updateTimes(const bool force = false);
|
||||||
void playAudio(std::string name, int type);
|
void playAudio(std::string name, int type);
|
||||||
|
void stopAudio();
|
||||||
void showPicture(std::string name);
|
void showPicture(std::string name);
|
||||||
void playVideo(std::string name, std::string url);
|
void playVideo(std::string name, std::string url);
|
||||||
};
|
};
|
||||||
|
@@ -160,8 +160,8 @@ void CTextBox::initVar(void)
|
|||||||
m_nLinesPerPage = 0;
|
m_nLinesPerPage = 0;
|
||||||
m_nCurrentLine = 0;
|
m_nCurrentLine = 0;
|
||||||
m_nCurrentPage = 0;
|
m_nCurrentPage = 0;
|
||||||
text_Hborder_width = 8; //border left and right
|
text_Hborder_width = OFFSET_INNER_MID; //border left and right
|
||||||
text_Vborder_width = 8; //border top and buttom
|
text_Vborder_width = OFFSET_INNER_MID; //border top and buttom
|
||||||
|
|
||||||
m_cFrame.iX = m_old_x = g_settings.screen_StartX + ((g_settings.screen_EndX - g_settings.screen_StartX - MIN_WINDOW_WIDTH) >>1);
|
m_cFrame.iX = m_old_x = g_settings.screen_StartX + ((g_settings.screen_EndX - g_settings.screen_StartX - MIN_WINDOW_WIDTH) >>1);
|
||||||
m_cFrame.iWidth = m_old_dx = MIN_WINDOW_WIDTH;
|
m_cFrame.iWidth = m_old_dx = MIN_WINDOW_WIDTH;
|
||||||
|
@@ -946,9 +946,9 @@ const time_settings_struct_t timing_setting[SNeutrinoSettings::TIMING_SETTING_CO
|
|||||||
// offsets
|
// offsets
|
||||||
#define OFFSET_SHADOW 6
|
#define OFFSET_SHADOW 6
|
||||||
#define OFFSET_INTER 6
|
#define OFFSET_INTER 6
|
||||||
//#define OFFSET_INNER_LARGE 20
|
#define OFFSET_INNER_LARGE 20
|
||||||
//#define OFFSET_INNER_MID 10
|
#define OFFSET_INNER_MID 10
|
||||||
//#define OFFSET_INNER_SMALL 5
|
#define OFFSET_INNER_SMALL 5
|
||||||
|
|
||||||
|
|
||||||
struct SglobalInfo
|
struct SglobalInfo
|
||||||
|
Reference in New Issue
Block a user