From f1f0683e20bc7ffe6c8136bfecc1cd763a1866b4 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Mon, 29 May 2017 22:36:07 +0200 Subject: [PATCH 01/47] epgplus: fix segfault (thx dbo) Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/a56e3f81114504a53de2fd80702da82607635e98 Author: TangoCash Date: 2017-05-29 (Mon, 29 May 2017) Origin message was: ------------------ -epgplus: fix segfault (thx dbo) --- src/gui/epgplus.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/epgplus.cpp b/src/gui/epgplus.cpp index 3bfe6f4fd..dafdbb1fb 100644 --- a/src/gui/epgplus.cpp +++ b/src/gui/epgplus.cpp @@ -1383,6 +1383,8 @@ void EpgPlus::hide() if (this->header->head) { this->header->head->kill(); + delete this->header->head; + this->header->head = NULL; } this->frameBuffer->paintBackgroundBoxRel(this->usableScreenX - DETAILSLINE_WIDTH, this->usableScreenY, DETAILSLINE_WIDTH + this->usableScreenWidth, this->usableScreenHeight); } From 0b3a86f7f5f685630308f5eda5ad5ff770b4c051 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 30 May 2017 10:11:39 +0200 Subject: [PATCH 02/47] followscreenings: fix CFollowScreenings::FOLLOWSCREENINGS_ALWAYS * add enumeration for a better readability Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/981c6331a6576ab0e0949540602132df3a8b9cc2 Author: vanhofen Date: 2017-05-30 (Tue, 30 May 2017) Origin message was: ------------------ - followscreenings: fix CFollowScreenings::FOLLOWSCREENINGS_ALWAYS * add enumeration for a better readability --- src/gui/followscreenings.cpp | 12 ++++++------ src/gui/followscreenings.h | 8 ++++++++ src/gui/record_setup.cpp | 7 ++++--- src/neutrino.cpp | 3 ++- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/gui/followscreenings.cpp b/src/gui/followscreenings.cpp index 99446da95..d5e87231f 100644 --- a/src/gui/followscreenings.cpp +++ b/src/gui/followscreenings.cpp @@ -69,7 +69,7 @@ CChannelEventList *CFollowScreenings::getFollowScreenings(void) continue; followlist.push_back(*e); - if (followlist.size() == 1 && !g_settings.timer_followscreenings) + if (followlist.size() == 1 && g_settings.timer_followscreenings == FOLLOWSCREENINGS_OFF) //NI break; } } @@ -92,7 +92,7 @@ int CFollowScreenings::exec(CMenuTarget* /*parent*/, const std::string & actionK if (i->eventType == CTimerd::TIMER_RECORD) { if (channel_id == i->channel_id && e->startTime == i->epg_starttime) { Timer.removeTimerEvent(i->eventID); - if (!forwarders.empty() && (followlist.size() > 1 || g_settings.timer_followscreenings == 2 /*always*/)) //NI + if (!forwarders.empty() && (followlist.size() > 1 || g_settings.timer_followscreenings == FOLLOWSCREENINGS_ALWAYS)) //NI forwarders[ix]->iconName_Info_right = ""; #if 0 else @@ -115,9 +115,9 @@ int CFollowScreenings::exec(CMenuTarget* /*parent*/, const std::string & actionK e->startTime, e->startTime - (ANNOUNCETIME + 120 ), apids, true, e->startTime - (ANNOUNCETIME + 120) > time(NULL), recDir, true, ch->bUseCI) == -1) { //NI //FIXME -- no error handling, but this shouldn't happen ... } else { - if (!forwarders.empty() && (followlist.size() > 1 || g_settings.timer_followscreenings == 2 /*always*/)) //NI + if (!forwarders.empty() && (followlist.size() > 1 || g_settings.timer_followscreenings == FOLLOWSCREENINGS_ALWAYS)) //NI forwarders[ix]->iconName_Info_right = NEUTRINO_ICON_REC; - else if (g_settings.timer_followscreenings != 2 /*always*/) //NI + else if (g_settings.timer_followscreenings != FOLLOWSCREENINGS_ALWAYS) //NI ShowMsg(LOCALE_TIMER_EVENTRECORD_TITLE, LOCALE_TIMER_EVENTRECORD_MSG, CMsgBox::mbrBack, CMsgBox::mbBack, NEUTRINO_ICON_INFO); return menu_return::RETURN_REPAINT; @@ -158,12 +158,12 @@ void CFollowScreenings::show() getFollowScreenings(); - if (followlist.size() == 1 && g_settings.timer_followscreenings < 2 /*always*/) //NI + if (followlist.size() == 1 && g_settings.timer_followscreenings != FOLLOWSCREENINGS_ALWAYS) //NI { snprintf(actionstr, sizeof(actionstr), "%lu", followlist.front().startTime); exec(NULL, actionstr); } - else if (followlist.size() > 1) + else if (followlist.size() > 1 || g_settings.timer_followscreenings == FOLLOWSCREENINGS_ALWAYS) //NI { CMenuWidget m(LOCALE_EPGVIEWER_SELECT_SCREENING, NEUTRINO_ICON_SETTINGS); const char *icon = NEUTRINO_ICON_BUTTON_RED; diff --git a/src/gui/followscreenings.h b/src/gui/followscreenings.h index 53e362e3e..3c48df8bf 100644 --- a/src/gui/followscreenings.h +++ b/src/gui/followscreenings.h @@ -59,6 +59,14 @@ class CFollowScreenings : public CMenuTarget std::vector forwarders; void updateRightIcon(int i, time_t start, unsigned int duration); public: + //NI + enum + { + FOLLOWSCREENINGS_OFF = 0, + FOLLOWSCREENINGS_ON = 1, + FOLLOWSCREENINGS_ALWAYS = 2 + }; + CFollowScreenings(const t_channel_id Channel_id, time_t Starttime, time_t Stoptime, const std::string &Title, uint64_t EpgID=0, unsigned char Apids=TIMERD_APIDS_STD, bool Safety=false, std::string RecDir="", CChannelEventList *Evtlist=NULL) : CMenuTarget () { this->channel_id = Channel_id; diff --git a/src/gui/record_setup.cpp b/src/gui/record_setup.cpp index 59368fbd1..02e685aaa 100644 --- a/src/gui/record_setup.cpp +++ b/src/gui/record_setup.cpp @@ -41,6 +41,7 @@ #include "record_setup.h" #include +#include //NI #include #include @@ -176,9 +177,9 @@ const CMenuOptionChooser::keyval END_OF_RECORDING[END_OF_RECORDING_COUNT] = //NI const CMenuOptionChooser::keyval timer_followscreenings_options[] = { - {0, LOCALE_OPTIONS_OFF}, - {1, LOCALE_OPTIONS_ON}, - {2, LOCALE_OPTIONS_ALWAYS} + {CFollowScreenings::FOLLOWSCREENINGS_OFF , LOCALE_OPTIONS_OFF }, + {CFollowScreenings::FOLLOWSCREENINGS_ON , LOCALE_OPTIONS_ON }, + {CFollowScreenings::FOLLOWSCREENINGS_ALWAYS , LOCALE_OPTIONS_ALWAYS} }; size_t timer_followscreenings_options_count = sizeof(timer_followscreenings_options)/sizeof(CMenuOptionChooser::keyval); diff --git a/src/neutrino.cpp b/src/neutrino.cpp index fb822252a..641a43c3b 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -77,6 +77,7 @@ #include "gui/eventlist.h" #include "gui/favorites.h" #include "gui/filebrowser.h" +#include "gui/followscreenings.h" //NI #include "gui/hdd_menu.h" #include "gui/infoviewer.h" #include "gui/mediaplayer.h" @@ -543,7 +544,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.timer_remotebox_ip.push_back(timer_rb); } } - g_settings.timer_followscreenings = configfile.getInt32( "timer_followscreenings", 1 ); + g_settings.timer_followscreenings = configfile.getInt32( "timer_followscreenings", CFollowScreenings::FOLLOWSCREENINGS_ON ); //NI g_settings.infobar_sat_display = configfile.getBool("infobar_sat_display" , true ); g_settings.infobar_show_channeldesc = configfile.getBool("infobar_show_channeldesc" , false ); From dc8cff4f990c161646e3ceeb8ee131e740dede75 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 30 May 2017 15:57:48 +0200 Subject: [PATCH 03/47] neutrino: remove pointless easymenu console output Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/50dd0fb0e48f3e494424eda8503957e50fb977bd Author: vanhofen Date: 2017-05-30 (Tue, 30 May 2017) Origin message was: ------------------ - neutrino: remove pointless easymenu console output --- src/neutrino.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 641a43c3b..cfa906528 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -390,7 +390,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.easymenu = 1; g_settings.softupdate_autocheck = 1; } - dprintf(DEBUG_NORMAL, "g_settings.easymenu %d\n", g_settings.easymenu); + //NI dprintf(DEBUG_NORMAL, "g_settings.easymenu %d\n", g_settings.easymenu); // video g_settings.video_Mode = configfile.getInt32("video_Mode", VIDEO_STD_1080I50); // VIDEO_STD_720P50 From cb3b3b9749d6c87538c99ab60d102d16e2c473e5 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 30 May 2017 15:57:49 +0200 Subject: [PATCH 04/47] epgview: fix green button behavior in imdb-view Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/37846b7a2fbde1d78ce28d7a6514347b2bdc7658 Author: vanhofen Date: 2017-05-30 (Tue, 30 May 2017) Origin message was: ------------------ - epgview: fix green button behavior in imdb-view --- src/gui/epgview.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gui/epgview.cpp b/src/gui/epgview.cpp index 38649411d..d5c214477 100644 --- a/src/gui/epgview.cpp +++ b/src/gui/epgview.cpp @@ -1220,7 +1220,7 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start showTimerEventBar(true, !mp_info && isCurrentEPG(channel_id), mp_info); //show buttons timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_EPG]); } - else + else if (imdb_active && imdb->gotPoster()) { imdb_active = false; CHintBox * hintBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, LOCALE_IMDB_INFO_SAVE); @@ -1613,7 +1613,17 @@ void CEpgData::showTimerEventBar (bool pshow, bool adzap, bool mp_info) } bool tmdb = g_settings.tmdb_enabled; bool fscr = (has_follow_screenings && !call_fromfollowlist); - EpgButtons[mp_info ? 2 : (fscr ? 0 : 1)][1].locale = imdb_active ? LOCALE_IMDB_INFO_SAVE : LOCALE_IMDB_INFO; //NI + //NI + if (imdb_active) + { + EpgButtons[mp_info ? 2 : (fscr ? 0 : 1)][1].button = (imdb->gotPoster()) ? NEUTRINO_ICON_BUTTON_GREEN : NEUTRINO_ICON_BUTTON_DUMMY_SMALL; + EpgButtons[mp_info ? 2 : (fscr ? 0 : 1)][1].locale = LOCALE_IMDB_INFO_SAVE; + } + else + { + EpgButtons[mp_info ? 2 : (fscr ? 0 : 1)][1].button = NEUTRINO_ICON_BUTTON_GREEN; + EpgButtons[mp_info ? 2 : (fscr ? 0 : 1)][1].locale = LOCALE_IMDB_INFO; + } if (mp_info) ::paintButtons(x, y, w, tmdb ? 3 : 2, EpgButtons[2], w, h); //NI else From dd2fceef7e19a95da03225aef701314276b71fa8 Mon Sep 17 00:00:00 2001 From: gixxpunk Date: Tue, 30 May 2017 16:22:41 +0200 Subject: [PATCH 05/47] hdd_menu.cpp: remove "-T largefile" parameter Some users experience problems with too low amount of inodes (No space left on device but only a few percent of the device are actually used). To fix this, simply use default settings. This will give us a much higher amount of inodes on the hard drive but will waste a bit more space on the device for inode reservation. Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/0a522037a1e2c00f5cb376df6df26c3b556f4cc5 Author: gixxpunk Date: 2017-05-30 (Tue, 30 May 2017) --- src/gui/hdd_menu.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/hdd_menu.cpp b/src/gui/hdd_menu.cpp index 7f161dc6e..943e0284d 100644 --- a/src/gui/hdd_menu.cpp +++ b/src/gui/hdd_menu.cpp @@ -92,12 +92,12 @@ const CMenuOptionChooser::keyval HDD_SLEEP_OPTIONS[HDD_SLEEP_OPTION_COUNT] = }; devtool_s CHDDMenuHandler::devtools[] = { - { "ext4", "/sbin/fsck.ext4", "-C 1 -f -y", "/sbin/mkfs.ext4", "-T largefile -m0", false, false }, - { "ext3", "/sbin/fsck.ext3", "-C 1 -f -y", "/sbin/mkfs.ext3", "-T largefile -m0", false, false }, - { "ext2", "/sbin/fsck.ext2", "-C 1 -f -y", "/sbin/mkfs.ext2", "-T largefile -m0", false, false }, - { "vfat", "/sbin/fsck.vfat", "-a", "/sbin/mkfs.vfat", "", false, false }, - { "exfat", "/sbin/fsck.exfat", "", "/sbin/mkfs.exfat", "", false, false }, - { "xfs", "/sbin/xfs_repair", "", "/sbin/mkfs.xfs", "-f", false, false }, + { "ext4", "/sbin/fsck.ext4", "-C 1 -f -y", "/sbin/mkfs.ext4", "-m 0", false, false }, + { "ext3", "/sbin/fsck.ext3", "-C 1 -f -y", "/sbin/mkfs.ext3", "-m 0", false, false }, + { "ext2", "/sbin/fsck.ext2", "-C 1 -f -y", "/sbin/mkfs.ext2", "-m 0", false, false }, + { "vfat", "/sbin/fsck.vfat", "-a", "/sbin/mkfs.vfat", "", false, false }, + { "exfat", "/sbin/fsck.exfat", "", "/sbin/mkfs.exfat", "", false, false }, + { "xfs", "/sbin/xfs_repair", "", "/sbin/mkfs.xfs", "-f", false, false }, }; #define FS_MAX (sizeof(CHDDMenuHandler::devtools)/sizeof(devtool_s)) From 10d5368c739ef5a38ef06b8ff81c196c64e4a8ba Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Tue, 30 May 2017 19:26:04 +0200 Subject: [PATCH 06/47] change prozent ckeck to 90 Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/ab829a61b651a6250240e70727c515fa8d7f5978 Author: Jacek Jendrzej Date: 2017-05-30 (Tue, 30 May 2017) --- src/gui/movieplayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index 716c7262a..267b6f629 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -1326,7 +1326,7 @@ void CMoviePlayerGui::PlayFileLoop(void) printf("CMoviePlayerGui::%s: spd %d pos %d/%d (%d, %d%%)\n", __func__, speed, position, duration, duration-position, file_prozent); #endif /* in case ffmpeg report incorrect values */ - if(file_prozent > 96 && (playstate == CMoviePlayerGui::PLAY) && (speed == 1)){ + if(file_prozent > 89 && (playstate == CMoviePlayerGui::PLAY) && (speed == 1)){ if(position_tmp != position){ position_tmp = position ; eof2 = 0; From 4704433cecfb68dc35126a856cdf4299c9752a79 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Fri, 2 Jun 2017 00:05:37 +0200 Subject: [PATCH 07/47] progresswindow: create global_bar object only if needed Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/5aeea5ac8f374a4f3af992c2239095e960e7f7ee Author: vanhofen Date: 2017-06-02 (Fri, 02 Jun 2017) Origin message was: ------------------ - progresswindow: create global_bar object only if needed --- src/gui/widget/progresswindow.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/widget/progresswindow.cpp b/src/gui/widget/progresswindow.cpp index 68b416439..6153683d1 100644 --- a/src/gui/widget/progresswindow.cpp +++ b/src/gui/widget/progresswindow.cpp @@ -96,8 +96,9 @@ void CProgressWindow::Init( signal *statusSignal, //create local_bar object local_bar = getProgressItem(); - //create global_bar object - global_bar = getProgressItem(); + //NI - create global_bar object only if needed + if (globalSignal) + global_bar = getProgressItem(); //set window height h_height = ccw_head->getHeight(); From 493093138322be65aa9196d321c331611a288651 Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Sat, 28 Feb 2015 10:53:18 +0100 Subject: [PATCH 08/47] set threadnames to unique values Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/1e0544cd94033a5e945744d4947253338f248798 Author: Stefan Seyfried Date: 2015-02-28 (Sat, 28 Feb 2015) --- src/driver/radiotext.cpp | 2 ++ src/driver/screenshot.cpp | 2 ++ src/driver/streamts.cpp | 4 ++++ src/eitd/sectionsd.cpp | 6 +++++- src/nhttpd/yhttpd.cpp | 4 ++-- src/zapit/src/scan.cpp | 2 ++ src/zapit/src/scanbat.cpp | 2 ++ src/zapit/src/scannit.cpp | 2 ++ src/zapit/src/zapit.cpp | 3 +++ 9 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/driver/radiotext.cpp b/src/driver/radiotext.cpp index 80eae7e1a..28f1c8186 100644 --- a/src/driver/radiotext.cpp +++ b/src/driver/radiotext.cpp @@ -79,6 +79,7 @@ #include #include +#include #include #include @@ -2369,6 +2370,7 @@ void CRadioText::setPid(uint inPid) void CRadioText::run() { + set_threadname("n:radiotext"); uint current_pid = 0; printf("CRadioText::run: ###################### Starting thread ######################\n"); diff --git a/src/driver/screenshot.cpp b/src/driver/screenshot.cpp index 9255c0ae1..1ad99fe01 100644 --- a/src/driver/screenshot.cpp +++ b/src/driver/screenshot.cpp @@ -46,6 +46,7 @@ #include #include #include +#include extern "C" { #include @@ -242,6 +243,7 @@ void CScreenShot::cleanupThread(void *arg) /* start ::run in new thread to save file in selected format */ bool CScreenShot::Start() { + set_threadname("n:screenshot"); bool ret = false; if (GetData()) ret = startThread(); diff --git a/src/driver/streamts.cpp b/src/driver/streamts.cpp index 20318e584..2a7e172bd 100644 --- a/src/driver/streamts.cpp +++ b/src/driver/streamts.cpp @@ -56,6 +56,8 @@ #include #include #include +#include + #include #include @@ -181,6 +183,7 @@ bool CStreamInstance::Open() void CStreamInstance::run() { printf("CStreamInstance::run: %" PRIx64 "\n", channel_id); + set_threadname("n:streaminstance"); /* pids here cannot be empty */ stream_pids_t::iterator it = pids.begin(); @@ -556,6 +559,7 @@ void CStreamManager::run() int poll_timeout = -1; printf("Starting STREAM thread keeper, tid %ld\n", syscall(__NR_gettid)); + set_threadname("n:streammanager"); while (running) { mutex.lock(); diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index 11e4f0714..6197a94f2 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -1430,7 +1430,8 @@ void CTimeThread::run() { time_t dvb_time = 0; xprintf("%s::run:: starting, pid %d (%lu)\n", name.c_str(), getpid(), pthread_self()); - + const char *tn = ("sd:" + name).c_str(); + set_threadname(tn); addFilters(); DMX::start(); @@ -1544,6 +1545,8 @@ int CSectionThread::Sleep() void CSectionThread::run() { xprintf("%s::run:: starting, pid %d (%lu)\n", name.c_str(), getpid(), pthread_self()); + const char *tn = ("sd:" + name).c_str(); + set_threadname(tn); if (sections_debug) dump_sched_info(name); @@ -2222,6 +2225,7 @@ void CEitManager::run() int rc; xprintf("[sectionsd] starting\n"); + set_threadname("sd:eitmanager"); printf("SIevent size: %d\n", (int)sizeof(SIevent)); /* "export NO_SLOW_ADDEVENT=true" to disable this */ diff --git a/src/nhttpd/yhttpd.cpp b/src/nhttpd/yhttpd.cpp index ef5112d79..1aa0c55be 100644 --- a/src/nhttpd/yhttpd.cpp +++ b/src/nhttpd/yhttpd.cpp @@ -120,7 +120,7 @@ void thread_cleanup (void *p) #ifndef Y_CONFIG_BUILD_AS_DAEMON void * nhttpd_main_thread(void *) { - set_threadname(__func__); + set_threadname("yweb:main_thread"); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); aprintf("Webserver %s tid %ld\n", WEBSERVERNAME, syscall(__NR_gettid)); @@ -338,7 +338,7 @@ bool Cyhttpd::Configure() { // Main Webserver call //----------------------------------------------------------------------------- void Cyhttpd::run() { - set_threadname(__func__); + set_threadname("yweb:run"); if (webserver) { if (flag_threading_off) webserver->is_threading = false; diff --git a/src/zapit/src/scan.cpp b/src/zapit/src/scan.cpp index 29d59eea8..d078ed4b8 100644 --- a/src/zapit/src/scan.cpp +++ b/src/zapit/src/scan.cpp @@ -36,6 +36,7 @@ #include #include #include +#include //#define USE_BAT @@ -96,6 +97,7 @@ bool CServiceScan::Stop() void CServiceScan::run() { + set_threadname("zap:servicescan"); running = true; CleanAllMaps(); diff --git a/src/zapit/src/scanbat.cpp b/src/zapit/src/scanbat.cpp index 01d655599..49e731568 100644 --- a/src/zapit/src/scanbat.cpp +++ b/src/zapit/src/scanbat.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #define DEBUG_BAT #define DEBUG_BAT_UNUSED @@ -68,6 +69,7 @@ bool CBat::Stop() void CBat::run() { + set_threadname("zap:bat"); if(Parse()) printf("[scan] BAT finished.\n"); else diff --git a/src/zapit/src/scannit.cpp b/src/zapit/src/scannit.cpp index dc47c6686..cb7a81b0b 100644 --- a/src/zapit/src/scannit.cpp +++ b/src/zapit/src/scannit.cpp @@ -29,6 +29,7 @@ #include #include #include +#include //#define DEBUG_NIT //#define DEBUG_NIT_UNUSED @@ -65,6 +66,7 @@ bool CNit::Stop() void CNit::run() { + set_threadname("zap:nit"); if(Parse()) printf("[scan] NIT finished.\n"); else diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index d994a794b..764ed2576 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -69,6 +69,7 @@ #endif #include +#include #include #include #include @@ -2502,6 +2503,7 @@ void CZapit::setMoviePlayer(bool enable) void CZapit::run() { + set_threadname("zap:main"); printf("[zapit] starting... tid %ld\n", syscall(__NR_gettid)); abort_zapit = 0; @@ -2674,6 +2676,7 @@ void CZapitSdtMonitor::run() t_satellite_position satellitePosition = 0; freq_id_t freq = 0; transponder_id_t tpid = 0; + set_threadname("zap:sdtmonitor"); //tstart = time(0); sdt_tp.clear(); From d31fc5d3597d041658e4cfb16adab987788562da Mon Sep 17 00:00:00 2001 From: gixxpunk Date: Mon, 5 Jun 2017 19:51:57 +0200 Subject: [PATCH 09/47] Revert "- progresswindow: create global_bar object only if needed" This reverts commit 4704433cecfb68dc35126a856cdf4299c9752a79. Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/41e4e6b522a581b542af603ce22328c2ed53c817 Author: gixxpunk Date: 2017-06-05 (Mon, 05 Jun 2017) --- src/gui/widget/progresswindow.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gui/widget/progresswindow.cpp b/src/gui/widget/progresswindow.cpp index 6153683d1..68b416439 100644 --- a/src/gui/widget/progresswindow.cpp +++ b/src/gui/widget/progresswindow.cpp @@ -96,9 +96,8 @@ void CProgressWindow::Init( signal *statusSignal, //create local_bar object local_bar = getProgressItem(); - //NI - create global_bar object only if needed - if (globalSignal) - global_bar = getProgressItem(); + //create global_bar object + global_bar = getProgressItem(); //set window height h_height = ccw_head->getHeight(); From a0ec4edf2eb4dc2009713a094d8548aef4ccbce0 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 00:09:31 +0200 Subject: [PATCH 10/47] remove graphic progressbar Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/675c0dc6f6a85eec5186e9cbcdb866280178561a Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - remove graphic progressbar --- data/icons/status/Makefile.am | 1 - data/icons/status/progress/Makefile.am | 8 ---- data/icons/status/progress/progressbar.png | Bin 311 -> 0 bytes .../progress/progressbar_inactive_passive.png | Bin 265 -> 0 bytes .../status/progress/progressbar_passive.png | Bin 290 -> 0 bytes data/icons/status/progress/volumebar.png | Bin 311 -> 0 bytes .../status/progress/volumebar_passive.png | Bin 290 -> 0 bytes data/locale/deutsch.locale | 1 - data/locale/english.locale | 1 - src/gui/channellist.cpp | 2 - src/gui/components/cc_item_progressbar.cpp | 35 +----------------- src/gui/components/cc_item_progressbar.h | 9 +---- src/gui/osd_progressbar_setup.cpp | 6 +-- src/gui/osd_setup.cpp | 6 +-- src/gui/volumebar.cpp | 4 -- src/neutrino.cpp | 8 ++++ src/system/locals.h | 1 - src/system/locals_intern.h | 1 - version_pseudo.h | 2 +- 19 files changed, 15 insertions(+), 70 deletions(-) delete mode 100644 data/icons/status/progress/Makefile.am delete mode 100644 data/icons/status/progress/progressbar.png delete mode 100644 data/icons/status/progress/progressbar_inactive_passive.png delete mode 100644 data/icons/status/progress/progressbar_passive.png delete mode 100644 data/icons/status/progress/volumebar.png delete mode 100644 data/icons/status/progress/volumebar_passive.png diff --git a/data/icons/status/Makefile.am b/data/icons/status/Makefile.am index 82ae80b82..5489bd956 100644 --- a/data/icons/status/Makefile.am +++ b/data/icons/status/Makefile.am @@ -3,5 +3,4 @@ SUBDIRS = \ channel \ info \ markers \ - progress \ various diff --git a/data/icons/status/progress/Makefile.am b/data/icons/status/progress/Makefile.am deleted file mode 100644 index 7cbe2b5f1..000000000 --- a/data/icons/status/progress/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -installdir = $(ICONSDIR) - -install_DATA = \ - progressbar.png \ - progressbar_inactive_passive.png \ - progressbar_passive.png \ - volumebar.png \ - volumebar_passive.png diff --git a/data/icons/status/progress/progressbar.png b/data/icons/status/progress/progressbar.png deleted file mode 100644 index 6cace64c53a27bedbd357e9139fb7d5680db0867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3xg8~8tggg0u?NMQuIvwZ*ag&8D#9nm0fl5ULn2C?^K)}k^GbkR1_tM%)Wnk1 z6ovB4k_-iRPv3wPy;OFf_-s!X#}JFtYeP;79#G)8!lT+z|NA}9n}d611U9EXSZs0P z9oM5^ucMMuEdq1C-?NMQuIvwZ*ag%~x&Ji01q#V#hD4M&=jZ08=9K`s3=Gaisfi`2 zDGKG8B^e6tp1uJoda3L{@mxOB)I$*%jeD(tS%is1%+&6Q3&Tf(~medjF zK6HJH*M+FXoKN4)GxLyQP+rM+FR(0=bH>3`hnQIZ2bFV-nw&X{0>q5&$V^c zrlosFRTaIDeO=J=k-7U}0OPWcrp){JBEHJ6`|swz;^7CL8jy=TUHx3vIVCg!0Mm0; AO#lD@ diff --git a/data/icons/status/progress/progressbar_passive.png b/data/icons/status/progress/progressbar_passive.png deleted file mode 100644 index 4d698691451ebefec308ccebaef423f2e868e93c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3xg8~8tggg0u?NMQuIvwZ*ag%DA|I!|1`5e$hD4M&=jZ08=9K`s3=Gaisfi`2 zDGKG8B^e6tp1uJoda3L{@itEv#}JFtTSF}Q4k+*_hl>4R{r^8+;$=W!YnS$w3dSV~ zZzNiidTufvy!ZR*qdD`pcfPn=e_qCEMOU=A4;S}CkBf$<_lwG@Us?Di%2;*Fw~byq zm#hxnrgrYv>Mhr%9Tn7LXL}vzsMF11Hbrvb&)X3k54omu1bf|h7$9=!*!4V(yNuSG a_B2aJXQWSKC^e}9In~qE&t;ucLK6U!kYZr~ diff --git a/data/icons/status/progress/volumebar.png b/data/icons/status/progress/volumebar.png deleted file mode 100644 index 6cace64c53a27bedbd357e9139fb7d5680db0867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3xg8~8tggg0u?NMQuIvwZ*ag&8D#9nm0fl5ULn2C?^K)}k^GbkR1_tM%)Wnk1 z6ovB4k_-iRPv3wPy;OFf_-s!X#}JFtYeP;79#G)8!lT+z|NA}9n}d611U9EXSZs0P z9oM5^ucMMuEdq1C-?NMQuIvwZ*ag%DA|I!|1`5e$hD4M&=jZ08=9K`s3=Gaisfi`2 zDGKG8B^e6tp1uJoda3L{@itEv#}JFtTSF}Q4k+*_hl>4R{r^8+;$=W!YnS$w3dSV~ zZzNiidTufvy!ZR*qdD`pcfPn=e_qCEMOU=A4;S}CkBf$<_lwG@Us?Di%2;*Fw~byq zm#hxnrgrYv>Mhr%9Tn7LXL}vzsMF11Hbrvb&)X3k54omu1bf|h7$9=!*!4V(yNuSG a_B2aJXQWSKC^e}9In~qE&t;ucLK6U!kYZr~ diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 75e65bb41..ba4cc593b 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -1762,7 +1762,6 @@ miscsettings.progressbar_design_1 vertikale Balken miscsettings.progressbar_design_2 horizontale Balken miscsettings.progressbar_design_3 Farbverlauf miscsettings.progressbar_design_4 monochrom -miscsettings.progressbar_design_5 grafisch miscsettings.progressbar_design_long Design miscsettings.progressbar_gradient 3D-Effekt miscsettings.progressbar_infobar_position Position diff --git a/data/locale/english.locale b/data/locale/english.locale index 5f892bb02..b5f543b09 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -1762,7 +1762,6 @@ miscsettings.progressbar_design_1 colored vertical lines miscsettings.progressbar_design_2 colored horizontal lines miscsettings.progressbar_design_3 colored bar miscsettings.progressbar_design_4 monochrome -miscsettings.progressbar_design_5 graphical miscsettings.progressbar_design_long Design miscsettings.progressbar_gradient 3D effect miscsettings.progressbar_infobar_position Position diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 6851536d7..a5b8e2acc 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -2095,8 +2095,6 @@ void CChannelList::paintItem(int pos, const bool firstpaint) if (g_settings.theme.progressbar_design_channellist != CProgressBar::PB_OFF) { pb.setValues(0, pb_width); - if (g_settings.theme.progressbar_design == CProgressBar::PB_GRAPHIC) //NI graphic - pb.setGraphic("progressbar_inactive"); pb.paint(); } //name diff --git a/src/gui/components/cc_item_progressbar.cpp b/src/gui/components/cc_item_progressbar.cpp index cf329d70e..089fbbab0 100644 --- a/src/gui/components/cc_item_progressbar.cpp +++ b/src/gui/components/cc_item_progressbar.cpp @@ -39,9 +39,7 @@ #define GREEN 0x00FF00 #define YELLOW 0xFFFF00 -//NI graphic -#include -#include +//NI starbar #include extern CPictureViewer * g_PicViewer; @@ -86,8 +84,6 @@ CProgressBar::CProgressBar( const int x_pos, pb_value = 0; pb_max_value = 0; - graphic_file = "progressbar"; //NI graphic - // init start positions x/y active bar pb_x = x + fr_thickness; pb_y = y + fr_thickness; @@ -479,10 +475,6 @@ void CProgressBar::paintProgress(bool do_save_bg) paintStarBar(); is_painted = true; } - else if(*pb_design == PB_GRAPHIC) { - paintGraphic(); - is_painted = true; - } else { CProgressBarCache *pbc = CProgressBarCache::pbcLookup(pb_height, pb_max_width, pb_active_col, pb_passive_col, *pb_design, pb_invert, *pb_gradient, pb_red, pb_yellow, pb_green); if (pbc) @@ -504,31 +496,6 @@ void CProgressBar::paintProgress(bool do_save_bg) } } - -//NI graphic -void CProgressBar::paintGraphic() -{ - std::string pb_active_graphic(frameBuffer->getIconPath(graphic_file)); - std::string pb_passive_graphic(frameBuffer->getIconPath(graphic_file + "_passive")); - - //printf("**** %04d::%04d: pb_last_width: %d, pb_active_width: %d, pb_max_width %d\n", pb_x, pb_y, pb_last_width, pb_active_width, pb_max_width); - - if (pb_last_width == -1 ) { - if (pb_active_width <= pb_max_width && pb_passive_width > 0) - g_PicViewer->DisplayImage(pb_passive_graphic, pb_start_x_passive, pb_y, pb_passive_width, pb_height); // passive bar - } - - if (pb_active_width > pb_last_width) { - // we have to paint the passive graphic in all cases to satisfy the CProgresswindow - if (pb_passive_width > 0) - g_PicViewer->DisplayImage(pb_passive_graphic, pb_start_x_passive, pb_y, pb_passive_width, pb_height); // passive bar - if (pb_active_width > 0) - g_PicViewer->DisplayImage(pb_active_graphic, pb_x, pb_y, pb_active_width, pb_height); // active bar - } - else if (pb_active_width <= pb_max_width && pb_passive_width > 0) - g_PicViewer->DisplayImage(pb_passive_graphic, pb_start_x_passive, pb_y, pb_passive_width, pb_height); // passive bar -} - //NI starbar void CProgressBar::paintStarBar() { diff --git a/src/gui/components/cc_item_progressbar.h b/src/gui/components/cc_item_progressbar.h index 6ea067c04..f0c2c7fd2 100644 --- a/src/gui/components/cc_item_progressbar.h +++ b/src/gui/components/cc_item_progressbar.h @@ -79,8 +79,6 @@ class CProgressBar : public CComponentsItem ///to evaluate values, these will be convert to the graph int pb_value, pb_max_value; - std::string graphic_file; //NI graphic - int *pb_design, *pb_gradient; int pb_type; @@ -88,7 +86,6 @@ class CProgressBar : public CComponentsItem ///paints graph void paintProgress(bool do_save_bg = CC_SAVE_SCREEN_NO); - void paintGraphic(); //NI graphic void paintStarBar(); //NI starbar public: @@ -135,9 +132,6 @@ class CProgressBar : public CComponentsItem const int w, const int h, const int val, const int max_val){x=x_pos; y=y_pos; width=w; height=h; pb_value=val; pb_max_value=max_val;} - //NI graphic - void setGraphic(std::string graphic) { graphic_file = graphic; } - ///force update on next paint void reset() { pb_last_width = -1; } void paint(bool do_save_bg = CC_SAVE_SCREEN_NO); @@ -148,8 +142,7 @@ class CProgressBar : public CComponentsItem PB_MATRIX, /* 0 */ PB_LINES_V, /* 1 */ PB_LINES_H, /* 2 */ - PB_COLOR, /* 3 */ - PB_GRAPHIC /* 4 */ //NI graphic + PB_COLOR /* 3 */ }; enum pb_type_t { diff --git a/src/gui/osd_progressbar_setup.cpp b/src/gui/osd_progressbar_setup.cpp index 4f8140b50..a1da1e8ae 100644 --- a/src/gui/osd_progressbar_setup.cpp +++ b/src/gui/osd_progressbar_setup.cpp @@ -45,9 +45,8 @@ #define _LOCALE_PROGRESSBAR_COLOR_HORIZONTAL LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_2 #define _LOCALE_PROGRESSBAR_COLOR_FULL LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_3 #define _LOCALE_PROGRESSBAR_COLOR_MONO LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_4 -#define _LOCALE_PROGRESSBAR_COLOR_GRAPHIC LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_5 //NI -#define PROGRESSBAR_COLOR_OPTION_COUNT 7 //NI +#define PROGRESSBAR_COLOR_OPTION_COUNT 6 const CMenuOptionChooser::keyval PROGRESSBAR_COLOR_OPTIONS[PROGRESSBAR_COLOR_OPTION_COUNT] = { { CProgressBar::PB_OFF, LOCALE_OPTIONS_OFF }, @@ -55,8 +54,7 @@ const CMenuOptionChooser::keyval PROGRESSBAR_COLOR_OPTIONS[PROGRESSBAR_COLOR_OPT { CProgressBar::PB_MATRIX, _LOCALE_PROGRESSBAR_COLOR_MATRIX }, { CProgressBar::PB_LINES_V, _LOCALE_PROGRESSBAR_COLOR_VERTICAL }, { CProgressBar::PB_LINES_H, _LOCALE_PROGRESSBAR_COLOR_HORIZONTAL }, - { CProgressBar::PB_COLOR, _LOCALE_PROGRESSBAR_COLOR_FULL }, - { CProgressBar::PB_GRAPHIC, _LOCALE_PROGRESSBAR_COLOR_GRAPHIC } //NI + { CProgressBar::PB_COLOR, _LOCALE_PROGRESSBAR_COLOR_FULL } }; #define PROGRESSBAR_TIMESCALE_INVERT_OPTION_COUNT 2 diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index a01f6e7e7..4257bbcb3 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -536,9 +536,8 @@ const CMenuOptionChooser::keyval OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS[OPTIONS_ #define _LOCALE_PROGRESSBAR_COLOR_HORIZONTAL LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_2 #define _LOCALE_PROGRESSBAR_COLOR_FULL LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_3 #define _LOCALE_PROGRESSBAR_COLOR_MONO LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_4 -#define _LOCALE_PROGRESSBAR_COLOR_GRAPHIC LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_5 //NI -#define PROGRESSBAR_COLOR_OPTION_COUNT 7 //NI +#define PROGRESSBAR_COLOR_OPTION_COUNT 6 const CMenuOptionChooser::keyval PROGRESSBAR_COLOR_OPTIONS[PROGRESSBAR_COLOR_OPTION_COUNT] = { { CProgressBar::PB_OFF, LOCALE_OPTIONS_OFF }, @@ -546,8 +545,7 @@ const CMenuOptionChooser::keyval PROGRESSBAR_COLOR_OPTIONS[PROGRESSBAR_COLOR_OPT { CProgressBar::PB_MATRIX, _LOCALE_PROGRESSBAR_COLOR_MATRIX }, { CProgressBar::PB_LINES_V, _LOCALE_PROGRESSBAR_COLOR_VERTICAL }, { CProgressBar::PB_LINES_H, _LOCALE_PROGRESSBAR_COLOR_HORIZONTAL }, - { CProgressBar::PB_COLOR, _LOCALE_PROGRESSBAR_COLOR_FULL }, - { CProgressBar::PB_GRAPHIC, _LOCALE_PROGRESSBAR_COLOR_GRAPHIC } //NI + { CProgressBar::PB_COLOR, _LOCALE_PROGRESSBAR_COLOR_FULL } }; //NI iconsets diff --git a/src/gui/volumebar.cpp b/src/gui/volumebar.cpp index e4694a48f..4d933c446 100644 --- a/src/gui/volumebar.cpp +++ b/src/gui/volumebar.cpp @@ -202,10 +202,6 @@ void CVolumeBar::initVolumeBarScale() vb_pb->setRgb(85, 75, 100); vb_pb->setFrameThickness(0); //NI vb_pb->setProgress(vb_pbx, vb_pby, vb_pbw, vb_pbh, *vb_vol, 100); - - //NI - if (g_settings.theme.progressbar_design == CProgressBar::PB_GRAPHIC) - vb_pb->setGraphic("volumebar"); } //set digit text with current volume value diff --git a/src/neutrino.cpp b/src/neutrino.cpp index cfa906528..8ed06f110 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1150,6 +1150,14 @@ void CNeutrinoApp::upgradeSetup(const char * fname) if (g_settings.movieplayer_bisection_jump == 1) g_settings.movieplayer_bisection_jump = 5; } + //NI + if (g_settings.version_pseudo < "20170606000000") + { + //remove CProgressBar::PB_GRAPHIC + + if (g_settings.theme.progressbar_design == 4 /*CProgressBar::PB_GRAPHIC*/) + g_settings.theme.progressbar_design = CProgressBar::PB_MONO; + } g_settings.version_pseudo = NEUTRINO_VERSION_PSEUDO; configfile.setString("version_pseudo", g_settings.version_pseudo); diff --git a/src/system/locals.h b/src/system/locals.h index 2b29b273f..590eb8b0d 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -1789,7 +1789,6 @@ typedef enum LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_2, LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_3, LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_4, - LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_5, LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_LONG, LOCALE_MISCSETTINGS_PROGRESSBAR_GRADIENT, LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index e2132e314..6026eb803 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -1789,7 +1789,6 @@ const char * locale_real_names[] = "miscsettings.progressbar_design_2", "miscsettings.progressbar_design_3", "miscsettings.progressbar_design_4", - "miscsettings.progressbar_design_5", "miscsettings.progressbar_design_long", "miscsettings.progressbar_gradient", "miscsettings.progressbar_infobar_position", diff --git a/version_pseudo.h b/version_pseudo.h index 3cd859b22..8375fce6c 100644 --- a/version_pseudo.h +++ b/version_pseudo.h @@ -1 +1 @@ -#define NEUTRINO_VERSION_PSEUDO "20170516150000" +#define NEUTRINO_VERSION_PSEUDO "20170606000000" From a9f6059ba2cb0d888b436604b03da8bebcbf625f Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 00:23:04 +0200 Subject: [PATCH 11/47] supplement to a0ec4edf2eb4dc2009713a094d8548aef4ccbce0 Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/2e9f516f5aa22780d20c41f47b25438a58309a00 Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - supplement to a0ec4edf2eb4dc2009713a094d8548aef4ccbce0 --- configure.ac | 1 - 1 file changed, 1 deletion(-) diff --git a/configure.ac b/configure.ac index 244e3bc9f..cead7db89 100644 --- a/configure.ac +++ b/configure.ac @@ -300,7 +300,6 @@ data/icons/status/ca/Makefile data/icons/status/channel/Makefile data/icons/status/info/Makefile data/icons/status/markers/Makefile -data/icons/status/progress/Makefile data/icons/status/various/Makefile data/icons/various/Makefile data/inetradio/Makefile From 1ea2d6f1c43fcad0b85e4c934d7a93ccd5aa61e5 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 16:08:29 +0200 Subject: [PATCH 12/47] filebrowser: fix total_pages calculation for CComponentsScrollBar Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/1462b2d3f4b8efa5eff72d0b8a53cdcf0f3acd1e Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - filebrowser: fix total_pages calculation for CComponentsScrollBar --- src/gui/filebrowser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/filebrowser.cpp b/src/gui/filebrowser.cpp index 444bb313b..6e877060d 100644 --- a/src/gui/filebrowser.cpp +++ b/src/gui/filebrowser.cpp @@ -1472,7 +1472,7 @@ void CFileBrowser::paint() paintItem(count); //scrollbar - int total_pages = ((filelist.size() - 1) / listmaxshow) + 1; + int total_pages = filelist.size() == 0 ? 1 : ((filelist.size() - 1) / listmaxshow) + 1; int current_page = (selected / listmaxshow); paintScrollBar(x + width - SCROLLBAR_WIDTH, y + header_height, SCROLLBAR_WIDTH, item_height*listmaxshow, total_pages, current_page); From b78289a92064d44ace095f5871a41043401d981a Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 16:09:48 +0200 Subject: [PATCH 13/47] bouquetlist: fix calculation of footerwidth; wrong font was used Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/05d1e76d0f818f14885f33f56b46f7844868c670 Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - bouquetlist: fix calculation of footerwidth; wrong font was used --- src/gui/bouquetlist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/bouquetlist.cpp b/src/gui/bouquetlist.cpp index 51051ebd1..6cbe7dcc6 100644 --- a/src/gui/bouquetlist.cpp +++ b/src/gui/bouquetlist.cpp @@ -417,7 +417,7 @@ int CBouquetList::show(bool bShowChannelList) for (unsigned int count = 0; count < sizeof(CBouquetListButtons)/sizeof(CBouquetListButtons[0]); count++) { - int w_text = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]->getRenderWidth(g_Locale->getText(CBouquetListButtons[count].locale)); + int w_text = g_Font[SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT]->getRenderWidth(g_Locale->getText(CBouquetListButtons[count].locale)); //NI w_max_text = std::max(w_max_text, w_text); frameBuffer->getIconSize(CBouquetListButtons[count].button, &icol_w, &icol_h); w_max_icon = std::max(w_max_icon, icol_w); From 5f19c363542846f83608a66b99004ec9b650cd4c Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 17:07:07 +0200 Subject: [PATCH 14/47] icons: change filetypes/folder.png for a better visibility Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/a94011b4e47b70770860d647891f76282e30a772 Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - icons: change filetypes/folder.png for a better visibility --- data/icons/filetypes/folder.png | Bin 100 -> 106 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/icons/filetypes/folder.png b/data/icons/filetypes/folder.png index 817e56fd0cf1863b58bd7da5803825432fd97c5a..5cbb0697511341bf314b7e79e5504d89687f25de 100644 GIT binary patch delta 75 zcmYevnxNul=;`7ZqH#VsVS)XR`cL*uCJ%yIxTHD)TX_5g7Qe9XQi?I-;dgCme!${q e>dvk(m4PAV^X_zy|1sSRK;Y@>=d#Wzp$PyMR~nuG delta 69 zcmc~wnV{mJ?djqeqH#VsVS)XR`cL*uCJ%yIxTHD)TX_5g7QgtvLP^C{y Date: Tue, 6 Jun 2017 17:18:58 +0200 Subject: [PATCH 15/47] add prgressbar.gradient when migrating from CProgressBar::PB_GRAPHIC Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/7b2a2d1f8446b439f2d916c4a7e3bdf33d177ea5 Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - add prgressbar.gradient when migrating from CProgressBar::PB_GRAPHIC --- src/neutrino.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 8ed06f110..9757979cb 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1156,7 +1156,10 @@ void CNeutrinoApp::upgradeSetup(const char * fname) //remove CProgressBar::PB_GRAPHIC if (g_settings.theme.progressbar_design == 4 /*CProgressBar::PB_GRAPHIC*/) + { g_settings.theme.progressbar_design = CProgressBar::PB_MONO; + g_settings.theme.progressbar_gradient = 1; + } } g_settings.version_pseudo = NEUTRINO_VERSION_PSEUDO; From e13ab4ec7f432b6bd6671a11d6bb166de9939f75 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 18:26:51 +0200 Subject: [PATCH 16/47] volumebar: use right RADIUS define Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/6065ec0ce508badd3acd98059b8e2c90b8d71545 Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - volumebar: use right RADIUS define --- src/gui/volumebar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/volumebar.cpp b/src/gui/volumebar.cpp index 4d933c446..8322aea65 100644 --- a/src/gui/volumebar.cpp +++ b/src/gui/volumebar.cpp @@ -51,7 +51,7 @@ CVolumeBar::CVolumeBar() void CVolumeBar::initVarVolumeBar() { col_body = COL_MENUCONTENT_PLUS_0; - corner_rad = CORNER_RADIUS_MID; + corner_rad = RADIUS_MID; //NI vb_item_offset = OFFSET_INNER_SMALL; height = CFrameBuffer::getInstance()->scale2Res(g_settings.volume_size); From ca9dcef5d2b87213148a4efee1a16f2a32c440b5 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 21:55:39 +0200 Subject: [PATCH 17/47] align fontsize.filebrowser_item to new default Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/7aaa42917e67f581b362de483803b9966314861e Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - align fontsize.filebrowser_item to new default --- src/neutrino.cpp | 8 +++++++- version_pseudo.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 9757979cb..8d04fad4b 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1154,13 +1154,19 @@ void CNeutrinoApp::upgradeSetup(const char * fname) if (g_settings.version_pseudo < "20170606000000") { //remove CProgressBar::PB_GRAPHIC - if (g_settings.theme.progressbar_design == 4 /*CProgressBar::PB_GRAPHIC*/) { g_settings.theme.progressbar_design = CProgressBar::PB_MONO; g_settings.theme.progressbar_gradient = 1; } } + //NI + if (g_settings.version_pseudo < "20170606215500") + { + //align fontsize.filebrowser_item to new default + if (configfile.getInt32("fontsize.filebrowser_item", 16) == 16) + configfile.setInt32("fontsize.filebrowser_item", 17); + } g_settings.version_pseudo = NEUTRINO_VERSION_PSEUDO; configfile.setString("version_pseudo", g_settings.version_pseudo); diff --git a/version_pseudo.h b/version_pseudo.h index 8375fce6c..8e3fea959 100644 --- a/version_pseudo.h +++ b/version_pseudo.h @@ -1 +1 @@ -#define NEUTRINO_VERSION_PSEUDO "20170606000000" +#define NEUTRINO_VERSION_PSEUDO "20170606215500" From 2e9f1b3f04f2707c4f15b2f8ecf34a34ddfef01e Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 23:18:48 +0200 Subject: [PATCH 18/47] infoviewer_bb: "fix" height of ca-bar; ... replace OFFSET define with fixed value. This needs more fixes. Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/3598ae784909e8e293064e3a2ff253dc0c6350ea Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - infoviewer_bb: "fix" height of ca-bar; ... replace OFFSET define with fixed value. This needs more fixes. --- src/gui/infoviewer_bb.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/infoviewer_bb.cpp b/src/gui/infoviewer_bb.cpp index 84df919a9..961fe3da3 100644 --- a/src/gui/infoviewer_bb.cpp +++ b/src/gui/infoviewer_bb.cpp @@ -923,7 +923,7 @@ void CInfoViewerBB::paint_ca_bar() if (g_settings.infobar_casystem_frame) { if (ca_bar == NULL) - ca_bar = new CComponentsShapeSquare(g_InfoViewer->ChanInfoX + OFFSET_INNER_MID, g_InfoViewer->BoxEndY, ca_width - 2*OFFSET_INNER_MID, bottom_bar_offset - OFFSET_INNER_MID, NULL, CC_SHADOW_ON, COL_INFOBAR_CASYSTEM_PLUS_2, COL_INFOBAR_CASYSTEM_PLUS_0); + ca_bar = new CComponentsShapeSquare(g_InfoViewer->ChanInfoX + OFFSET_INNER_MID, g_InfoViewer->BoxEndY, ca_width - 2*OFFSET_INNER_MID, bottom_bar_offset - 10, NULL, CC_SHADOW_ON, COL_INFOBAR_CASYSTEM_PLUS_2, COL_INFOBAR_CASYSTEM_PLUS_0); //NI ca_bar->enableShadow(CC_SHADOW_ON, OFFSET_SHADOW/2, true); ca_bar->setFrameThickness(1); //NI ca_bar->setCorner(RADIUS_SMALL, CORNER_ALL); From 8c6d91b20e0c43bf95f0ae162c70e23eaf2e5577 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:07:08 +0200 Subject: [PATCH 19/47] fonts: add ubuntumono-r-webfont.ttf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/65f1b6d43e82ed1297bf5a3bf55ae67fa9e96f35 Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - fonts: add ubuntumono-r-webfont.ttf --- data/fonts/Makefile.am | 1 + data/fonts/ubuntumono-r-webfont.ttf | Bin 0 -> 48132 bytes 2 files changed, 1 insertion(+) create mode 100644 data/fonts/ubuntumono-r-webfont.ttf diff --git a/data/fonts/Makefile.am b/data/fonts/Makefile.am index e781d565a..58ed9d8e2 100644 --- a/data/fonts/Makefile.am +++ b/data/fonts/Makefile.am @@ -5,6 +5,7 @@ install_DATA = \ ubuntu-l-webfont.ttf \ ubuntu-r-webfont.ttf \ ubuntumono-b-webfont.ttf \ + ubuntumono-r-webfont.ttf \ Roboto-Regular.ttf \ micron_bold.ttf \ micron.ttf \ diff --git a/data/fonts/ubuntumono-r-webfont.ttf b/data/fonts/ubuntumono-r-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f3d77f549bfb36ba09afd272f3ba9a3b58790b60 GIT binary patch literal 48132 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 G#{L(1ui4=M literal 0 HcmV?d00001 From eac2dccfb63b428d65d12c43b395e9d571f3d880 Mon Sep 17 00:00:00 2001 From: Michael Liebmann Date: Wed, 7 Jun 2017 14:12:27 +0200 Subject: [PATCH 20/47] HD1: Workaround for missing cs_get_chip_type Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/a6fe60d60a5363973459384a156ed49c9e9ee91c Author: Michael Liebmann Date: 2017-06-07 (Wed, 07 Jun 2017) --- lib/hardware/coolstream/hardware_caps.cpp | 6 +++++- lib/hardware/coolstream/hd1/libcoolstream/cs_api.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/hardware/coolstream/hardware_caps.cpp b/lib/hardware/coolstream/hardware_caps.cpp index b4d4c0a46..865e8ccf5 100644 --- a/lib/hardware/coolstream/hardware_caps.cpp +++ b/lib/hardware/coolstream/hardware_caps.cpp @@ -6,6 +6,7 @@ * * License: GPL v2 or later */ +#include #include "cs_api.h" #include #include @@ -20,7 +21,10 @@ hw_caps_t *get_hwcaps(void) { if (initialized) return ∩︀ int rev = cs_get_revision(); - int chip = cs_get_chip_type(); + int chip = 0; +#ifdef BOXMODEL_CS_HD2 + chip = cs_get_chip_type(); +#endif caps.has_fan = (rev < 8 && CFEManager::getInstance()->getFE(0)->hasSat()); // only SAT-HD1 before rev 8 has fan caps.has_HDMI = 1; caps.has_SCART = (rev != 10); diff --git a/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h b/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h index 9a4e77259..80dd47ade 100644 --- a/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h +++ b/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h @@ -82,7 +82,7 @@ int cs_get_tsp_config(unsigned int port, tsrouter_tsp_config_t *tsp_config); unsigned long long cs_get_serial(void); unsigned int cs_get_revision(void); /* Dummy function for compatibility with hd2 */ -unsigned int cs_get_chip_type(void); +//unsigned int cs_get_chip_type(void); // library version functions From dd5f205c95081cf46e88607b7f88b89d3429a354 Mon Sep 17 00:00:00 2001 From: gixxpunk Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 21/47] hdd_menu.cpp: remove "-T largefile" parameter Some users experience problems with too low amount of inodes (No space left on device but only a few percent of the device are actually used). To fix this, simply use default settings. This will give us a much higher amount of inodes on the hard drive but will waste a bit more space on the device for inode reservation. Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/327dbbed1eccf37eae5339ba98e5823a76cb32d9 Author: gixxpunk Date: 2017-06-07 (Wed, 07 Jun 2017) --- src/gui/hdd_menu.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/hdd_menu.cpp b/src/gui/hdd_menu.cpp index d1d7b6233..11d2831d0 100644 --- a/src/gui/hdd_menu.cpp +++ b/src/gui/hdd_menu.cpp @@ -86,12 +86,12 @@ const CMenuOptionChooser::keyval HDD_SLEEP_OPTIONS[HDD_SLEEP_OPTION_COUNT] = }; devtool_s CHDDMenuHandler::devtools[] = { - { "ext4", "/sbin/fsck.ext4", "-C 1 -f -y", "/sbin/mkfs.ext4", "-T largefile -m0", false, false }, - { "ext3", "/sbin/fsck.ext3", "-C 1 -f -y", "/sbin/mkfs.ext3", "-T largefile -m0", false, false }, - { "ext2", "/sbin/fsck.ext2", "-C 1 -f -y", "/sbin/mkfs.ext2", "-T largefile -m0", false, false }, - { "vfat", "/sbin/fsck.vfat", "-a", "/sbin/mkfs.vfat", "", false, false }, - { "exfat", "/sbin/fsck.exfat", "", "/sbin/mkfs.exfat", "", false, false }, - { "xfs", "/sbin/xfs_repair", "", "/sbin/mkfs.xfs", "-f", false, false }, + { "ext4", "/sbin/fsck.ext4", "-C 1 -f -y", "/sbin/mkfs.ext4", "-m 0", false, false }, + { "ext3", "/sbin/fsck.ext3", "-C 1 -f -y", "/sbin/mkfs.ext3", "-m 0", false, false }, + { "ext2", "/sbin/fsck.ext2", "-C 1 -f -y", "/sbin/mkfs.ext2", "-m 0", false, false }, + { "vfat", "/sbin/fsck.vfat", "-a", "/sbin/mkfs.vfat", "", false, false }, + { "exfat", "/sbin/fsck.exfat", "", "/sbin/mkfs.exfat", "", false, false }, + { "xfs", "/sbin/xfs_repair", "", "/sbin/mkfs.xfs", "-f", false, false }, }; #define FS_MAX (sizeof(CHDDMenuHandler::devtools)/sizeof(devtool_s)) From 7945ff5f148b4453ab5c06138669ef2522af01fb Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 22/47] filebrowser: use "dirs first" sort method by default Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/64f35bd2ef886b8f9206bf84049116dad689551b Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - filebrowser: use "dirs first" sort method by default Signed-off-by: Thilo Graf --- src/neutrino.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 1ec31e04a..6a41d2944 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -855,7 +855,7 @@ int CNeutrinoApp::loadSetup(const char * fname) //Filebrowser g_settings.filebrowser_showrights = configfile.getInt32("filebrowser_showrights", 1); - g_settings.filebrowser_sortmethod = configfile.getInt32("filebrowser_sortmethod", 0); + g_settings.filebrowser_sortmethod = configfile.getInt32("filebrowser_sortmethod", 1); if ((g_settings.filebrowser_sortmethod < 0) || (g_settings.filebrowser_sortmethod >= FILEBROWSER_NUMBER_OF_SORT_VARIANTS)) g_settings.filebrowser_sortmethod = 0; g_settings.filebrowser_denydirectoryleave = configfile.getBool("filebrowser_denydirectoryleave", false); From e3835a8272d13d1d014cc799ce6e1e9e5276498c Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 23/47] filebrowser: use a bit larger regular font by default Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/11aa9054bcbd593a04ca49dd98fe64f288d266a2 Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - filebrowser: use a bit larger regular font by default Signed-off-by: Thilo Graf --- src/gui/osd_setup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index f2ec1473e..99eae1590 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -213,7 +213,7 @@ font_sizes_struct neutrino_font[SNeutrinoSettings::FONT_TYPE_COUNT] = {LOCALE_FONTSIZE_INFOBAR_CHANNAME , 30, CNeutrinoFonts::FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_INFOBAR_INFO , 20, CNeutrinoFonts::FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_INFOBAR_SMALL , 14, CNeutrinoFonts::FONT_STYLE_REGULAR, 1}, - {LOCALE_FONTSIZE_FILEBROWSER_ITEM , 16, CNeutrinoFonts::FONT_STYLE_BOLD , 1}, + {LOCALE_FONTSIZE_FILEBROWSER_ITEM , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_MENU_HINT , 16, CNeutrinoFonts::FONT_STYLE_REGULAR, 0}, {LOCALE_FONTSIZE_MOVIEBROWSER_HEAD , 15, CNeutrinoFonts::FONT_STYLE_REGULAR, 2}, {LOCALE_FONTSIZE_MOVIEBROWSER_LIST , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 0}, From 0e082688e751f5cfc0d0cd1becd7bbff58df84c6 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 24/47] locale: small changes in filebrowser's sort locales Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/49bd2e9ba72930bbd6cfec93a80815540f644fff Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - locale: small changes in filebrowser's sort locales Signed-off-by: Thilo Graf --- data/locale/deutsch.locale | 10 +++++----- data/locale/english.locale | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index d44cc4275..d1bb700f7 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -593,11 +593,11 @@ filebrowser.prevpage Seite zurück filebrowser.scan Durchsuche Verzeichnisse filebrowser.select Auswählen filebrowser.showrights Dateirechte anzeigen -filebrowser.sort.date (Datum) -filebrowser.sort.name (Dateiname) -filebrowser.sort.namedirsfirst (Dateiname2) -filebrowser.sort.size (Größe) -filebrowser.sort.type (Typ) +filebrowser.sort.date Datum +filebrowser.sort.name Name +filebrowser.sort.namedirsfirst Name, Verz. zuerst +filebrowser.sort.size Größe +filebrowser.sort.type Typ filesystem.is.utf8 Dateisystem filesystem.is.utf8.option.iso8859.1 ISO-8859-1 filesystem.is.utf8.option.utf8 UTF-8 diff --git a/data/locale/english.locale b/data/locale/english.locale index e404aef70..f2934a7df 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -593,11 +593,11 @@ filebrowser.prevpage Prev. Page filebrowser.scan Scaning folder filebrowser.select Select filebrowser.showrights Show file rights -filebrowser.sort.date (date) -filebrowser.sort.name (name) -filebrowser.sort.namedirsfirst (name, dir first) -filebrowser.sort.size (Size) -filebrowser.sort.type (type) +filebrowser.sort.date Date +filebrowser.sort.name Name +filebrowser.sort.namedirsfirst Name, dirs first +filebrowser.sort.size Size +filebrowser.sort.type Type filesystem.is.utf8 file system filesystem.is.utf8.option.iso8859.1 ISO-8859-1 filesystem.is.utf8.option.utf8 UTF-8 From d08e36e8617a6b146c6569b6d21ee86e1b7810f4 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 25/47] filebrowser: small design reworks ... * use OFFSET defines * use CComponentsScrollbar * rename some variables Unfortunately we can't use CComponentsFooter, because CComponentsFooter can't handle button_label_ext yet Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/cb36d32799d2e85f67716a94028de2453a18a4db Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - filebrowser: small design reworks ... * use OFFSET defines * use CComponentsScrollbar * rename some variables Unfortunately we can't use CComponentsFooter, because CComponentsFooter can't handle button_label_ext yet Signed-off-by: Thilo Graf --- src/gui/filebrowser.cpp | 135 ++++++++++++++++++++-------------------- src/gui/filebrowser.h | 8 +-- 2 files changed, 72 insertions(+), 71 deletions(-) diff --git a/src/gui/filebrowser.cpp b/src/gui/filebrowser.cpp index d1f725fcf..1c0175b47 100644 --- a/src/gui/filebrowser.cpp +++ b/src/gui/filebrowser.cpp @@ -268,19 +268,18 @@ void CFileBrowser::fontInit() height = frameBuffer->getScreenHeightRel(); x = getScreenStartX(width); - theight = fnt_title->getHeight(); - fheight = fnt_item->getHeight(); - if (fheight == 0) - fheight = 1; /* avoid div by zero on invalid font */ - //foheight = fnt_foot->getHeight()+6; //initial height value for buttonbar; TODO get value from buttonbar - foheight = paintFoot(false); - skwidth = 26; + header_height = fnt_title->getHeight(); + item_height = fnt_item->getHeight(); + if (item_height == 0) + item_height = 1; /* avoid div by zero on invalid font */ + footer_height = paintFoot(false); + smskey_width = fnt_foot->getRenderWidth("M") + OFFSET_INNER_MID; liststart = 0; - listmaxshow = std::max(1,(int)(height - theight - foheight)/fheight); + listmaxshow = std::max(1,(int)(height - header_height - footer_height)/item_height); //recalc height - height = theight + listmaxshow * fheight + foheight; + height = header_height + listmaxshow * item_height + footer_height; y = getScreenStartY(height); } @@ -1167,8 +1166,8 @@ void CFileBrowser::hide() void CFileBrowser::paintItem(unsigned int pos) { - int colwidth1, colwidth2, colwidth3; - int ypos = y+ theight+0 + pos*fheight; + int col1_width, col2_width, col3_width; + int ypos = y + header_height + pos*item_height; CFile * actual_file = NULL; std::string fileicon; unsigned int currpos = liststart + pos; @@ -1176,7 +1175,7 @@ void CFileBrowser::paintItem(unsigned int pos) if (currpos >= filelist.size()) { // just paint an empty line - frameBuffer->paintBoxRel(x,ypos, width- 15, fheight, COL_MENUCONTENT_PLUS_0); + frameBuffer->paintBoxRel(x, ypos, width - SCROLLBAR_WIDTH, item_height, COL_MENUCONTENT_PLUS_0); return; } @@ -1196,15 +1195,15 @@ void CFileBrowser::paintItem(unsigned int pos) i_radius = RADIUS_LARGE; if (i_radius) - frameBuffer->paintBoxRel(x,ypos, width- 15, fheight, COL_MENUCONTENT_PLUS_0); - frameBuffer->paintBoxRel(x,ypos, width- 15, fheight, bgcolor, i_radius); + frameBuffer->paintBoxRel(x, ypos, width - SCROLLBAR_WIDTH, item_height, COL_MENUCONTENT_PLUS_0); + frameBuffer->paintBoxRel(x, ypos, width - SCROLLBAR_WIDTH, item_height, bgcolor, i_radius); if (g_settings.filebrowser_showrights == 0 && S_ISREG(actual_file->Mode)) - colwidth2 = 0; + col2_width = 0; else - colwidth2 = fnt_item->getRenderWidth("rwxrwxrwx"); - colwidth3 = fnt_item->getRenderWidth("222.222G"); - colwidth1 = width - 35 - colwidth2 - colwidth3 - 10; + col2_width = fnt_item->getRenderWidth("rwxrwxrwx"); + col3_width = fnt_item->getRenderWidth("222.222G"); + col1_width = width - SCROLLBAR_WIDTH - OFFSET_INNER_MID - col3_width - OFFSET_INNER_MID - col2_width - OFFSET_INNER_MID; if ( !actual_file->Name.empty() ) { @@ -1231,9 +1230,15 @@ void CFileBrowser::paintItem(unsigned int pos) default: fileicon = NEUTRINO_ICON_FILE; } - frameBuffer->paintIcon(fileicon, x+5 , ypos + (fheight-16) / 2 ); - fnt_item->RenderString(x + 35, ypos + fheight, colwidth1 - 10 , FILESYSTEM_ENCODING_TO_UTF8_STRING(actual_file->getFileName()), color); + int icon_w = 0; + int icon_h = 0; + frameBuffer->getIconSize(NEUTRINO_ICON_FILE, &icon_w, &icon_h); + + frameBuffer->paintIcon(fileicon, x + OFFSET_INNER_MID, ypos, item_height); + + int col1_offset = OFFSET_INNER_MID + icon_w + OFFSET_INNER_MID; + fnt_item->RenderString(x + col1_offset, ypos + item_height, col1_width - col1_offset, FILESYSTEM_ENCODING_TO_UTF8_STRING(actual_file->getFileName()), color); if( S_ISREG(actual_file->Mode) ) { @@ -1246,13 +1251,13 @@ void CFileBrowser::paintItem(unsigned int pos) modestring[9] = 0; - fnt_item->RenderString(x + width - 25 - colwidth3 - colwidth2 , ypos+ fheight, colwidth2, modestring, color); + fnt_item->RenderString(x + width - SCROLLBAR_WIDTH - OFFSET_INNER_MID - col3_width - OFFSET_INNER_MID - col2_width , ypos + item_height, col2_width, modestring, color); } #define GIGABYTE 1073741824LL #define MEGABYTE 1048576LL #define KILOBYTE 1024LL - char tmpstr[256]; + char sizestring[256]; const char *unit = ""; int64_t factor = 0; if (actual_file->Size >= GIGABYTE) @@ -1274,14 +1279,14 @@ void CFileBrowser::paintItem(unsigned int pos) { int a = actual_file->Size / factor; int b = (actual_file->Size - a * factor) * 1000 / factor; - snprintf(tmpstr, sizeof(tmpstr), "%d.%03d%s", a, b, unit); + snprintf(sizestring, sizeof(sizestring), "%d.%03d%s", a, b, unit); } else - snprintf(tmpstr,sizeof(tmpstr),"%d", (int)actual_file->Size); + snprintf(sizestring,sizeof(sizestring),"%d", (int)actual_file->Size); /* right align file size */ - int sz_w = fnt_item->getRenderWidth(tmpstr); - fnt_item->RenderString(x + width - sz_w - 25, ypos+ fheight, sz_w, tmpstr, color); + int sz_w = fnt_item->getRenderWidth(sizestring); + fnt_item->RenderString(x + width - SCROLLBAR_WIDTH - OFFSET_INNER_MID - sz_w, ypos + item_height, sz_w, sizestring, color); } if(actual_file->isDir()) @@ -1292,7 +1297,7 @@ void CFileBrowser::paintItem(unsigned int pos) strftime(timestring, 18, "%d-%m-%Y %H:%M", gmtime(&rawtime)); /* right align directory time */ int time_w = fnt_item->getRenderWidth(timestring); - fnt_item->RenderString(x + width - time_w - 25, ypos+ fheight, time_w, timestring, color); + fnt_item->RenderString(x + width - SCROLLBAR_WIDTH - OFFSET_INNER_MID - time_w, ypos + item_height, time_w, timestring, color); } } } @@ -1317,16 +1322,16 @@ void CFileBrowser::paintHead() /* too long? Leave out the "Filebrowser" or "Shoutcast" prefix * the allocated space is sufficient since it is surely shorter than before */ - if (fnt_title->getRenderWidth(l_name) > width - 11) + if (fnt_title->getRenderWidth(l_name) > width - 2*OFFSET_INNER_MID) l = sprintf(l_name, "%s", FILESYSTEM_ENCODING_TO_UTF8_STRING(name).c_str()); if (l_name[l - 1] == '/') l_name[--l] = '\0'; /* still too long? the last part is probably more interesting than the first part... */ - while ((fnt_title->getRenderWidth(&l_name[i]) > width - 20) && (i < l)) + while ((fnt_title->getRenderWidth(&l_name[i]) > width - 2*OFFSET_INNER_MID) && (i < l)) i++; - CComponentsHeader header(x, y, width, theight, &l_name[i]); + CComponentsHeader header(x, y, width, header_height, &l_name[i]); header.paint(CC_SAVE_SCREEN_NO); free(l_name); @@ -1360,17 +1365,12 @@ bool chooserDir(std::string &setting_dir, bool test_dir, const char *action_str, return false; } -const struct button_label FileBrowserFilterButton[2] = -{ - { NEUTRINO_ICON_BUTTON_BLUE , LOCALE_FILEBROWSER_FILTER_INACTIVE }, - { NEUTRINO_ICON_BUTTON_BLUE , LOCALE_FILEBROWSER_FILTER_ACTIVE }, -}; - int CFileBrowser::paintFoot(bool show) { - int cnt,res; + int cnt, res; std::string sort_text = g_Locale->getText(LOCALE_MOVIEBROWSER_FOOT_SORT); + sort_text += " "; sort_text += g_Locale->getText(sortByNames[g_settings.filebrowser_sortmethod]); int sort_text_len = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]->getRenderWidth(g_Locale->getText(LOCALE_MOVIEBROWSER_FOOT_SORT)); @@ -1380,65 +1380,72 @@ int CFileBrowser::paintFoot(bool show) sort_text_len += len; - neutrino_locale_t f_loc = LOCALE_FILEBROWSER_FILTER_INACTIVE; + neutrino_locale_t locale_filebrowser_filter = LOCALE_FILEBROWSER_FILTER_INACTIVE; if (Filter != NULL && use_filter) - f_loc = LOCALE_FILEBROWSER_FILTER_ACTIVE; + locale_filebrowser_filter = LOCALE_FILEBROWSER_FILTER_ACTIVE; - button_label_ext footerButtons_pm[] = { + button_label_ext buttons_playlistmode[] = { { NEUTRINO_ICON_BUTTON_RED, LOCALE_FILEBROWSER_DELETE, NULL, 0, false }, - { NEUTRINO_ICON_BUTTON_GREEN, LOCALE_FILEBROWSER_ADD, NULL, 0, false }, + { NEUTRINO_ICON_BUTTON_GREEN, LOCALE_FILEBROWSER_ADD, NULL, 0, false }, { NEUTRINO_ICON_BUTTON_YELLOW, NONEXISTANT_LOCALE, sort_text.c_str(), sort_text_len, false }, - { NEUTRINO_ICON_BUTTON_BLUE, LOCALE_AUDIOPLAYER_SHUFFLE, NULL, 0, false }, + { NEUTRINO_ICON_BUTTON_BLUE, LOCALE_AUDIOPLAYER_SHUFFLE, NULL, 0, false }, { NEUTRINO_ICON_BUTTON_OKAY, LOCALE_FILEBROWSER_SELECT, NULL, 0, false }, { NEUTRINO_ICON_BUTTON_PLAY, LOCALE_FILEBROWSER_MARK, NULL, 0, false }, }; - button_label_ext footerButtons[] = { + button_label_ext buttons_filelistmode[] = { { NEUTRINO_ICON_BUTTON_RED, NONEXISTANT_LOCALE, sort_text.c_str(), sort_text_len, false }, { NEUTRINO_ICON_BUTTON_OKAY, LOCALE_FILEBROWSER_SELECT, NULL, 0, false }, { NEUTRINO_ICON_BUTTON_MUTE_SMALL, LOCALE_FILEBROWSER_DELETE, NULL, 0, false }, { NEUTRINO_ICON_BUTTON_PLAY, LOCALE_FILEBROWSER_MARK, NULL, 0, false }, - { NEUTRINO_ICON_BUTTON_BLUE, f_loc, NULL, 0, false }, + { NEUTRINO_ICON_BUTTON_BLUE, locale_filebrowser_filter, NULL, 0, false }, }; if (playlistmode) { - cnt = sizeof(footerButtons_pm) / sizeof(button_label_ext); + cnt = sizeof(buttons_playlistmode)/sizeof(button_label_ext); if (!show) - return paintButtons(footerButtons_pm, cnt, 0, 0, 0, 0, 0, false, NULL, NULL); + return paintButtons(buttons_playlistmode, cnt, 0, 0, 0, 0, 0, false, NULL, NULL); } else { - cnt = sizeof(footerButtons) / sizeof(button_label_ext); + cnt = sizeof(buttons_filelistmode)/sizeof(button_label_ext); if (!show) - return paintButtons(footerButtons, cnt, 0, 0, 0, 0, 0, false, NULL, NULL); + return paintButtons(buttons_filelistmode, cnt, 0, 0, 0, 0, 0, false, NULL, NULL); } - int fowidth = width - skwidth; + int footer_width = width - smskey_width; - - if (filelist.empty()) { - frameBuffer->paintBoxRel(x, y + height - foheight, width, foheight, COL_MENUFOOT_PLUS_0, RADIUS_MID, CORNER_BOTTOM); - return foheight; + if (filelist.empty()) + { + // show an empty footer + frameBuffer->paintBoxRel(x, y + height - footer_height, width, footer_height, COL_MENUFOOT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM); + return footer_height; } + + /* + We can't use CComponentsFooter because + CComponentsFooter can't handle button_label_ext + */ if (playlistmode) - res = paintButtons(footerButtons_pm, Filter ? cnt : cnt - 1, x, y + height - foheight, width, foheight, fowidth); + res = paintButtons(buttons_playlistmode, cnt, x, y + height - footer_height, width, footer_height, footer_width); else - res = paintButtons(footerButtons, Filter ? cnt : cnt - 1, x, y + height - foheight, width, foheight, fowidth); + res = paintButtons(buttons_filelistmode, cnt, x, y + height - footer_height, width, footer_height, footer_width); + paintSMSKey(); return res; } void CFileBrowser::paintSMSKey() { - int skheight = fnt_foot->getHeight(); + int smskey_height = fnt_foot->getHeight(); //background - frameBuffer->paintBoxRel(x + width - skwidth, y + height - foheight, skwidth, foheight, COL_MENUFOOT_PLUS_0, RADIUS_MID, CORNER_BOTTOM_RIGHT); + frameBuffer->paintBoxRel(x + width - smskey_width, y + height - footer_height, smskey_width, footer_height, COL_MENUFOOT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM_RIGHT); if(m_SMSKeyInput.getOldKey()!=0) { char cKey[2] = {m_SMSKeyInput.getOldKey(), 0}; cKey[0] = toupper(cKey[0]); int len = fnt_foot->getRenderWidth(cKey); - fnt_foot->RenderString(x + width - skwidth, y + height - foheight + foheight/2 + skheight/2, len, cKey, COL_MENUHEAD_TEXT); + fnt_foot->RenderString(x + width - smskey_width, y + height - footer_height + footer_height/2 + smskey_height/2, len, cKey, COL_MENUHEAD_TEXT); } } @@ -1452,16 +1459,10 @@ void CFileBrowser::paint() paintItem(count); //scrollbar - int ypos = y+ theight; - int sb = fheight* listmaxshow; - frameBuffer->paintBoxRel(x+ width- 15,ypos, 15, sb, COL_SCROLLBAR_PLUS_0); + int total_pages = ((filelist.size() - 1) / listmaxshow) + 1; + int current_page = (selected / listmaxshow); - int sbc= ((filelist.size()- 1)/ listmaxshow)+ 1; - int sbs= (selected/listmaxshow); - if (sbc < 1) - sbc = 1; - - frameBuffer->paintBoxRel(x+ width- 13, ypos+ 2+ sbs*(sb-4)/sbc, 11, (sb-4)/sbc, COL_SCROLLBAR_ACTIVE_PLUS_0, RADIUS_SMALL); + paintScrollBar(x + width - SCROLLBAR_WIDTH, y + header_height, SCROLLBAR_WIDTH, item_height*listmaxshow, total_pages, current_page); } void CFileBrowser::SMSInput(const neutrino_msg_t msg) diff --git a/src/gui/filebrowser.h b/src/gui/filebrowser.h index 3d458125d..4de5981c2 100644 --- a/src/gui/filebrowser.h +++ b/src/gui/filebrowser.h @@ -162,10 +162,10 @@ class CFileBrowser unsigned int listmaxshow; std::vector selections; - int fheight; // Fonthoehe Filelist-Inhalt - int theight; // Fonthoehe Filelist-Titel - int foheight; // Hoehe der button leiste - int skwidth; // width SMSKey field + int item_height; + int header_height; + int footer_height; + int smskey_width; std::string name; std::string base; std::string m_baseurl; From 4f55c561d745011fd155cb77309747a6e10d4f6b Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 26/47] icons: add filetype-icon for pictures Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/d8f364ca4630607918860e091c2d767dcc1125dc Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - icons: add filetype-icon for pictures Signed-off-by: Thilo Graf --- data/icons/filetypes/Makefile.am | 3 ++- data/icons/filetypes/picture.png | Bin 0 -> 708 bytes src/gui/widget/icons.h | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 data/icons/filetypes/picture.png diff --git a/data/icons/filetypes/Makefile.am b/data/icons/filetypes/Makefile.am index ec9f09d5a..c234f8891 100644 --- a/data/icons/filetypes/Makefile.am +++ b/data/icons/filetypes/Makefile.am @@ -3,4 +3,5 @@ installdir = $(ICONSDIR) install_DATA = \ file.png \ folder.png \ - movie.png + movie.png \ + picture.png diff --git a/data/icons/filetypes/picture.png b/data/icons/filetypes/picture.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f450c7878203a6436d0333132923f62212e95f GIT binary patch literal 708 zcmV;#0z3VQP)dc)x&g=A_nR^%6DjN9aKl9D}e{;^6?@0L1LyAuI?QieM zjFqX10!>w+k~F$5)YzL>6}7jmK;6kVoDAb10U&@B1DcON=G&I)24f72Nr}j3 zLV$%Lu2NhJ9`HVuM%UR53E+I&BYvsA%zzvK8VMedb%42o<^ab9a&A&>5BHYTp!Hfy z0=Rgrmv=QV1EuuxDw3K5K1~8&r>Maq(Y;N+Mc^6wz_dVbMKccF%p`#Bw)^}-gKwZZ z3p8ppPO|wZ(Epj5W&oFb$EH!yNM?P&1p17_IC%X`0_Zs1!;jW}H*CcOD+y6isbhgP z0d?>T%-LB?nii(BB-4iQJQUFiy{b5cb62|)z>XtV_}b!8!_8U9S|*Ly#tePUaUA?I zbFi$)w;-a$L;yMTP_?xk0}n4JfZClIUOF{kq!;U0xeO>$eGH9c@omCIF6Y2?JvehN zWcq!?fJAL8ww%Dr2VDuEYI}x@k57#BB8JWDX`W$#4`VWh$3g@`iyNXNl}bUT|8Lti zDmS*GzppcSQnRartNfW!y3og_buL8U;N6f6{zJq7MWH}x8ls#;0N?jf-gE#j?sg=A zHM={xI{w@!DGt!I+JQ{-9OfFvf6|OY8M>~=O;K|M@@OH;8~5Ys?Y0C^mwA0lLbyDN zsj5U#rnoA9$M=t_>DiurT8mWJRYmD)3bsTEkn#bi1s8#kWtAKz$QR_3q*zmYP!x8f qOe)SxkG4RbNr^`=Pkvs7>) Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 27/47] filebrowser: use NEUTRINO_ICON_PICTURE to mark pictures Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/78dd5e2923b057ed4ef0054dc8c5501b5e772639 Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - filebrowser: use NEUTRINO_ICON_PICTURE to mark pictures Signed-off-by: Thilo Graf --- src/gui/filebrowser.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/filebrowser.cpp b/src/gui/filebrowser.cpp index 1c0175b47..feeb59004 100644 --- a/src/gui/filebrowser.cpp +++ b/src/gui/filebrowser.cpp @@ -1218,6 +1218,7 @@ void CFileBrowser::paintItem(unsigned int pos) case CFile::FILE_WAV: case CFile::FILE_FLAC: case CFile::FILE_AAC: + case CFile::FILE_PLAYLIST: fileicon = NEUTRINO_ICON_MP3; break; @@ -1226,6 +1227,9 @@ void CFileBrowser::paintItem(unsigned int pos) break; case CFile::FILE_PICTURE: + fileicon = NEUTRINO_ICON_PICTURE; + break; + case CFile::FILE_TEXT: default: fileicon = NEUTRINO_ICON_FILE; From b1b18819b18af9f3e99bcf9ea2ca052447a0f002 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:11 +0200 Subject: [PATCH 28/47] audioplayer: use NEUTRINO_ICON_AUDIO in header Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/6c1d7eea595e82e3f5a3f035f9c7656a5f4fc79d Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - audioplayer: use NEUTRINO_ICON_AUDIO in header Signed-off-by: Thilo Graf --- src/gui/audioplayer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/audioplayer.cpp b/src/gui/audioplayer.cpp index a95fbcdfa..ab6da1ff8 100644 --- a/src/gui/audioplayer.cpp +++ b/src/gui/audioplayer.cpp @@ -261,7 +261,7 @@ int CAudioPlayerGui::exec(CMenuTarget* parent, const std::string &actionKey) m_fheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); int iw, ih; - m_frameBuffer->getIconSize(NEUTRINO_ICON_MP3, &iw, &ih); + m_frameBuffer->getIconSize(NEUTRINO_ICON_AUDIO, &iw, &ih); m_theight = std::max(m_theight, ih+4); m_title_height = m_fheight*2 + 20 + m_sheight + 4; @@ -1536,7 +1536,7 @@ void CAudioPlayerGui::paintHead() if (!m_show_playlist || m_screensaver) return; - CComponentsHeaderLocalized header(m_x, m_y + m_title_height, m_width, m_theight, LOCALE_AUDIOPLAYER_HEAD, NEUTRINO_ICON_MP3); + CComponentsHeaderLocalized header(m_x, m_y + m_title_height, m_width, m_theight, LOCALE_AUDIOPLAYER_HEAD, NEUTRINO_ICON_AUDIO); header.setCorner(RADIUS_MID, CORNER_TOP); if (m_inetmode) From 0158eabeefd1c02d3a4440b68e4693799dd259ac Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 29/47] icons: move mp3.png from /headers to /filetypes; align icon size Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/a43617dda3c45f7fe4c3c71a1c13a44f7d2ee987 Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - icons: move mp3.png from /headers to /filetypes; align icon size Signed-off-by: Thilo Graf --- data/icons/filetypes/Makefile.am | 1 + data/icons/filetypes/mp3.png | Bin 0 -> 961 bytes data/icons/headers/Makefile.am | 1 - 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 data/icons/filetypes/mp3.png diff --git a/data/icons/filetypes/Makefile.am b/data/icons/filetypes/Makefile.am index c234f8891..d71903773 100644 --- a/data/icons/filetypes/Makefile.am +++ b/data/icons/filetypes/Makefile.am @@ -4,4 +4,5 @@ install_DATA = \ file.png \ folder.png \ movie.png \ + mp3.png \ picture.png diff --git a/data/icons/filetypes/mp3.png b/data/icons/filetypes/mp3.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4bb1eb852dbc8148c1d66c67cdc6c926e7240a GIT binary patch literal 961 zcmV;y13vtTP)gymzpBp5DflMVsL?YjC1_e9r!tZ%`A(1od&hm}cwxcIeg6S;bvIX+mX;3txoGOx zwMw)V_aiqkUv8wI1C&Yy!r?G3PfRqIm+f;r2ka@{9pByZ!EbuA#=w&*)Qpy+IDH?Q zcAS7&Z;n8eN(z!Bf#(El1cO3nSJz8t`cD560d%)^byk&@on$B;Va+=Bk2c_0Yyije zIy}`WwSJvin=GrKIJsHi1xWI_>T(TNRaVqS02hZx=5sT%a#W-&NerTIzFo?S-~H3M zM;FbLb(7zVqNoc6*+!D0lq}035ZJ)V%IbPuU5$y*>kW!4KTi4NscSa9LgI1udgp3u zMgRG|J$r42CF7L~{mwX#=dV`;KAat5S+F4vp%9A$wUrivVbt`E*?C{I(ZECi5Ya!? z_NcY2Z@9jrKIq->`o??46IYfW7qh&O$FjT(U}XS@+E=Tr1Wl{R(Xk&E@@?C#3`0W< z3uqf}k~+#ye><`;7L%dN@a86F`yM`=dqW6rQ3XR3f&vfknm2U#or5uv8ML*3^5s$c z(L)qPLX<6hIC2QD=f5j*;qY3jA;lwbqD7K|G{*-)NILl|NvsF_{@I%|MQ5m(!HV0yIoJ|*!nf)JrBHw|DzNzMK9aQC;J)Q{5K(*3 z9QPXWX=Y(O)QlR}zF7Vv`^m0*A0KHiWD=pdx^xNk$?r=81B0^-4F@wP)`zt5Y#Pi+ zTN@fWUqTS_iqpwtHDe(%xTjbQEr??TPj1-l_OgtHnKOlIx5 Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 30/47] icons: add filetype-icon for pictures Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/58d25b5da28483dc8e0ba8f42fc4eea90338f724 Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - icons: add filetype-icon for pictures Signed-off-by: Thilo Graf --- src/gui/widget/icons.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/widget/icons.h b/src/gui/widget/icons.h index 5cd2c2f03..cb2fec42d 100644 --- a/src/gui/widget/icons.h +++ b/src/gui/widget/icons.h @@ -101,6 +101,7 @@ #define NEUTRINO_ICON_LOCK_PASSIVE "lock_passive" #define NEUTRINO_ICON_HIDDEN "hidden" #define NEUTRINO_ICON_MOUNTED "mounted" +#define NEUTRINO_ICON_MOVIE "movie" #define NEUTRINO_ICON_MP3 "mp3" #define NEUTRINO_ICON_MULTIMEDIA "multimedia" #define NEUTRINO_ICON_MOVIEPLAYER "icon_movieplayer" From cde9e063994342e6fe612faabbf29ab84e93792c Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 31/47] file.cpp|h: port filetypes from TangoCash Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/40241710410b00955be6fe0e2ed3f0cfd151bd1c Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - file.cpp|h: port filetypes from TangoCash --- src/driver/file.cpp | 14 +++++++------- src/driver/file.h | 3 +++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/driver/file.cpp b/src/driver/file.cpp index ce4c809f5..87904bb7f 100644 --- a/src/driver/file.cpp +++ b/src/driver/file.cpp @@ -45,18 +45,18 @@ const char * const file_extension_list[] = "aac", "asf", "avi", "bin", "bmp", "cdr", "crw", "dts", "flac", "flv", "gif", "imu", "ipk", "iso", "jpeg", "jpg", "m2a", "m3u", "m3u8", "m4a", "mkv", "mp2", "mp3", - "mpa", "ogg", "opk", "pls", "png", "sh", - "txt", "url", "wav", "xml" + "mp4", "mpa", "mpeg", "mpg", "ogg", "opk", "pls", "png", "sh", + "ts", "txt", "url", "vob", "wav", "xml" }; /* ATTENTION: the array file_extension_list MUST BE SORTED ASCENDING (cf. sort, man bsearch) - otherwise bsearch will not work correctly! */ const CFile::FileType file_type_list[] = { - CFile::FILE_AAC , CFile::FILE_ASF , CFile::FILE_AVI , CFile::FILE_BIN_PACKAGE ,CFile::FILE_PICTURE , CFile::FILE_CDR , CFile::FILE_PICTURE , - CFile::FILE_WAV , CFile::FILE_FLAC , CFile::FILE_FLV , CFile::FILE_PICTURE , CFile::STREAM_PICTURE , CFile::FILE_PKG_PACKAGE ,CFile::FILE_ISO , CFile::FILE_PICTURE , CFile::FILE_PICTURE , - CFile::FILE_MP3 , CFile::FILE_PLAYLIST , CFile::FILE_PLAYLIST , CFile::FILE_AAC , CFile::FILE_MKV , CFile::FILE_MP3 , CFile::FILE_MP3 , - CFile::FILE_MP3 , CFile::FILE_OGG , CFile::FILE_PKG_PACKAGE, CFile::FILE_PLAYLIST , CFile::FILE_PICTURE , CFile::FILE_TEXT , - CFile::FILE_TEXT , CFile::STREAM_AUDIO , CFile::FILE_WAV , CFile::FILE_XML + CFile::FILE_AAC , CFile::FILE_ASF , CFile::FILE_AVI , CFile::FILE_BIN_PACKAGE , CFile::FILE_PICTURE , CFile::FILE_CDR , CFile::FILE_PICTURE , + CFile::FILE_WAV , CFile::FILE_FLAC , CFile::FILE_MPG , CFile::FILE_PICTURE , CFile::STREAM_PICTURE , CFile::FILE_PKG_PACKAGE , CFile::FILE_ISO , CFile::FILE_PICTURE , CFile::FILE_PICTURE , + CFile::FILE_MP3 , CFile::FILE_PLAYLIST , CFile::FILE_PLAYLIST , CFile::FILE_AAC , CFile::FILE_MKV , CFile::FILE_MP3 , CFile::FILE_MP3 , + CFile::FILE_MPG , CFile::FILE_MP3 , CFile::FILE_MPG , CFile::FILE_MPG , CFile::FILE_OGG , CFile::FILE_PKG_PACKAGE , CFile::FILE_PLAYLIST , CFile::FILE_PICTURE , CFile::FILE_TEXT , + CFile::FILE_TS , CFile::FILE_TEXT , CFile::STREAM_AUDIO , CFile::FILE_VOB , CFile::FILE_WAV , CFile::FILE_XML }; int mycasecmp(const void * a, const void * b) diff --git a/src/driver/file.h b/src/driver/file.h index b26e52475..c71e3e37a 100644 --- a/src/driver/file.h +++ b/src/driver/file.h @@ -72,6 +72,9 @@ class CFile STREAM_AUDIO, FILE_PICTURE, STREAM_PICTURE, + FILE_VOB, + FILE_MPG, + FILE_TS, FILE_BIN_PACKAGE, FILE_PKG_PACKAGE }; From e5c1ded350b90747688dda2a81e028ccd48dcc45 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 32/47] filebrowser: port fileicon handling from TangoCash Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/e49c326406253683027fe9e011dae1f72be7ee6b Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - filebrowser: port fileicon handling from TangoCash Signed-off-by: Thilo Graf --- src/gui/filebrowser.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gui/filebrowser.cpp b/src/gui/filebrowser.cpp index feeb59004..444bb313b 100644 --- a/src/gui/filebrowser.cpp +++ b/src/gui/filebrowser.cpp @@ -1230,6 +1230,15 @@ void CFileBrowser::paintItem(unsigned int pos) fileicon = NEUTRINO_ICON_PICTURE; break; + case CFile::FILE_AVI: + case CFile::FILE_ASF: + case CFile::FILE_MKV: + case CFile::FILE_VOB: + case CFile::FILE_MPG: + case CFile::FILE_TS: + fileicon = NEUTRINO_ICON_MOVIE; + break; + case CFile::FILE_TEXT: default: fileicon = NEUTRINO_ICON_FILE; From be6c64a4a9bc6e63b0827e7191074130b1544a8b Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 33/47] icons.h: sort filetype icons Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/535e4e2123421b0659c055b2ffa494fbe8ec0cfd Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - icons.h: sort filetype icons Signed-off-by: Thilo Graf --- src/gui/widget/icons.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/gui/widget/icons.h b/src/gui/widget/icons.h index cb2fec42d..d1664d75c 100644 --- a/src/gui/widget/icons.h +++ b/src/gui/widget/icons.h @@ -91,8 +91,6 @@ #define NEUTRINO_ICON_EPGINFO "epginfo" #define NEUTRINO_ICON_ERROR "error" #define NEUTRINO_ICON_FEATURES "features" -#define NEUTRINO_ICON_FILE "file" -#define NEUTRINO_ICON_FOLDER "folder" #define NEUTRINO_ICON_GAMES "games" #define NEUTRINO_ICON_INFO "information" #define NEUTRINO_ICON_IMPORTANT "important" @@ -101,8 +99,6 @@ #define NEUTRINO_ICON_LOCK_PASSIVE "lock_passive" #define NEUTRINO_ICON_HIDDEN "hidden" #define NEUTRINO_ICON_MOUNTED "mounted" -#define NEUTRINO_ICON_MOVIE "movie" -#define NEUTRINO_ICON_MP3 "mp3" #define NEUTRINO_ICON_MULTIMEDIA "multimedia" #define NEUTRINO_ICON_MOVIEPLAYER "icon_movieplayer" #define NEUTRINO_ICON_NKPLAY "icon_nkplay" @@ -183,7 +179,6 @@ #define NEUTRINO_ICON_STAR_ON "star-on" #define NEUTRINO_ICON_STAR_OFF "star-off" #define NEUTRINO_ICON_TMDB "tmdb" -#define NEUTRINO_ICON_PICTURE "picture" #define DUMMY_ICON "dummy" @@ -261,6 +256,13 @@ #define NEUTRINO_ICON_HINT_RESTORE "hint_restore" #define NEUTRINO_ICON_HINT_FACTORY "hint_factory" +/* filetypes */ +#define NEUTRINO_ICON_FILE "file" +#define NEUTRINO_ICON_FOLDER "folder" +#define NEUTRINO_ICON_MOVIE "movie" +#define NEUTRINO_ICON_MP3 "mp3" +#define NEUTRINO_ICON_PICTURE "picture" + /* plugins */ #define NEUTRINO_ICON_HINT_PLUGIN "hint_plugin" From ba3313b04f59b012ef0e22d923a4e6f11edb72e4 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 34/47] file.cpp|h: port filetypes handling from martii Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/37e2efb3edfab7c09d8feaf29a90bcb56a61810c Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - file.cpp|h: port filetypes handling from martii Signed-off-by: Thilo Graf --- src/driver/file.cpp | 91 ++++++++++++++++++++++++++------------------- src/driver/file.h | 32 ++++++++-------- 2 files changed, 68 insertions(+), 55 deletions(-) diff --git a/src/driver/file.cpp b/src/driver/file.cpp index 87904bb7f..7e02bdf10 100644 --- a/src/driver/file.cpp +++ b/src/driver/file.cpp @@ -34,43 +34,65 @@ #include #endif /* HAVE_CONFIG_H */ -#include #include #include #include -/* ATTENTION: the array file_extension_list MUST BE SORTED ASCENDING (cf. sort, man bsearch) - otherwise bsearch will not work correctly! */ -const char * const file_extension_list[] = -{ - "aac", "asf", "avi", "bin", "bmp", "cdr", "crw", - "dts", "flac", "flv", "gif", "imu", "ipk", "iso", "jpeg", "jpg", - "m2a", "m3u", "m3u8", "m4a", "mkv", "mp2", "mp3", - "mp4", "mpa", "mpeg", "mpg", "ogg", "opk", "pls", "png", "sh", - "ts", "txt", "url", "vob", "wav", "xml" +struct file_ext_s { + const char *ext; + const CFile::FileType type; }; -/* ATTENTION: the array file_extension_list MUST BE SORTED ASCENDING (cf. sort, man bsearch) - otherwise bsearch will not work correctly! */ -const CFile::FileType file_type_list[] = +// ATTENTION: the array MUST BE SORTED ASCENDING (cf. sort, man bsearch) - otherwise bsearch will not work correctly! +static const file_ext_s file_ext[] = { - CFile::FILE_AAC , CFile::FILE_ASF , CFile::FILE_AVI , CFile::FILE_BIN_PACKAGE , CFile::FILE_PICTURE , CFile::FILE_CDR , CFile::FILE_PICTURE , - CFile::FILE_WAV , CFile::FILE_FLAC , CFile::FILE_MPG , CFile::FILE_PICTURE , CFile::STREAM_PICTURE , CFile::FILE_PKG_PACKAGE , CFile::FILE_ISO , CFile::FILE_PICTURE , CFile::FILE_PICTURE , - CFile::FILE_MP3 , CFile::FILE_PLAYLIST , CFile::FILE_PLAYLIST , CFile::FILE_AAC , CFile::FILE_MKV , CFile::FILE_MP3 , CFile::FILE_MP3 , - CFile::FILE_MPG , CFile::FILE_MP3 , CFile::FILE_MPG , CFile::FILE_MPG , CFile::FILE_OGG , CFile::FILE_PKG_PACKAGE , CFile::FILE_PLAYLIST , CFile::FILE_PICTURE , CFile::FILE_TEXT , - CFile::FILE_TS , CFile::FILE_TEXT , CFile::STREAM_AUDIO , CFile::FILE_VOB , CFile::FILE_WAV , CFile::FILE_XML + { "aac", CFile::FILE_AAC }, + { "asf", CFile::FILE_ASF }, + { "avi", CFile::FILE_AVI }, + { "bin", CFile::FILE_BIN_PACKAGE }, + { "bmp", CFile::FILE_PICTURE }, + { "cdr", CFile::FILE_CDR }, + { "crw", CFile::FILE_PICTURE }, + { "dts", CFile::FILE_WAV }, + { "flac", CFile::FILE_FLAC }, + { "flv", CFile::FILE_MPG }, + { "gif", CFile::FILE_PICTURE }, + { "imu", CFile::STREAM_PICTURE }, + { "ipk", CFile::FILE_PKG_PACKAGE }, + { "iso", CFile::FILE_ISO }, + { "jpeg", CFile::FILE_PICTURE }, + { "jpg", CFile::FILE_PICTURE }, + { "m2a", CFile::FILE_MP3 }, + { "m3u", CFile::FILE_PLAYLIST }, + { "m3u8", CFile::FILE_PLAYLIST }, + { "m4a", CFile::FILE_AAC }, + { "mkv", CFile::FILE_MKV }, + { "mp2", CFile::FILE_MP3 }, + { "mp3", CFile::FILE_MP3 }, + { "mp4", CFile::FILE_MPG }, + { "mpa", CFile::FILE_MP3 }, + { "mpeg", CFile::FILE_MPG }, + { "mpg", CFile::FILE_MPG }, + { "ogg", CFile::FILE_OGG }, + { "opk", CFile::FILE_PKG_PACKAGE }, + { "pls", CFile::FILE_PLAYLIST }, + { "png", CFile::FILE_PICTURE }, + { "sh", CFile::FILE_TEXT }, + { "ts", CFile::FILE_TS }, + { "txt", CFile::FILE_TEXT }, + { "url", CFile::STREAM_AUDIO }, + { "vob", CFile::FILE_VOB }, + { "wav", CFile::FILE_WAV }, + { "xml", CFile::FILE_XML } }; int mycasecmp(const void * a, const void * b) { - return strcasecmp(*(const char * *)a, *(const char * *)b); + return strcasecmp(((file_ext_s *)a)->ext, ((file_ext_s *)b)->ext); } -//------------------------------------------------------------------------ -//------------------------------------------------------------------------ - -CFile::CFile() - : Size( 0 ), Mode( 0 ), Marked( false ), Time( 0 ) +CFile::CFile() : Size( 0 ), Mode( 0 ), Marked( false ), Time( 0 ) { - Type = -1; } CFile::FileType CFile::getType(void) const @@ -78,24 +100,17 @@ CFile::FileType CFile::getType(void) const if(S_ISDIR(Mode)) return FILE_DIR; - if (Type < 0) { - Type = (int) FILE_UNKNOWN; - std::string::size_type ext_pos = Name.rfind('.'); + std::string::size_type ext_pos = Name.rfind('.'); - if (ext_pos != std::string::npos) { - const char * key = &(Name.c_str()[ext_pos + 1]); - - void * result = ::bsearch(&key, file_extension_list, sizeof(file_extension_list) / sizeof(const char *), sizeof(const char *), mycasecmp); - - if (result != NULL) - Type = (int) file_type_list[(const char * *)result - (const char * *)&file_extension_list]; - } + if (ext_pos != std::string::npos) { + const char * key = &(Name.c_str()[ext_pos + 1]); + void * result = ::bsearch(&key, file_ext, sizeof(file_ext) / sizeof(file_ext_s), sizeof(file_ext_s), mycasecmp); + if (result) + return ((file_ext_s *)result)->type; } - return (CFile::FileType) Type; + return FILE_UNKNOWN; } -//------------------------------------------------------------------------ - std::string CFile::getFileName(void) const // return name.extension or folder name without trailing / { std::string::size_type namepos = Name.rfind('/'); @@ -103,8 +118,6 @@ std::string CFile::getFileName(void) const // return name.extension or folder n return (namepos == std::string::npos) ? Name : Name.substr(namepos + 1); } -//------------------------------------------------------------------------ - std::string CFile::getPath(void) const // return complete path including trailing / { int pos = 0; diff --git a/src/driver/file.h b/src/driver/file.h index c71e3e37a..9a3be6167 100644 --- a/src/driver/file.h +++ b/src/driver/file.h @@ -55,28 +55,28 @@ class CFile { FILE_UNKNOWN = 0, FILE_AAC, - FILE_AVI, FILE_ASF, - FILE_DIR, - FILE_ISO, - FILE_TEXT, + FILE_AVI, + FILE_BIN_PACKAGE, FILE_CDR, - FILE_MP3, - FILE_MKV, - FILE_OGG, - FILE_WAV, + FILE_DIR, FILE_FLAC, FILE_FLV, - FILE_XML, - FILE_PLAYLIST, - STREAM_AUDIO, - FILE_PICTURE, - STREAM_PICTURE, - FILE_VOB, + FILE_ISO, + FILE_MKV, + FILE_MP3, FILE_MPG, + FILE_OGG, + FILE_PICTURE, + FILE_PKG_PACKAGE, + FILE_PLAYLIST, + FILE_TEXT, FILE_TS, - FILE_BIN_PACKAGE, - FILE_PKG_PACKAGE + FILE_VOB, + FILE_WAV, + FILE_XML, + STREAM_AUDIO, + STREAM_PICTURE }; FileType getType(void) const; From ff97eee1874680334f8c78077c6bbffc41dfe7f6 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 35/47] epgplus: fix possible segfault (thx dbo) Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/866f5c37b8b7ddb2064831acea9488442a6ef502 Author: TangoCash Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ -epgplus: fix possible segfault (thx dbo) Signed-off-by: Thilo Graf --- src/gui/epgplus.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/epgplus.cpp b/src/gui/epgplus.cpp index 7d554df79..f740daafc 100644 --- a/src/gui/epgplus.cpp +++ b/src/gui/epgplus.cpp @@ -1383,6 +1383,8 @@ void EpgPlus::hide() if (this->header->head) { this->header->head->kill(); + delete this->header->head; + this->header->head = NULL; } this->frameBuffer->paintBackgroundBoxRel(this->usableScreenX - DETAILSLINE_WIDTH, this->usableScreenY, DETAILSLINE_WIDTH + this->usableScreenWidth, this->usableScreenHeight); } From 707c74df83bfe3d607d2e999c74854512cc01e5f Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 36/47] Followscreenings: add enumeration for a better readability Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/141d198b291b578d5db0fc2d0439010ea8180bbd Author: Thilo Graf Date: 2017-06-07 (Wed, 07 Jun 2017) --- src/gui/followscreenings.cpp | 2 +- src/gui/followscreenings.h | 6 ++++++ src/gui/record_setup.cpp | 8 ++++++++ src/neutrino.cpp | 3 ++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/gui/followscreenings.cpp b/src/gui/followscreenings.cpp index 2ee471fd6..9f33be0a7 100644 --- a/src/gui/followscreenings.cpp +++ b/src/gui/followscreenings.cpp @@ -67,7 +67,7 @@ CChannelEventList *CFollowScreenings::getFollowScreenings(void) continue; followlist.push_back(*e); - if (followlist.size() == 1 && !g_settings.timer_followscreenings) + if (followlist.size() == 1 && g_settings.timer_followscreenings == FOLLOWSCREENINGS_OFF) break; } } diff --git a/src/gui/followscreenings.h b/src/gui/followscreenings.h index 53e362e3e..d24d39171 100644 --- a/src/gui/followscreenings.h +++ b/src/gui/followscreenings.h @@ -59,6 +59,12 @@ class CFollowScreenings : public CMenuTarget std::vector forwarders; void updateRightIcon(int i, time_t start, unsigned int duration); public: + enum + { + FOLLOWSCREENINGS_OFF = 0, + FOLLOWSCREENINGS_ON = 1, + }; + CFollowScreenings(const t_channel_id Channel_id, time_t Starttime, time_t Stoptime, const std::string &Title, uint64_t EpgID=0, unsigned char Apids=TIMERD_APIDS_STD, bool Safety=false, std::string RecDir="", CChannelEventList *Evtlist=NULL) : CMenuTarget () { this->channel_id = Channel_id; diff --git a/src/gui/record_setup.cpp b/src/gui/record_setup.cpp index 00cd52f39..4213ecf21 100644 --- a/src/gui/record_setup.cpp +++ b/src/gui/record_setup.cpp @@ -41,6 +41,7 @@ #include "record_setup.h" #include +#include #include #include @@ -173,6 +174,13 @@ const CMenuOptionChooser::keyval END_OF_RECORDING[END_OF_RECORDING_COUNT] = {1, LOCALE_RECORDINGMENU_END_OF_RECORDING_EPG} }; +const CMenuOptionChooser::keyval timer_followscreenings_options[] = +{ + {CFollowScreenings::FOLLOWSCREENINGS_OFF ,LOCALE_OPTIONS_OFF }, + {CFollowScreenings::FOLLOWSCREENINGS_ON ,LOCALE_OPTIONS_ON } +}; +size_t timer_followscreenings_options_count = sizeof(timer_followscreenings_options)/sizeof(CMenuOptionChooser::keyval); + int CRecordSetup::showRecordSetup() { CMenuForwarder * mf; diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 6a41d2944..e629a685f 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -77,6 +77,7 @@ #include "gui/eventlist.h" #include "gui/favorites.h" #include "gui/filebrowser.h" +#include "gui/followscreenings.h" #include "gui/hdd_menu.h" #include "gui/infoviewer.h" #include "gui/mediaplayer.h" @@ -500,7 +501,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.timer_remotebox_ip.push_back(timer_rb); } } - g_settings.timer_followscreenings = configfile.getInt32( "timer_followscreenings", 1 ); + g_settings.timer_followscreenings = configfile.getInt32( "timer_followscreenings", CFollowScreenings::FOLLOWSCREENINGS_ON ); g_settings.infobar_sat_display = configfile.getBool("infobar_sat_display" , true ); g_settings.infobar_show_channeldesc = configfile.getBool("infobar_show_channeldesc" , false ); From 8193238246d3a6a20de75af1b20d7fd1666f2494 Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 37/47] set threadnames to unique values Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/5307e62506128b41cd6635ef6a138bfe21fd925f Author: Stefan Seyfried Date: 2017-06-07 (Wed, 07 Jun 2017) --- src/driver/radiotext.cpp | 2 ++ src/driver/screenshot.cpp | 2 ++ src/driver/streamts.cpp | 4 ++++ src/eitd/sectionsd.cpp | 6 +++++- src/nhttpd/yhttpd.cpp | 4 ++-- src/zapit/src/scan.cpp | 2 ++ src/zapit/src/scanbat.cpp | 2 ++ src/zapit/src/scannit.cpp | 2 ++ src/zapit/src/zapit.cpp | 3 +++ 9 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/driver/radiotext.cpp b/src/driver/radiotext.cpp index 80eae7e1a..28f1c8186 100644 --- a/src/driver/radiotext.cpp +++ b/src/driver/radiotext.cpp @@ -79,6 +79,7 @@ #include #include +#include #include #include @@ -2369,6 +2370,7 @@ void CRadioText::setPid(uint inPid) void CRadioText::run() { + set_threadname("n:radiotext"); uint current_pid = 0; printf("CRadioText::run: ###################### Starting thread ######################\n"); diff --git a/src/driver/screenshot.cpp b/src/driver/screenshot.cpp index 7818795e3..c965f3117 100644 --- a/src/driver/screenshot.cpp +++ b/src/driver/screenshot.cpp @@ -46,6 +46,7 @@ #include #include #include +#include extern "C" { #include @@ -162,6 +163,7 @@ void CScreenShot::cleanupThread(void *arg) /* start ::run in new thread to save file in selected format */ bool CScreenShot::Start() { + set_threadname("n:screenshot"); bool ret = false; if (GetData()) ret = startThread(); diff --git a/src/driver/streamts.cpp b/src/driver/streamts.cpp index 9d23e25fc..ee9438cce 100644 --- a/src/driver/streamts.cpp +++ b/src/driver/streamts.cpp @@ -56,6 +56,8 @@ #include #include #include +#include + #include #include @@ -181,6 +183,7 @@ bool CStreamInstance::Open() void CStreamInstance::run() { printf("CStreamInstance::run: %" PRIx64 "\n", channel_id); + set_threadname("n:streaminstance"); /* pids here cannot be empty */ stream_pids_t::iterator it = pids.begin(); @@ -556,6 +559,7 @@ void CStreamManager::run() int poll_timeout = -1; printf("Starting STREAM thread keeper, tid %ld\n", syscall(__NR_gettid)); + set_threadname("n:streammanager"); while (running) { mutex.lock(); diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index b7443d575..e5619d321 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -1428,7 +1428,8 @@ void CTimeThread::run() { time_t dvb_time = 0; xprintf("%s::run:: starting, pid %d (%lu)\n", name.c_str(), getpid(), pthread_self()); - + const char *tn = ("sd:" + name).c_str(); + set_threadname(tn); addFilters(); DMX::start(); @@ -1542,6 +1543,8 @@ int CSectionThread::Sleep() void CSectionThread::run() { xprintf("%s::run:: starting, pid %d (%lu)\n", name.c_str(), getpid(), pthread_self()); + const char *tn = ("sd:" + name).c_str(); + set_threadname(tn); if (sections_debug) dump_sched_info(name); @@ -2220,6 +2223,7 @@ void CEitManager::run() int rc; xprintf("[sectionsd] starting\n"); + set_threadname("sd:eitmanager"); printf("SIevent size: %d\n", (int)sizeof(SIevent)); /* "export NO_SLOW_ADDEVENT=true" to disable this */ diff --git a/src/nhttpd/yhttpd.cpp b/src/nhttpd/yhttpd.cpp index cddc90e01..93e6a66e6 100644 --- a/src/nhttpd/yhttpd.cpp +++ b/src/nhttpd/yhttpd.cpp @@ -120,7 +120,7 @@ void thread_cleanup (void *p) #ifndef Y_CONFIG_BUILD_AS_DAEMON void * nhttpd_main_thread(void *) { - set_threadname(__func__); + set_threadname("yweb:main_thread"); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); aprintf("Webserver %s tid %ld\n", WEBSERVERNAME, syscall(__NR_gettid)); @@ -338,7 +338,7 @@ bool Cyhttpd::Configure() { // Main Webserver call //----------------------------------------------------------------------------- void Cyhttpd::run() { - set_threadname(__func__); + set_threadname("yweb:run"); if (webserver) { if (flag_threading_off) webserver->is_threading = false; diff --git a/src/zapit/src/scan.cpp b/src/zapit/src/scan.cpp index 29d59eea8..d078ed4b8 100644 --- a/src/zapit/src/scan.cpp +++ b/src/zapit/src/scan.cpp @@ -36,6 +36,7 @@ #include #include #include +#include //#define USE_BAT @@ -96,6 +97,7 @@ bool CServiceScan::Stop() void CServiceScan::run() { + set_threadname("zap:servicescan"); running = true; CleanAllMaps(); diff --git a/src/zapit/src/scanbat.cpp b/src/zapit/src/scanbat.cpp index 01d655599..49e731568 100644 --- a/src/zapit/src/scanbat.cpp +++ b/src/zapit/src/scanbat.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #define DEBUG_BAT #define DEBUG_BAT_UNUSED @@ -68,6 +69,7 @@ bool CBat::Stop() void CBat::run() { + set_threadname("zap:bat"); if(Parse()) printf("[scan] BAT finished.\n"); else diff --git a/src/zapit/src/scannit.cpp b/src/zapit/src/scannit.cpp index dc47c6686..cb7a81b0b 100644 --- a/src/zapit/src/scannit.cpp +++ b/src/zapit/src/scannit.cpp @@ -29,6 +29,7 @@ #include #include #include +#include //#define DEBUG_NIT //#define DEBUG_NIT_UNUSED @@ -65,6 +66,7 @@ bool CNit::Stop() void CNit::run() { + set_threadname("zap:nit"); if(Parse()) printf("[scan] NIT finished.\n"); else diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index da0b6eaa8..92d7929d7 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -70,6 +70,7 @@ #endif #include +#include #include #include #include @@ -2489,6 +2490,7 @@ static bool zapit_parse_command(CBasicMessage::Header &rmsg, int connfd) void CZapit::run() { + set_threadname("zap:main"); printf("[zapit] starting... tid %ld\n", syscall(__NR_gettid)); abort_zapit = 0; @@ -2661,6 +2663,7 @@ void CZapitSdtMonitor::run() t_satellite_position satellitePosition = 0; freq_id_t freq = 0; transponder_id_t tpid = 0; + set_threadname("zap:sdtmonitor"); //tstart = time(0); sdt_tp.clear(); From a6485445d08151d2f909555e24eab08579b924ea Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:17:12 +0200 Subject: [PATCH 38/47] bouquetlist: fix calculation of footerwidth wrong font was used Signed-off-by: Thilo Graf Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/f2cae79b1caa5918bb307ad15c081e4101b9b87e Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - bouquetlist: fix calculation of footerwidth wrong font was used Signed-off-by: Thilo Graf --- src/gui/bouquetlist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/bouquetlist.cpp b/src/gui/bouquetlist.cpp index 4a5b6c9a0..3ad6b4038 100644 --- a/src/gui/bouquetlist.cpp +++ b/src/gui/bouquetlist.cpp @@ -413,7 +413,7 @@ int CBouquetList::show(bool bShowChannelList) for (unsigned int count = 0; count < sizeof(CBouquetListButtons)/sizeof(CBouquetListButtons[0]); count++) { - int w_text = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]->getRenderWidth(g_Locale->getText(CBouquetListButtons[count].locale)); + int w_text = g_Font[SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT]->getRenderWidth(g_Locale->getText(CBouquetListButtons[count].locale)); w_max_text = std::max(w_max_text, w_text); frameBuffer->getIconSize(CBouquetListButtons[count].button, &icol_w, &icol_h); w_max_icon = std::max(w_max_icon, icol_w); From 66f45a1be95216522b27680f7d994e572dac6ce6 Mon Sep 17 00:00:00 2001 From: Michael Liebmann Date: Wed, 7 Jun 2017 14:19:11 +0200 Subject: [PATCH 39/47] configure.ac: bump revision to 3.5.0 Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/45f915dd390a68dc0fc702185e6d94bf5d156611 Author: Michael Liebmann Date: 2017-06-07 (Wed, 07 Jun 2017) --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 1863e8f80..603853065 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT(Tuxbox-Neutrino,3.4.2) +AC_INIT(Tuxbox-Neutrino,3.5.0) AM_INIT_AUTOMAKE([1.0.1 nostdinc]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES]) From 953fd7175598ac141c6163438a950ea666c52fc9 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 14:50:52 +0200 Subject: [PATCH 40/47] record-setup: use new timer_followscreenings_options struct in item Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/a79a96efd6e6be5fe3978f9f18886e4953878207 Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - record-setup: use new timer_followscreenings_options struct in item --- src/gui/record_setup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/record_setup.cpp b/src/gui/record_setup.cpp index 4213ecf21..49ed97d86 100644 --- a/src/gui/record_setup.cpp +++ b/src/gui/record_setup.cpp @@ -350,7 +350,7 @@ void CRecordSetup::showRecordTimerSetup(CMenuWidget *menu_timersettings) menu_timersettings->addItem(GenericMenuSeparatorLine); //allow followscreenings - CMenuOptionChooser* followscreenings = new CMenuOptionChooser(LOCALE_TIMERSETTINGS_FOLLOWSCREENINGS, &g_settings.timer_followscreenings, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); + CMenuOptionChooser* followscreenings = new CMenuOptionChooser(LOCALE_TIMERSETTINGS_FOLLOWSCREENINGS, &g_settings.timer_followscreenings, timer_followscreenings_options, timer_followscreenings_options_count, true); followscreenings->setHint("", LOCALE_MENU_HINT_TIMER_FOLLOWSCREENINGS); menu_timersettings->addItem(followscreenings); } From 1feae6f83ecbf0dcff002e79d092fd0a4dd64d49 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Tue, 6 Jun 2017 16:08:29 +0200 Subject: [PATCH 41/47] filebrowser: fix total_pages calculation for CComponentsScrollBar Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/628e8ea3e4b1e66a115190defbc12efa1a587d57 Author: vanhofen Date: 2017-06-06 (Tue, 06 Jun 2017) Origin message was: ------------------ - filebrowser: fix total_pages calculation for CComponentsScrollBar --- src/gui/filebrowser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/filebrowser.cpp b/src/gui/filebrowser.cpp index 444bb313b..6e877060d 100644 --- a/src/gui/filebrowser.cpp +++ b/src/gui/filebrowser.cpp @@ -1472,7 +1472,7 @@ void CFileBrowser::paint() paintItem(count); //scrollbar - int total_pages = ((filelist.size() - 1) / listmaxshow) + 1; + int total_pages = filelist.size() == 0 ? 1 : ((filelist.size() - 1) / listmaxshow) + 1; int current_page = (selected / listmaxshow); paintScrollBar(x + width - SCROLLBAR_WIDTH, y + header_height, SCROLLBAR_WIDTH, item_height*listmaxshow, total_pages, current_page); From de887bc4577c51f477c681d4b047c45ea560d01b Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 15:28:53 +0200 Subject: [PATCH 42/47] configure.ac: fix merge error Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/2458f9b89da63d176dc0dd40346f93a9020504bf Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) Origin message was: ------------------ - configure.ac: fix merge error --- configure.ac | 4 ---- 1 file changed, 4 deletions(-) diff --git a/configure.ac b/configure.ac index 327e27866..cead7db89 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,4 @@ -<<<<<<< HEAD AC_INIT(NI-Neutrino,3.40.0) -======= -AC_INIT(Tuxbox-Neutrino,3.5.0) ->>>>>>> 45f915dd390a68dc0fc702185e6d94bf5d156611 AM_INIT_AUTOMAKE([1.0.1 nostdinc]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES]) From 2deb414738b54c09206059df9b2b2d434ced1031 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Wed, 7 Jun 2017 23:38:40 +0200 Subject: [PATCH 43/47] Revert "HD1: Workaround for missing cs_get_chip_type" This reverts commit eac2dccfb63b428d65d12c43b395e9d571f3d880. Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/54d7350a115f41c75b26430e977cbef640f0e5d9 Author: vanhofen Date: 2017-06-07 (Wed, 07 Jun 2017) --- lib/hardware/coolstream/hardware_caps.cpp | 6 +----- lib/hardware/coolstream/hd1/libcoolstream/cs_api.h | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/hardware/coolstream/hardware_caps.cpp b/lib/hardware/coolstream/hardware_caps.cpp index 865e8ccf5..b4d4c0a46 100644 --- a/lib/hardware/coolstream/hardware_caps.cpp +++ b/lib/hardware/coolstream/hardware_caps.cpp @@ -6,7 +6,6 @@ * * License: GPL v2 or later */ -#include #include "cs_api.h" #include #include @@ -21,10 +20,7 @@ hw_caps_t *get_hwcaps(void) { if (initialized) return ∩︀ int rev = cs_get_revision(); - int chip = 0; -#ifdef BOXMODEL_CS_HD2 - chip = cs_get_chip_type(); -#endif + int chip = cs_get_chip_type(); caps.has_fan = (rev < 8 && CFEManager::getInstance()->getFE(0)->hasSat()); // only SAT-HD1 before rev 8 has fan caps.has_HDMI = 1; caps.has_SCART = (rev != 10); diff --git a/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h b/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h index 80dd47ade..9a4e77259 100644 --- a/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h +++ b/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h @@ -82,7 +82,7 @@ int cs_get_tsp_config(unsigned int port, tsrouter_tsp_config_t *tsp_config); unsigned long long cs_get_serial(void); unsigned int cs_get_revision(void); /* Dummy function for compatibility with hd2 */ -//unsigned int cs_get_chip_type(void); +unsigned int cs_get_chip_type(void); // library version functions From 6c0d1f1da3c3f04ac4369b2d92c372f14cebb8e3 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Fri, 9 Jun 2017 12:40:08 +0200 Subject: [PATCH 44/47] text_menu: avoid usage of CORNER_RADIUS defines; use RADIUS instead ... because the RADIUS defines depends on user's corner settings Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/bca00d6f7c414d5893e5f9ec56eeec481bc8e17e Author: vanhofen Date: 2017-06-09 (Fri, 09 Jun 2017) Origin message was: ------------------ - text_menu: avoid usage of CORNER_RADIUS defines; use RADIUS instead ... because the RADIUS defines depends on user's corner settings --- src/gui/test_menu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/test_menu.cpp b/src/gui/test_menu.cpp index 9f6637d6b..f5edf226d 100644 --- a/src/gui/test_menu.cpp +++ b/src/gui/test_menu.cpp @@ -1031,7 +1031,7 @@ void CTestMenu::showRecords() recline->doPaintBg(true); recline->setColorBody(COL_INFOBAR_PLUS_0); recline->enableShadow(CC_SHADOW_ON, w_shadow); - recline->setCorner(CORNER_RADIUS_MID); + recline->setCorner(RADIUS_MID); recordsbox->addCCItem(recline); CComponentsPicture *iconf = new CComponentsPicture(OFFSET_INNER_MID, CC_CENTERED, NEUTRINO_ICON_REC, recline, CC_SHADOW_OFF, COL_RED, COL_INFOBAR_PLUS_0); From 0ad3ffd3f547017c142a6958bf4faa0488a6d8e8 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Fri, 9 Jun 2017 12:40:08 +0200 Subject: [PATCH 45/47] settings.h: use CORNER_RADIUS_NONE defines ... to determinate RADIUS defines Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/7daf3b62554cf6606cd4b5e64429404baa8d2193 Author: vanhofen Date: 2017-06-09 (Fri, 09 Jun 2017) Origin message was: ------------------ - settings.h: use CORNER_RADIUS_NONE defines ... to determinate RADIUS defines --- src/system/settings.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/system/settings.h b/src/system/settings.h index bda412206..dff2df396 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -987,10 +987,10 @@ const time_settings_struct_t timing_setting[SNeutrinoSettings::TIMING_SETTING_CO #define CORNER_RADIUS_MIN CFrameBuffer::getInstance()->scale2Res(3) #define CORNER_RADIUS_NONE 0 -#define RADIUS_LARGE (g_settings.rounded_corners ? CORNER_RADIUS_LARGE : 0) -#define RADIUS_MID (g_settings.rounded_corners ? CORNER_RADIUS_MID : 0) -#define RADIUS_SMALL (g_settings.rounded_corners ? CORNER_RADIUS_SMALL : 0) -#define RADIUS_MIN (g_settings.rounded_corners ? CORNER_RADIUS_MIN : 0) +#define RADIUS_LARGE (g_settings.rounded_corners ? CORNER_RADIUS_LARGE : CORNER_RADIUS_NONE) +#define RADIUS_MID (g_settings.rounded_corners ? CORNER_RADIUS_MID : CORNER_RADIUS_NONE) +#define RADIUS_SMALL (g_settings.rounded_corners ? CORNER_RADIUS_SMALL : CORNER_RADIUS_NONE) +#define RADIUS_MIN (g_settings.rounded_corners ? CORNER_RADIUS_MIN : CORNER_RADIUS_NONE) #define RADIUS_NONE 0 // offsets From 8aeb7304ab5089eb8bd29319e4bde86a007d203e Mon Sep 17 00:00:00 2001 From: vanhofen Date: Fri, 9 Jun 2017 12:40:08 +0200 Subject: [PATCH 46/47] menue: replace last fixed values ... ... with OFFSET defines and scale2Res()-calculations Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/57a146f8cffbdc7dd04c2f5f53e2ec28ffadf434 Author: vanhofen Date: 2017-06-09 (Fri, 09 Jun 2017) Origin message was: ------------------ - menue: replace last fixed values ... ... with OFFSET defines and scale2Res()-calculations --- src/gui/widget/menue.cpp | 75 ++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 0e14e3a78..6fe431b4c 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -82,7 +82,7 @@ CMenuItem::CMenuItem(bool Active, neutrino_msg_t DirectKey, const char * const I x = -1; used = false; - icon_frame_w = 10; + icon_frame_w = OFFSET_INNER_MID; hint = NONEXISTANT_LOCALE; name = NONEXISTANT_LOCALE; nameString = ""; @@ -267,7 +267,7 @@ void CMenuItem::paintItemCaption(const bool select_mode, const char * right_text stringstartposOption = name_start_x; if (right_bgcol) { if (!*right_text) - stringstartposOption -= 60; + stringstartposOption -= CFrameBuffer::getInstance()->scale2Res(60); fb_pixel_t right_frame_col, right_bg_col; if (active) { right_bg_col = right_bgcol; @@ -288,7 +288,7 @@ void CMenuItem::paintItemCaption(const bool select_mode, const char * right_text } } if (desc_text && *desc_text) - g_Font[SNeutrinoSettings::FONT_TYPE_MENU_HINT]->RenderString(name_start_x + 10, y+ item_height, _dx- 10 - (name_start_x - x), desc_text, item_color); + g_Font[SNeutrinoSettings::FONT_TYPE_MENU_HINT]->RenderString(name_start_x + OFFSET_INNER_MID, y+ item_height, _dx- OFFSET_INNER_MID - (name_start_x - x), desc_text, item_color); } void CMenuItem::prepareItem(const bool select_mode, const int &item_height) @@ -314,7 +314,7 @@ void CMenuItem::paintItemSlider( const bool select_mode, const int &item_height, } int stringwidth2 = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(left_text); - int maxspace = dx - stringwidth - icon_frame_w - stringwidth2 - 10; + int maxspace = dx - stringwidth - icon_frame_w - stringwidth2 - OFFSET_INNER_MID; if(maxspace < slider_lenght) return ; @@ -397,7 +397,7 @@ void CMenuItem::paintItemButton(const bool select_mode, int item_height, const c if (icon_w>0 && icon_h>0) { - frameBuffer->paintIcon(iconName_Info_right, dx + icon_start_x - (icon_w + 20), y+ ((item_height/2- icon_h/2)) ); + frameBuffer->paintIcon(iconName_Info_right, dx + icon_start_x - (icon_w + 2*OFFSET_INNER_MID), y+ ((item_height/2- icon_h/2)) ); } } } @@ -1154,14 +1154,13 @@ void CMenuWidget::calcSize() } hint_height = 0; if(g_settings.show_menu_hints && has_hints) { - hint_height = frameBuffer->scale2Res(60); //TODO: rework calculation of hint_height - int fheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_HINT]->getHeight(); - int h_tmp = OFFSET_INNER_LARGE + 2*fheight; + int lines = 2; + int text_height = 2*OFFSET_INNER_MID + lines*g_Font[SNeutrinoSettings::FONT_TYPE_MENU_HINT]->getHeight(); /* assuming all hint icons has the same size ! */ - int iw, ih; - frameBuffer->getIconSize(NEUTRINO_ICON_HINT_TVMODE, &iw, &ih); - h_tmp = std::max(h_tmp, ih+OFFSET_INNER_MID); - hint_height = std::max(h_tmp, hint_height); + int icon_width, icon_height; + frameBuffer->getIconSize(NEUTRINO_ICON_HINT_TVMODE, &icon_width, &icon_height); + icon_height += 2*OFFSET_INNER_MID; + hint_height = std::max(icon_height, text_height); } /* set the max height to 9/10 of usable screen height debatable, if the callers need a possibility to set this */ @@ -1229,7 +1228,7 @@ void CMenuWidget::calcSize() * + center_offset for symmetry * + 20 for setMenuPos calculates 10 pixels border left and right */ int center_offset = (g_settings.menu_pos == MENU_POS_CENTER) ? DETAILSLINE_WIDTH : 0; - int max_possible = (int)frameBuffer->getScreenWidth() - DETAILSLINE_WIDTH - center_offset - 20; + int max_possible = (int)frameBuffer->getScreenWidth() - DETAILSLINE_WIDTH - center_offset - 2*OFFSET_INNER_MID; if (full_width > max_possible) { width = max_possible - sb_width - OFFSET_SHADOW; @@ -1273,7 +1272,7 @@ void CMenuWidget::paint() if (header == NULL){ header = new CComponentsHeader(x, y, width + sb_width, hheight, getName(), iconfile); header->enableShadow(CC_SHADOW_RIGHT | CC_SHADOW_CORNER_TOP_RIGHT | CC_SHADOW_CORNER_BOTTOM_RIGHT); - header->setOffset(10); + header->setOffset(OFFSET_INNER_MID); } header->setCaption(getName()); header->setColorAll(COL_FRAME_PLUS_0, COL_MENUHEAD_PLUS_0, COL_SHADOW_PLUS_0); @@ -1313,25 +1312,25 @@ void CMenuWidget::setMenuPos(const int& menu_width) break; case MENU_POS_TOP_LEFT: - y = offy + scr_y + 10; - x = offx + scr_x + 10; + y = offy + scr_y + OFFSET_INNER_MID; + x = offx + scr_x + OFFSET_INNER_MID; x += g_settings.show_menu_hints_line ? DETAILSLINE_WIDTH : 0; //NI break; case MENU_POS_TOP_RIGHT: - y = offy + scr_y + 10; - x = /*offx +*/ scr_x + scr_w - menu_width - 10; + y = offy + scr_y + OFFSET_INNER_MID; + x = /*offx +*/ scr_x + scr_w - menu_width - OFFSET_INNER_MID; break; case MENU_POS_BOTTOM_LEFT: - y = /*offy +*/ scr_y + scr_h - real_h - 10; - x = offx + scr_x + 10; + y = /*offy +*/ scr_y + scr_h - real_h - OFFSET_INNER_MID; + x = offx + scr_x + OFFSET_INNER_MID; x += g_settings.show_menu_hints_line ? DETAILSLINE_WIDTH : 0; //NI break; case MENU_POS_BOTTOM_RIGHT: - y = /*offy +*/ scr_y + scr_h - real_h - 10; - x = /*offx +*/ scr_x + scr_w - menu_width - 10; + y = /*offy +*/ scr_y + scr_h - real_h - OFFSET_INNER_MID; + x = /*offx +*/ scr_x + scr_w - menu_width - OFFSET_INNER_MID; break; } if (x_old != x || y_old != y) @@ -1728,11 +1727,11 @@ int CMenuOptionNumberChooser::getWidth(void) width += g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(format) - g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth("0"); } - width += 10; /* min 10 pixels between option name and value. enough? */ + width += OFFSET_INNER_MID; /* min 10 pixels between option name and value. enough? */ const char *desc_text = getDescription(); if (*desc_text) - width = std::max(width, 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(desc_text)); + width = std::max(width, OFFSET_INNER_MID + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(desc_text)); return width; } @@ -2054,10 +2053,10 @@ int CMenuOptionChooser::getWidth(void) width = tw + ow; } - width += 10; /* min 10 pixels between option name and value. enough? */ + width += OFFSET_INNER_MID; /* min 10 pixels between option name and value. enough? */ const char *desc_text = getDescription(); if (*desc_text) - width = std::max(width, 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(desc_text)); + width = std::max(width, OFFSET_INNER_MID + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(desc_text)); return width; } @@ -2247,13 +2246,13 @@ int CMenuForwarder::getWidth(void) bgcol = jumpTarget->getColor(); if (!option_name.empty()) - tw += 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(option_name); + tw += OFFSET_INNER_MID + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(option_name); else if (bgcol) - tw += 10 + 60; + tw += OFFSET_INNER_MID + CFrameBuffer::getInstance()->scale2Res(60); const char *desc_text = getDescription(); if (*desc_text) - tw = std::max(tw, 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(desc_text)); + tw = std::max(tw, OFFSET_INNER_MID + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(desc_text)); return tw; } @@ -2312,7 +2311,7 @@ CMenuSeparator::CMenuSeparator(const int Type, const std::string &Text, bool IsS int CMenuSeparator::getHeight(void) { if (nameString.empty() && name == NONEXISTANT_LOCALE) - return 10; + return OFFSET_INNER_MID; return g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); } @@ -2320,7 +2319,7 @@ int CMenuSeparator::getWidth(void) { int w = 0; if (type & LINE) - w = 30; /* 15 pixel left and right */ + w = 2*OFFSET_INNER_MID; /* offset left and right */ const char *l_name = getName(); if ((type & STRING) && *l_name) w += g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(l_name); @@ -2347,7 +2346,7 @@ int CMenuSeparator::paint(bool selected) if ((type & LINE)) { int grad = g_settings.theme.menu_Separator_gradient_enable ? CC_COLGRAD_COL_DARK_LIGHT_DARK : CC_COLGRAD_OFF; - paintBoxRel(x+10, y+(height>>1), dx-20, 1, COL_MENUCONTENT_PLUS_1, 0, CORNER_NONE, grad, COL_MENUCONTENT_PLUS_0, CFrameBuffer::gradientHorizontal, CColorGradient::light); //NI + paintBoxRel(x+OFFSET_INNER_MID, y+(height>>1), dx-2*OFFSET_INNER_MID, 1, COL_MENUCONTENT_PLUS_1, 0, CORNER_NONE, grad, COL_MENUCONTENT_PLUS_0, CFrameBuffer::gradientHorizontal, CColorGradient::light); //NI } if ((type & STRING)) { @@ -2355,17 +2354,19 @@ int CMenuSeparator::paint(bool selected) if (*l_name) { - int stringwidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(l_name); // UTF-8 + int stringwidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(l_name); + int iconwidth, iconheight; + CFrameBuffer::getInstance()->getIconSize(NEUTRINO_ICON_BUTTON_HOME, &iconwidth, &iconheight); /* if no alignment is specified, align centered */ if (type & ALIGN_LEFT) - name_start_x = x + (!(type & SUB_HEAD) ? name_start_x : 20 + 24 /*std icon_width is 24px - this should be determinated from NEUTRINO_ICON_BUTTON_HOME or so*/); + name_start_x = x + (!(type & SUB_HEAD) ? name_start_x : 2*OFFSET_INNER_MID + iconwidth); else if (type & ALIGN_RIGHT) - name_start_x = x + dx - stringwidth - 20; + name_start_x = x + dx - stringwidth - 2*OFFSET_INNER_MID; else /* ALIGN_CENTER */ name_start_x = x + (dx >> 1) - (stringwidth >> 1); - frameBuffer->paintBoxRel(name_start_x-5, y, stringwidth+10, height, item_bgcolor); + frameBuffer->paintBoxRel(name_start_x-OFFSET_INNER_SMALL, y, stringwidth+2*OFFSET_INNER_SMALL, height, item_bgcolor); if ((type & LINE)) //NI - use COL_MENUHEAD_TEXT for CMenuSeparators defined with LINE and STRING item_color = COL_MENUHEAD_TEXT; @@ -2493,7 +2494,7 @@ int CMenuProgressbar::getWidth(void) { int width = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(getName()); if (width) - width += 10; + width += OFFSET_INNER_MID; return width + scale.getWidth(); } From dddb8df56a8688188b55e9587dc39c02dc1a3839 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Fri, 9 Jun 2017 14:07:05 +0200 Subject: [PATCH 47/47] icons: fix size of youtube header icon Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/02da66755ffde46e6fb7369a65d89954ffa81a31 Author: vanhofen Date: 2017-06-09 (Fri, 09 Jun 2017) Origin message was: ------------------ - icons: fix size of youtube header icon --- data/icons/headers/icon_ytplay.png | Bin 303 -> 241 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/icons/headers/icon_ytplay.png b/data/icons/headers/icon_ytplay.png index e3da39a11ecf965c69a5dbe99d22870e1a4dd92d..d5cec79e3c6dcf4e8f2d22a4585ee5ef40e3095b 100644 GIT binary patch delta 207 zcmZ3_^pR1qGr-TCmrII^fq{Y7)59eQNK1e)2Mdt&s{2|zQBkM566D-xpVMxhG*5Q^p(QQg3;T~+@D)nU;ki6 z(f-R9Z_b)@*gA6i>T?W?2j;vwxU@xt>4;L!@zUyBB+d?bpDV+!DkM?RB8ovPrHSJxgHIBXFec6XjNPkg0@J>?}i zY%aK`P98ruy!*;FtZNNQZ~o$YYA#XfFReZPI=cPp_hD20jrvQ=184bL$c&ITYLZ|U T@&#?700000NkvXXu0mjf!`f?*