pictureviewer: massively simplify GetLogoName() function

Origin commit data
------------------
Commit: 90545ad4fb
Author: vanhofen <vanhofen@gmx.de>
Date: 2018-12-18 (Tue, 18 Dec 2018)

Origin message was:
------------------
- pictureviewer: massively simplify GetLogoName() function
This commit is contained in:
vanhofen
2018-12-18 00:19:35 +01:00
parent b6f8067656
commit ea417f55b9

View File

@@ -556,10 +556,7 @@ bool CPictureViewer::GetLogoName(const uint64_t &ChannelID, const std::string &C
EventName = CurrentNext.current_name; EventName = CurrentNext.current_name;
} }
std::transform(EventName.begin(), EventName.end(), EventName.begin(), ::tolower); // add neccessary paths to v_path
EventName = str_replace(" ", "-", EventName);
//printf("GetLogoName(): EventName \"%s\"\n", EventName.c_str());
v_path.clear(); v_path.clear();
if (lcd4l_mode) if (lcd4l_mode)
v_path.push_back(g_settings.lcd4l_logodir); v_path.push_back(g_settings.lcd4l_logodir);
@@ -569,6 +566,10 @@ bool CPictureViewer::GetLogoName(const uint64_t &ChannelID, const std::string &C
if (g_settings.logo_hdd_dir != LOGODIR) if (g_settings.logo_hdd_dir != LOGODIR)
v_path.push_back(LOGODIR); v_path.push_back(LOGODIR);
std::transform(EventName.begin(), EventName.end(), EventName.begin(), ::tolower);
EventName = str_replace(" ", "-", EventName);
//printf("GetLogoName(): EventName \"%s\"\n", EventName.c_str());
for (size_t i = 0; i < (sizeof(fileType) / sizeof(fileType[0])); i++) for (size_t i = 0; i < (sizeof(fileType) / sizeof(fileType[0])); i++)
{ {
for (size_t j = 0; j < v_path.size(); j++) for (size_t j = 0; j < v_path.size(); j++)
@@ -589,18 +590,7 @@ bool CPictureViewer::GetLogoName(const uint64_t &ChannelID, const std::string &C
} }
} }
//get channel id as string // create special filename from channelname
char strChnId[16];
snprintf(strChnId, 16, "%llx", ChannelID & 0xFFFFFFFFFFFFULL);
strChnId[15] = '\0';
//create E2 filenames
char e2filename1[255];
e2filename1[0] = '\0';
char e2filename2[255];
e2filename2[0] = '\0';
//create special filename from channelname
std::string SpecialChannelName = ChannelName; std::string SpecialChannelName = ChannelName;
std::transform(SpecialChannelName.begin(), SpecialChannelName.end(), SpecialChannelName.begin(), ::tolower); std::transform(SpecialChannelName.begin(), SpecialChannelName.end(), SpecialChannelName.begin(), ::tolower);
SpecialChannelName = str_replace(" ", "-", SpecialChannelName); SpecialChannelName = str_replace(" ", "-", SpecialChannelName);
@@ -610,13 +600,24 @@ bool CPictureViewer::GetLogoName(const uint64_t &ChannelID, const std::string &C
SpecialChannelName = str_replace("+", "___plus___", SpecialChannelName); SpecialChannelName = str_replace("+", "___plus___", SpecialChannelName);
SpecialChannelName = str_replace("&", "___and___", SpecialChannelName); SpecialChannelName = str_replace("&", "___and___", SpecialChannelName);
// create channel id as string
char strChnId[16];
snprintf(strChnId, 16, "%llx", ChannelID & 0xFFFFFFFFFFFFULL);
strChnId[15] = '\0';
// create E2 filenames
char e2filename1[255];
e2filename1[0] = '\0';
char e2filename2[255];
e2filename2[0] = '\0';
CZapitChannel * cc = NULL; CZapitChannel * cc = NULL;
if (ChannelID && CNeutrinoApp::getInstance()->channelList) if (ChannelID && CNeutrinoApp::getInstance()->channelList)
cc = CNeutrinoApp::getInstance()->channelList->getChannel(ChannelID); cc = CNeutrinoApp::getInstance()->channelList->getChannel(ChannelID);
if (cc) if (cc)
{ {
//create E2 filename1 // create E2 filename1
snprintf(e2filename1, sizeof(e2filename1), "1_0_%X_%X_%X_%X_%X0000_0_0_0", snprintf(e2filename1, sizeof(e2filename1), "1_0_%X_%X_%X_%X_%X0000_0_0_0",
(u_int) cc->getServiceType(true), (u_int) cc->getServiceType(true),
(u_int) ChannelID & 0xFFFF, (u_int) ChannelID & 0xFFFF,
@@ -624,7 +625,7 @@ bool CPictureViewer::GetLogoName(const uint64_t &ChannelID, const std::string &C
(u_int) (ChannelID >> 16) & 0xFFFF, (u_int) (ChannelID >> 16) & 0xFFFF,
(u_int) cc->getSatellitePosition()); (u_int) cc->getSatellitePosition());
//create E2 filename2 // create E2 filename2
snprintf(e2filename2, sizeof(e2filename2), "1_0_%X_%X_%X_%X_%X0000_0_0_0", snprintf(e2filename2, sizeof(e2filename2), "1_0_%X_%X_%X_%X_%X0000_0_0_0",
(u_int) 1, (u_int) 1,
(u_int) ChannelID & 0xFFFF, (u_int) ChannelID & 0xFFFF,
@@ -633,128 +634,41 @@ bool CPictureViewer::GetLogoName(const uint64_t &ChannelID, const std::string &C
(u_int) cc->getSatellitePosition()); (u_int) cc->getSatellitePosition());
} }
// add neccessary file masks to v_file
if (!ChannelName.empty())
v_file.push_back(ChannelName);
if (!SpecialChannelName.empty())
v_file.push_back(SpecialChannelName);
if (strcmp(strChnId, "0") != 0)
v_file.push_back(strChnId);
if (strcmp(e2filename1, "") != 0)
v_file.push_back(std::string(e2filename1));
if (strcmp(e2filename2, "") != 0)
v_file.push_back(std::string(e2filename2));
for (size_t i = 0; i < (sizeof(fileType) / sizeof(fileType[0])); i++) for (size_t i = 0; i < (sizeof(fileType) / sizeof(fileType[0])); i++)
{ {
v_path.clear(); v_path.clear();
std::string id_tmp_path;
if (lcd4l_mode) for (size_t f = 0; f < v_file.size(); f++)
{ {
v_file.clear(); // process g_settings.lcd4l_logodir
v_file.push_back(ChannelName); if (lcd4l_mode)
v_file.push_back(SpecialChannelName);
v_file.push_back(strChnId);
if (e2filename1[0] != '\0')
v_file.push_back(std::string(e2filename1));
if (e2filename2[0] != '\0')
v_file.push_back(std::string(e2filename2));
for (size_t f = 0; f < v_file.size(); f++)
v_path.push_back(g_settings.lcd4l_logodir + "/" + v_file[f] + fileType[i]); v_path.push_back(g_settings.lcd4l_logodir + "/" + v_file[f] + fileType[i]);
} // process g_settings.logo_hdd_dir
v_path.push_back(g_settings.logo_hdd_dir + "/" + v_file[f] + fileType[i]);
//create filename with channel name (logo_hdd_dir) // process LOGODIR_VAR
id_tmp_path = g_settings.logo_hdd_dir + "/"; if (g_settings.logo_hdd_dir != LOGODIR_VAR)
id_tmp_path += ChannelName + fileType[i]; v_path.push_back(std::string(LOGODIR_VAR) + "/" + v_file[f] + fileType[i]);
v_path.push_back(id_tmp_path); // process LOGODIR
if (g_settings.logo_hdd_dir != LOGODIR)
//create filename with special channel name (logo_hdd_dir) v_path.push_back(std::string(LOGODIR) + "/" + v_file[f] + fileType[i]);
id_tmp_path = g_settings.logo_hdd_dir + "/";
id_tmp_path += SpecialChannelName + fileType[i];
v_path.push_back(id_tmp_path);
//create filename with id (logo_hdd_dir)
id_tmp_path = g_settings.logo_hdd_dir + "/";
id_tmp_path += strChnId + fileType[i];
v_path.push_back(id_tmp_path);
if (e2filename1[0] != '\0')
{
//create E2 filename1
id_tmp_path = g_settings.logo_hdd_dir + "/";
id_tmp_path += std::string(e2filename1) + fileType[i];
v_path.push_back(id_tmp_path);
}
if (e2filename2[0] != '\0')
{
//create E2 filename2
id_tmp_path = g_settings.logo_hdd_dir + "/";
id_tmp_path += std::string(e2filename2) + fileType[i];
v_path.push_back(id_tmp_path);
}
if (g_settings.logo_hdd_dir != LOGODIR_VAR)
{
//create filename with channel name (LOGODIR_VAR)
id_tmp_path = LOGODIR_VAR "/";
id_tmp_path += ChannelName + fileType[i];
v_path.push_back(id_tmp_path);
//create filename with special channel name (LOGODIR_VAR)
id_tmp_path = LOGODIR_VAR "/";
id_tmp_path += SpecialChannelName + fileType[i];
v_path.push_back(id_tmp_path);
//create filename with id (LOGODIR_VAR)
id_tmp_path = LOGODIR_VAR "/";
id_tmp_path += strChnId + fileType[i];
v_path.push_back(id_tmp_path);
if (e2filename1[0] != '\0')
{
//create E2 filename1 (LOGODIR_VAR)
id_tmp_path = LOGODIR_VAR "/";
id_tmp_path += std::string(e2filename1) + fileType[i];
v_path.push_back(id_tmp_path);
}
if (e2filename2[0] != '\0')
{
//create E2 filename2 (LOGODIR_VAR)
id_tmp_path = LOGODIR_VAR "/";
id_tmp_path += std::string(e2filename2) + fileType[i];
v_path.push_back(id_tmp_path);
}
}
if (g_settings.logo_hdd_dir != LOGODIR)
{
//create filename with channel name (LOGODIR)
id_tmp_path = LOGODIR "/";
id_tmp_path += ChannelName + fileType[i];
v_path.push_back(id_tmp_path);
//create filename with special channel name (LOGODIR)
id_tmp_path = LOGODIR "/";
id_tmp_path += SpecialChannelName + fileType[i];
v_path.push_back(id_tmp_path);
//create filename with id (LOGODIR)
id_tmp_path = LOGODIR "/";
id_tmp_path += strChnId + fileType[i];
v_path.push_back(id_tmp_path);
if (e2filename1[0] != '\0')
{
//create E2 filename1 (LOGODIR)
id_tmp_path = LOGODIR "/";
id_tmp_path += std::string(e2filename1) + fileType[i];
v_path.push_back(id_tmp_path);
}
if (e2filename2[0] != '\0')
{
//create E2 filename2 (LOGODIR)
id_tmp_path = LOGODIR "/";
id_tmp_path += std::string(e2filename2) + fileType[i];
v_path.push_back(id_tmp_path);
}
} }
//check if file is available, name with real name is preferred, return true on success //check if file is available, name with real name is preferred, return true on success
for (size_t j = 0; j < v_path.size(); j++) for (size_t j = 0; j < v_path.size(); j++)
{ {
//printf("GetLogoName(): v_path[%d] \"%s\"\n", j, v_path[j].c_str());
if (access(v_path[j].c_str(), R_OK) != -1) if (access(v_path[j].c_str(), R_OK) != -1)
{ {
if (width && height) if (width && height)