moviebrowser: add possibility to show visualized elapsed time

This commit is contained in:
2019-05-05 14:14:34 +02:00
parent 2792c33269
commit 2dc9c4d252
5 changed files with 126 additions and 74 deletions

View File

@@ -91,8 +91,7 @@ typedef struct dirent64 dirent_struct;
#define NUMBER_OF_MOVIES_LAST 40 // This is the number of movies shown in last recored and last played list #define NUMBER_OF_MOVIES_LAST 40 // This is the number of movies shown in last recored and last played list
#define MOVIE_SMSKEY_TIMEOUT 800 #define MOVIE_SMSKEY_TIMEOUT 800
#define MESSAGEBOX_BROWSER_ROW_ITEM_COUNT 23 const CMenuOptionChooser::keyval MESSAGEBOX_BROWSER_ROW_ITEM[] =
const CMenuOptionChooser::keyval MESSAGEBOX_BROWSER_ROW_ITEM[MESSAGEBOX_BROWSER_ROW_ITEM_COUNT] =
{ {
{ MB_INFO_FILENAME, LOCALE_MOVIEBROWSER_INFO_FILENAME }, { MB_INFO_FILENAME, LOCALE_MOVIEBROWSER_INFO_FILENAME },
{ MB_INFO_FILEPATH, LOCALE_MOVIEBROWSER_INFO_PATH }, { MB_INFO_FILEPATH, LOCALE_MOVIEBROWSER_INFO_PATH },
@@ -116,26 +115,27 @@ const CMenuOptionChooser::keyval MESSAGEBOX_BROWSER_ROW_ITEM[MESSAGEBOX_BROWSER_
{ MB_INFO_SIZE, LOCALE_MOVIEBROWSER_INFO_SIZE }, { MB_INFO_SIZE, LOCALE_MOVIEBROWSER_INFO_SIZE },
{ MB_INFO_RATING, LOCALE_MOVIEBROWSER_INFO_RATING }, { MB_INFO_RATING, LOCALE_MOVIEBROWSER_INFO_RATING },
{ MB_INFO_SPACER, LOCALE_MOVIEBROWSER_INFO_SPACER }, { MB_INFO_SPACER, LOCALE_MOVIEBROWSER_INFO_SPACER },
{ MB_INFO_RECORDTIME, LOCALE_MOVIEBROWSER_INFO_RECORDTIME } { MB_INFO_RECORDTIME, LOCALE_MOVIEBROWSER_INFO_RECORDTIME },
{ MB_INFO_PERCENT_ELAPSED, LOCALE_MOVIEBROWSER_INFO_ELAPSED }
}; };
const size_t MESSAGEBOX_BROWSER_ROW_ITEM_COUNT = sizeof(MESSAGEBOX_BROWSER_ROW_ITEM)/sizeof(MESSAGEBOX_BROWSER_ROW_ITEM[0]);
#define MESSAGEBOX_YES_NO_OPTIONS_COUNT 2 #define MESSAGEBOX_YES_NO_OPTIONS_COUNT 2 //TODO: include from mymenu.h
const CMenuOptionChooser::keyval MESSAGEBOX_YES_NO_OPTIONS[MESSAGEBOX_YES_NO_OPTIONS_COUNT] = const CMenuOptionChooser::keyval MESSAGEBOX_YES_NO_OPTIONS[MESSAGEBOX_YES_NO_OPTIONS_COUNT] =
{ {
{ 0, LOCALE_MESSAGEBOX_NO }, { 0, LOCALE_MESSAGEBOX_NO },
{ 1, LOCALE_MESSAGEBOX_YES } { 1, LOCALE_MESSAGEBOX_YES }
}; };
#define MESSAGEBOX_PARENTAL_LOCK_OPTIONS_COUNT 3 const CMenuOptionChooser::keyval MESSAGEBOX_PARENTAL_LOCK_OPTIONS[] =
const CMenuOptionChooser::keyval MESSAGEBOX_PARENTAL_LOCK_OPTIONS[MESSAGEBOX_PARENTAL_LOCK_OPTIONS_COUNT] =
{ {
{ 1, LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_ACTIVATED_YES }, { 1, LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_ACTIVATED_YES },
{ 0, LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_ACTIVATED_NO }, { 0, LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_ACTIVATED_NO },
{ 2, LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_ACTIVATED_NO_TEMP } { 2, LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_ACTIVATED_NO_TEMP }
}; };
const size_t MESSAGEBOX_PARENTAL_LOCK_OPTIONS_COUNT = sizeof(MESSAGEBOX_PARENTAL_LOCK_OPTIONS)/sizeof(MESSAGEBOX_PARENTAL_LOCK_OPTIONS[0]);
#define MESSAGEBOX_PARENTAL_LOCKAGE_OPTION_COUNT 6 const CMenuOptionChooser::keyval MESSAGEBOX_PARENTAL_LOCKAGE_OPTIONS[] =
const CMenuOptionChooser::keyval MESSAGEBOX_PARENTAL_LOCKAGE_OPTIONS[MESSAGEBOX_PARENTAL_LOCKAGE_OPTION_COUNT] =
{ {
{ 0, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_0YEAR }, { 0, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_0YEAR },
{ 6, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_6YEAR }, { 6, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_6YEAR },
@@ -144,6 +144,7 @@ const CMenuOptionChooser::keyval MESSAGEBOX_PARENTAL_LOCKAGE_OPTIONS[MESSAGEBOX_
{ 18, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_18YEAR }, { 18, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_18YEAR },
{ 99, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_ALWAYS } { 99, LOCALE_MOVIEBROWSER_INFO_PARENTAL_LOCKAGE_ALWAYS }
}; };
const size_t MESSAGEBOX_PARENTAL_LOCKAGE_OPTION_COUNT = sizeof(MESSAGEBOX_PARENTAL_LOCKAGE_OPTIONS)/sizeof(MESSAGEBOX_PARENTAL_LOCKAGE_OPTIONS[0]);
#define TITLE_BACKGROUND_COLOR ((CFBWindow::color_t)COL_MENUHEAD_PLUS_0) #define TITLE_BACKGROUND_COLOR ((CFBWindow::color_t)COL_MENUHEAD_PLUS_0)
#define TITLE_FONT_COLOR COL_MENUHEAD_TEXT #define TITLE_FONT_COLOR COL_MENUHEAD_TEXT
@@ -176,33 +177,36 @@ const neutrino_locale_t m_localizedItemName[MB_INFO_MAX_NUMBER+1] =
LOCALE_MOVIEBROWSER_SHORT_RATING, LOCALE_MOVIEBROWSER_SHORT_RATING,
LOCALE_MOVIEBROWSER_SHORT_SPACER, LOCALE_MOVIEBROWSER_SHORT_SPACER,
LOCALE_MOVIEBROWSER_SHORT_RECORDTIME, LOCALE_MOVIEBROWSER_SHORT_RECORDTIME,
LOCALE_MOVIEBROWSER_SHORT_ELAPSED,
NONEXISTANT_LOCALE NONEXISTANT_LOCALE
}; };
/* default row size in percent for any element */ /* default row size in percent for any element */
#define MB_ROW_WIDTH_FILENAME 22 #define MB_ROW_WIDTH_TITLE 43
#define MB_ROW_WIDTH_FILEPATH 22 #define MB_ROW_WIDTH_MAJOR_GENRE 32
#define MB_ROW_WIDTH_TITLE 35 #define MB_ROW_WIDTH_LENGTH 8
#define MB_ROW_WIDTH_SERIE 15 #define MB_ROW_WIDTH_RECORDDATE 9
#define MB_ROW_WIDTH_INFO1 15 #define MB_ROW_WIDTH_ELAPSED 5
#define MB_ROW_WIDTH_MAJOR_GENRE 15 #define MB_ROW_WIDTH_FILENAME 22
#define MB_ROW_WIDTH_MINOR_GENRE 8 #define MB_ROW_WIDTH_FILEPATH 22
#define MB_ROW_WIDTH_INFO2 25 #define MB_ROW_WIDTH_SERIE 15
#define MB_ROW_WIDTH_INFO1 30
#define MB_ROW_WIDTH_MINOR_GENRE 8
#define MB_ROW_WIDTH_INFO2 30
#define MB_ROW_WIDTH_PARENTAL_LOCKAGE 4 #define MB_ROW_WIDTH_PARENTAL_LOCKAGE 4
#define MB_ROW_WIDTH_CHANNEL 15 #define MB_ROW_WIDTH_CHANNEL 15
#define MB_ROW_WIDTH_BOOKMARK 6 #define MB_ROW_WIDTH_BOOKMARK 6
#define MB_ROW_WIDTH_QUALITY 10 #define MB_ROW_WIDTH_QUALITY 10
#define MB_ROW_WIDTH_PREVPLAYDATE 12 #define MB_ROW_WIDTH_PREVPLAYDATE 9
#define MB_ROW_WIDTH_RECORDDATE 12 #define MB_ROW_WIDTH_PRODDATE 9
#define MB_ROW_WIDTH_PRODDATE 8 #define MB_ROW_WIDTH_COUNTRY 8
#define MB_ROW_WIDTH_COUNTRY 8 #define MB_ROW_WIDTH_GEOMETRIE 8
#define MB_ROW_WIDTH_GEOMETRIE 8 #define MB_ROW_WIDTH_AUDIO 8
#define MB_ROW_WIDTH_AUDIO 8 #define MB_ROW_WIDTH_SIZE 12
#define MB_ROW_WIDTH_LENGTH 10 #define MB_ROW_WIDTH_RATING 5
#define MB_ROW_WIDTH_SIZE 12 #define MB_ROW_WIDTH_SPACER 1
#define MB_ROW_WIDTH_RATING 5 #define MB_ROW_WIDTH_RECORDTIME 10
#define MB_ROW_WIDTH_SPACER 1
#define MB_ROW_WIDTH_RECORDTIME 10
const int m_defaultRowWidth[MB_INFO_MAX_NUMBER+1] = const int m_defaultRowWidth[MB_INFO_MAX_NUMBER+1] =
{ {
@@ -229,6 +233,7 @@ const int m_defaultRowWidth[MB_INFO_MAX_NUMBER+1] =
MB_ROW_WIDTH_RATING, MB_ROW_WIDTH_RATING,
MB_ROW_WIDTH_SPACER, MB_ROW_WIDTH_SPACER,
MB_ROW_WIDTH_RECORDTIME, MB_ROW_WIDTH_RECORDTIME,
MB_ROW_WIDTH_ELAPSED,
0 //MB_ROW_WIDTH_MAX_NUMBER 0 //MB_ROW_WIDTH_MAX_NUMBER
}; };
static MI_MOVIE_INFO* playing_info; static MI_MOVIE_INFO* playing_info;
@@ -276,17 +281,15 @@ CMovieBrowser::~CMovieBrowser()
void CMovieBrowser::clearListLines() void CMovieBrowser::clearListLines()
{ {
for (int i = 0; i < MB_MAX_ROWS; i++) for (int i = 0; i < MB_MAX_ROWS; i++)
{ m_pcBrowser->cleanupRow(&m_FilterLines, i);
m_browserListLines.lineArray[i].clear();
m_FilterLines.lineArray[i].clear();
}
m_browserListLines.Icon.clear(); m_browserListLines.Icon.clear();
m_browserListLines.marked.clear(); m_browserListLines.marked.clear();
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
{ {
m_recordListLines.lineArray[i].clear(); m_pcLastRecord->cleanupRow(&m_recordListLines, i);
m_playListLines.lineArray[i].clear(); m_pcLastPlay->cleanupRow(&m_playListLines, i);
} }
m_recordListLines.marked.clear(); m_recordListLines.marked.clear();
m_playListLines.marked.clear(); m_playListLines.marked.clear();
@@ -468,26 +471,28 @@ void CMovieBrowser::initGlobalSettings(void)
/***** Browser List **************/ /***** Browser List **************/
m_settings.browserFrameHeight = 65; /* percent */ m_settings.browserFrameHeight = 65; /* percent */
m_settings.browserRowNr = 6; m_settings.browserRowNr = 7;
m_settings.browserRowItem[0] = MB_INFO_TITLE; m_settings.browserRowItem[0] = MB_INFO_TITLE;
m_settings.browserRowItem[1] = MB_INFO_SPACER; m_settings.browserRowItem[1] = MB_INFO_SPACER;
m_settings.browserRowItem[2] = MB_INFO_INFO1; m_settings.browserRowItem[2] = MB_INFO_INFO1;
m_settings.browserRowItem[3] = MB_INFO_SPACER; m_settings.browserRowItem[3] = MB_INFO_SPACER;
m_settings.browserRowItem[4] = MB_INFO_LENGTH; m_settings.browserRowItem[4] = MB_INFO_LENGTH;
m_settings.browserRowItem[5] = MB_INFO_RECORDDATE; m_settings.browserRowItem[5] = MB_INFO_RECORDDATE;
m_settings.browserRowItem[6] = MB_INFO_MAX_NUMBER; m_settings.browserRowItem[6] = MB_INFO_PERCENT_ELAPSED;
m_settings.browserRowItem[7] = MB_INFO_MAX_NUMBER; m_settings.browserRowItem[7] = MB_INFO_MAX_NUMBER;
m_settings.browserRowItem[8] = MB_INFO_MAX_NUMBER; m_settings.browserRowItem[8] = MB_INFO_MAX_NUMBER;
m_settings.browserRowItem[9] = MB_INFO_MAX_NUMBER;
m_settings.browserRowWidth[0] = 36; // title m_settings.browserRowWidth[0] = MB_ROW_WIDTH_TITLE; // title
m_settings.browserRowWidth[1] = 1; // spacer m_settings.browserRowWidth[1] = MB_ROW_WIDTH_SPACER; // spacer
m_settings.browserRowWidth[2] = 36; // info1 m_settings.browserRowWidth[2] = MB_ROW_WIDTH_INFO1; // info1
m_settings.browserRowWidth[3] = 1; // spacer m_settings.browserRowWidth[3] = MB_ROW_WIDTH_SPACER; // spacer
m_settings.browserRowWidth[4] = 11; // length m_settings.browserRowWidth[4] = MB_ROW_WIDTH_LENGTH; // length
m_settings.browserRowWidth[5] = 14; // recorddate m_settings.browserRowWidth[5] = MB_ROW_WIDTH_RECORDDATE; // recorddate
m_settings.browserRowWidth[6] = m_defaultRowWidth[m_settings.browserRowItem[6]]; m_settings.browserRowWidth[6] = MB_ROW_WIDTH_ELAPSED; // elapsed play time
m_settings.browserRowWidth[7] = m_defaultRowWidth[m_settings.browserRowItem[7]]; m_settings.browserRowWidth[7] = m_defaultRowWidth[m_settings.browserRowItem[7]];
m_settings.browserRowWidth[8] = m_defaultRowWidth[m_settings.browserRowItem[8]]; m_settings.browserRowWidth[8] = m_defaultRowWidth[m_settings.browserRowItem[8]];
m_settings.browserRowWidth[9] = m_defaultRowWidth[m_settings.browserRowItem[9]];
m_settings.browserAdditional = 0; m_settings.browserAdditional = 0;
@@ -577,6 +582,7 @@ void CMovieBrowser::initRows(void)
m_settings.lastPlayRow[0] = MB_INFO_TITLE; m_settings.lastPlayRow[0] = MB_INFO_TITLE;
m_settings.lastPlayRow[1] = MB_INFO_SPACER; m_settings.lastPlayRow[1] = MB_INFO_SPACER;
m_settings.lastPlayRow[2] = MB_INFO_PREVPLAYDATE; m_settings.lastPlayRow[2] = MB_INFO_PREVPLAYDATE;
m_settings.lastPlayRow[3] = MB_INFO_PERCENT_ELAPSED;
m_settings.lastPlayRowWidth[2] = m_defaultRowWidth[m_settings.lastPlayRow[2]] * 2 + 1; m_settings.lastPlayRowWidth[2] = m_defaultRowWidth[m_settings.lastPlayRow[2]] * 2 + 1;
m_settings.lastPlayRowWidth[1] = m_defaultRowWidth[m_settings.lastPlayRow[1]] * 2; m_settings.lastPlayRowWidth[1] = m_defaultRowWidth[m_settings.lastPlayRow[1]] * 2;
m_settings.lastPlayRowWidth[0] = 100 - m_settings.lastPlayRowWidth[1] - m_settings.lastPlayRowWidth[2]; m_settings.lastPlayRowWidth[0] = 100 - m_settings.lastPlayRowWidth[1] - m_settings.lastPlayRowWidth[2];
@@ -1685,7 +1691,7 @@ void CMovieBrowser::refreshFilterList(void)
std::string string_item; std::string string_item;
m_FilterLines.rows = 1; m_FilterLines.rows = 1;
m_FilterLines.lineArray[0].clear(); m_pcFilter->cleanupRow(&m_FilterLines, 0);
m_FilterLines.rowWidth[0] = 100; m_FilterLines.rowWidth[0] = 100;
m_FilterLines.lineHeader[0] = ""; m_FilterLines.lineHeader[0] = "";
@@ -1696,36 +1702,39 @@ void CMovieBrowser::refreshFilterList(void)
{ {
// show Main List // show Main List
string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_GENRE_MAJOR); string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_GENRE_MAJOR);
m_FilterLines.lineArray[0].push_back(string_item); m_pcFilter->addLine2Row(&m_FilterLines, 0, string_item);
string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_INFO1); string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_INFO1);
m_FilterLines.lineArray[0].push_back(string_item); m_pcFilter->addLine2Row(&m_FilterLines, 0, string_item);
string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_PATH); string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_PATH);
m_FilterLines.lineArray[0].push_back(string_item); m_pcFilter->addLine2Row(&m_FilterLines, 0, string_item);
string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_SERIE); string_item = g_Locale->getText(LOCALE_MOVIEBROWSER_INFO_SERIE);
m_FilterLines.lineArray[0].push_back(string_item); m_pcFilter->addLine2Row(&m_FilterLines, 0, string_item);
} }
else else
{ {
std::string tmp = g_Locale->getText(LOCALE_MOVIEBROWSER_FILTER_OFF); std::string tmp = g_Locale->getText(LOCALE_MOVIEBROWSER_FILTER_OFF);
m_FilterLines.lineArray[0].push_back(tmp); m_pcFilter->addLine2Row(&m_FilterLines, 0, tmp);
if (m_settings.filter.item == MB_INFO_FILEPATH) if (m_settings.filter.item == MB_INFO_FILEPATH)
{ {
for (unsigned int i = 0 ; i < m_dirNames.size(); i++) for (unsigned int i = 0 ; i < m_dirNames.size(); i++)
m_FilterLines.lineArray[0].push_back(m_dirNames[i]); m_pcFilter->addLine2Row(&m_FilterLines, 0, m_dirNames[i]);
} }
else if (m_settings.filter.item == MB_INFO_INFO1) else if (m_settings.filter.item == MB_INFO_INFO1)
{ {
for (unsigned int i = 0; i < m_vMovieInfo.size(); i++) for (unsigned int i = 0; i < m_vMovieInfo.size(); i++)
{ {
bool found = false; bool found = false;
for (unsigned int t = 0; t < m_FilterLines.lineArray[0].size() && found == false; t++) for (unsigned int t = 0; t < m_FilterLines.lineArray[0].v_text.size() && found == false; t++)
{ {
if (strcmp(m_FilterLines.lineArray[0][t].c_str(),m_vMovieInfo[i].epgInfo1.c_str()) == 0) if (strcmp(m_FilterLines.lineArray[0].v_text[t].c_str(),m_vMovieInfo[i].epgInfo1.c_str()) == 0)
found = true; found = true;
} }
if (found == false) if (found == false)
m_FilterLines.lineArray[0].push_back(m_vMovieInfo[i].epgInfo1); m_pcFilter->addLine2Row(&m_FilterLines, 0, m_vMovieInfo[i].epgInfo1);
} }
} }
else if (m_settings.filter.item == MB_INFO_MAJOR_GENRE) else if (m_settings.filter.item == MB_INFO_MAJOR_GENRE)
@@ -1733,14 +1742,14 @@ void CMovieBrowser::refreshFilterList(void)
for (int i = 0; i < GENRE_ALL_COUNT; i++) for (int i = 0; i < GENRE_ALL_COUNT; i++)
{ {
std::string tmpl = g_Locale->getText(GENRE_ALL[i].value); std::string tmpl = g_Locale->getText(GENRE_ALL[i].value);
m_FilterLines.lineArray[0].push_back(tmpl); m_pcFilter->addLine2Row(&m_FilterLines, 0, tmpl);
} }
} }
else if (m_settings.filter.item == MB_INFO_SERIE) else if (m_settings.filter.item == MB_INFO_SERIE)
{ {
updateSerienames(); updateSerienames();
for (unsigned int i = 0; i < m_vHandleSerienames.size(); i++) for (unsigned int i = 0; i < m_vHandleSerienames.size(); i++)
m_FilterLines.lineArray[0].push_back(m_vHandleSerienames[i]->serieName); m_pcFilter->addLine2Row(&m_FilterLines, 0, m_vHandleSerienames[i]->serieName);
} }
} }
m_pcFilter->setLines(&m_FilterLines); m_pcFilter->setLines(&m_FilterLines);
@@ -1755,7 +1764,7 @@ void CMovieBrowser::refreshLastPlayList(void) //P2
m_playListLines.rows = m_settings.lastPlayRowNr; m_playListLines.rows = m_settings.lastPlayRowNr;
for (int row = 0 ;row < m_settings.lastPlayRowNr; row++) for (int row = 0 ;row < m_settings.lastPlayRowNr; row++)
{ {
m_playListLines.lineArray[row].clear(); m_pcLastPlay->cleanupRow(&m_playListLines, row);
m_playListLines.rowWidth[row] = m_settings.lastPlayRowWidth[row]; m_playListLines.rowWidth[row] = m_settings.lastPlayRowWidth[row];
m_playListLines.lineHeader[row] = g_Locale->getText(m_localizedItemName[m_settings.lastPlayRow[row]]); m_playListLines.lineHeader[row] = g_Locale->getText(m_localizedItemName[m_settings.lastPlayRow[row]]);
} }
@@ -1791,7 +1800,7 @@ void CMovieBrowser::refreshLastPlayList(void) //P2
if (m_settings.lastPlayRow[row] == MB_INFO_TITLE) if (m_settings.lastPlayRow[row] == MB_INFO_TITLE)
getMovieInfoItem(*m_vHandlePlayList[handle], MB_INFO_FILENAME, &string_item); getMovieInfoItem(*m_vHandlePlayList[handle], MB_INFO_FILENAME, &string_item);
} }
m_playListLines.lineArray[row].push_back(string_item); m_pcLastPlay->addLine2Row(&m_playListLines, row, string_item);
} }
m_playListLines.marked.push_back(m_vHandlePlayList[handle]->marked); m_playListLines.marked.push_back(m_vHandlePlayList[handle]->marked);
} }
@@ -1812,7 +1821,7 @@ void CMovieBrowser::refreshLastRecordList(void) //P2
m_recordListLines.rows = m_settings.lastRecordRowNr; m_recordListLines.rows = m_settings.lastRecordRowNr;
for (int row = 0 ;row < m_settings.lastRecordRowNr; row++) for (int row = 0 ;row < m_settings.lastRecordRowNr; row++)
{ {
m_recordListLines.lineArray[row].clear(); m_pcLastRecord->cleanupRow(&m_recordListLines, row);
m_recordListLines.rowWidth[row] = m_settings.lastRecordRowWidth[row]; m_recordListLines.rowWidth[row] = m_settings.lastRecordRowWidth[row];
m_recordListLines.lineHeader[row] = g_Locale->getText(m_localizedItemName[m_settings.lastRecordRow[row]]); m_recordListLines.lineHeader[row] = g_Locale->getText(m_localizedItemName[m_settings.lastRecordRow[row]]);
} }
@@ -1848,7 +1857,7 @@ void CMovieBrowser::refreshLastRecordList(void) //P2
if (m_settings.lastRecordRow[row] == MB_INFO_TITLE) if (m_settings.lastRecordRow[row] == MB_INFO_TITLE)
getMovieInfoItem(*m_vHandleRecordList[handle], MB_INFO_FILENAME, &string_item); getMovieInfoItem(*m_vHandleRecordList[handle], MB_INFO_FILENAME, &string_item);
} }
m_recordListLines.lineArray[row].push_back(string_item); m_pcLastRecord->addLine2Row(&m_recordListLines, row, string_item);
} }
m_recordListLines.marked.push_back(m_vHandleRecordList[handle]->marked); m_recordListLines.marked.push_back(m_vHandleRecordList[handle]->marked);
} }
@@ -1870,7 +1879,7 @@ void CMovieBrowser::refreshBrowserList(void) //P1
m_browserListLines.rows = m_settings.browserRowNr; m_browserListLines.rows = m_settings.browserRowNr;
for (int row = 0; row < m_settings.browserRowNr; row++) for (int row = 0; row < m_settings.browserRowNr; row++)
{ {
m_browserListLines.lineArray[row].clear(); m_pcBrowser->cleanupRow(&m_browserListLines, row);
m_browserListLines.rowWidth[row] = m_settings.browserRowWidth[row]; m_browserListLines.rowWidth[row] = m_settings.browserRowWidth[row];
m_browserListLines.lineHeader[row] = g_Locale->getText(m_localizedItemName[m_settings.browserRowItem[row]]); m_browserListLines.lineHeader[row] = g_Locale->getText(m_localizedItemName[m_settings.browserRowItem[row]]);
} }
@@ -1902,6 +1911,8 @@ void CMovieBrowser::refreshBrowserList(void) //P1
// sort the not filtered files // sort the not filtered files
onSortMovieInfoHandleList(m_vHandleBrowserList,m_settings.sorting.item,MB_DIRECTION_AUTO); onSortMovieInfoHandleList(m_vHandleBrowserList,m_settings.sorting.item,MB_DIRECTION_AUTO);
for (unsigned int handle=0; handle < m_vHandleBrowserList.size() ;handle++) for (unsigned int handle=0; handle < m_vHandleBrowserList.size() ;handle++)
{ {
for (int row = 0; row < m_settings.browserRowNr ;row++) for (int row = 0; row < m_settings.browserRowNr ;row++)
@@ -1913,7 +1924,32 @@ void CMovieBrowser::refreshBrowserList(void) //P1
getMovieInfoItem(*m_vHandleBrowserList[handle], MB_INFO_FILENAME, &string_item); getMovieInfoItem(*m_vHandleBrowserList[handle], MB_INFO_FILENAME, &string_item);
} }
m_browserListLines.lineArray[row].push_back(string_item); CProgressBar* elapsed = NULL;
CComponentsPicture* seen = NULL;
if (m_settings.browserRowItem[row] == MB_INFO_PERCENT_ELAPSED)
{
getMovieInfoItem(*m_vHandleBrowserList[handle], MB_INFO_PERCENT_ELAPSED, &string_item);
int elapsed_percent = atoi(string_item);
string_item = ""; //not needed
if (elapsed_percent < 100)
{
if (elapsed_percent > 0)
{
elapsed = new CProgressBar();
elapsed->setHeight(m_pcBrowser->getLineHeight()/2);
elapsed->setType(CProgressBar::PB_TIMESCALE);
elapsed->setValues(elapsed_percent, 100);
m_pcBrowser->addLine2Row(&m_browserListLines, row, string_item, elapsed);
}
}
else
{
seen = new CComponentsPicture(0, 0, 0, m_pcBrowser->getLineHeight(), NEUTRINO_ICON_MARKER_DIALOG_OK);
m_pcBrowser->addLine2Row(&m_browserListLines, row, string_item, seen);
}
}
if (!elapsed && !seen)
m_pcBrowser->addLine2Row(&m_browserListLines, row, string_item, NULL);
} }
if (CRecordManager::getInstance()->getRecordInstance(m_vHandleBrowserList[handle]->file.Name) != NULL) if (CRecordManager::getInstance()->getRecordInstance(m_vHandleBrowserList[handle]->file.Name) != NULL)
m_browserListLines.Icon.push_back(NEUTRINO_ICON_MARKER_RECORD); m_browserListLines.Icon.push_back(NEUTRINO_ICON_MARKER_RECORD);
@@ -3181,7 +3217,7 @@ void CMovieBrowser::updateInfoSelection(void)
void CMovieBrowser::updateFilterSelection(void) void CMovieBrowser::updateFilterSelection(void)
{ {
//TRACE("[mb]->updateFilterSelection \n"); //TRACE("[mb]->updateFilterSelection \n");
if (m_FilterLines.lineArray[0].empty()) return; if (m_FilterLines.lineArray[0].v_text.empty()) return;
bool result = true; bool result = true;
int selected_line = m_pcFilter->getSelectedLine(); int selected_line = m_pcFilter->getSelectedLine();
@@ -3190,12 +3226,12 @@ void CMovieBrowser::updateFilterSelection(void)
if (m_settings.filter.item == MB_INFO_FILEPATH) if (m_settings.filter.item == MB_INFO_FILEPATH)
{ {
m_settings.filter.optionString = m_FilterLines.lineArray[0][selected_line+1]; m_settings.filter.optionString = m_FilterLines.lineArray[0].v_text[selected_line+1];
m_settings.filter.optionVar = selected_line; m_settings.filter.optionVar = selected_line;
} }
else if (m_settings.filter.item == MB_INFO_INFO1) else if (m_settings.filter.item == MB_INFO_INFO1)
{ {
m_settings.filter.optionString = m_FilterLines.lineArray[0][selected_line+1]; m_settings.filter.optionString = m_FilterLines.lineArray[0].v_text[selected_line+1];
} }
else if (m_settings.filter.item == MB_INFO_MAJOR_GENRE) else if (m_settings.filter.item == MB_INFO_MAJOR_GENRE)
{ {
@@ -3204,7 +3240,7 @@ void CMovieBrowser::updateFilterSelection(void)
} }
else if (m_settings.filter.item == MB_INFO_SERIE) else if (m_settings.filter.item == MB_INFO_SERIE)
{ {
m_settings.filter.optionString = m_FilterLines.lineArray[0][selected_line+1]; m_settings.filter.optionString = m_FilterLines.lineArray[0].v_text[selected_line+1];
} }
else else
{ {
@@ -3424,6 +3460,7 @@ int CMovieBrowser::showMovieInfoMenu(MI_MOVIE_INFO* movie_info)
movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_PATH, false, dirItNr)); movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_PATH, false, dirItNr));
movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_RECORDDATE, false, recUserDateInput.getValue())); movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_RECORDDATE, false, recUserDateInput.getValue()));
movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_PREVPLAYDATE, false, (movie_info->dateOfLastPlay == 0) ? neverplayed : dateUserDateInput.getValue())); movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_PREVPLAYDATE, false, (movie_info->dateOfLastPlay == 0) ? neverplayed : dateUserDateInput.getValue()));
movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_ELAPSED, false, to_string(movie_info->bookmarks.lastPlayStop/60 * 100 / movie_info->length) + " %"));
movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_SIZE, false, size)); movieInfoMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_INFO_SIZE, false, size));
movieInfoMenu.addItem(GenericMenuSeparatorLine); movieInfoMenu.addItem(GenericMenuSeparatorLine);
movieInfoMenu.addItem(rate); movieInfoMenu.addItem(rate);
@@ -3897,9 +3934,11 @@ bool CMovieBrowser::getMovieInfoItem(MI_MOVIE_INFO& movie_info, MB_INFO_ITEM ite
*item_string = str_tmp; *item_string = str_tmp;
break; break;
case MB_INFO_LENGTH: // = 18, case MB_INFO_LENGTH: // = 18,
{
snprintf(str_tmp, sizeof(str_tmp),"%dh %02dm", movie_info.length/60, movie_info.length%60); snprintf(str_tmp, sizeof(str_tmp),"%dh %02dm", movie_info.length/60, movie_info.length%60);
*item_string = str_tmp; *item_string = str_tmp;
break; break;
}
case MB_INFO_SIZE: // = 19, case MB_INFO_SIZE: // = 19,
snprintf(str_tmp, sizeof(str_tmp),"%4" PRIu64 "",movie_info.file.Size>>20); snprintf(str_tmp, sizeof(str_tmp),"%4" PRIu64 "",movie_info.file.Size>>20);
*item_string = str_tmp; *item_string = str_tmp;
@@ -3922,7 +3961,15 @@ bool CMovieBrowser::getMovieInfoItem(MI_MOVIE_INFO& movie_info, MB_INFO_ITEM ite
*item_string = str_tmp; *item_string = str_tmp;
} }
break; break;
case MB_INFO_MAX_NUMBER: // = 23 case MB_INFO_PERCENT_ELAPSED: // = 23,
*item_string = "";
if (movie_info.bookmarks.lastPlayStop > 0 && movie_info.length > 0)
{
int pos = movie_info.bookmarks.lastPlayStop/60 * 100 / movie_info.length;
*item_string = to_string(pos);
}
break;
case MB_INFO_MAX_NUMBER: // = 24,
default: default:
*item_string=""; *item_string="";
result = false; result = false;

View File

@@ -169,10 +169,10 @@ class CMovieBrowser : public CMenuTarget, public CProgressSignals
CComponentsChannelLogo *m_channelLogo; CComponentsChannelLogo *m_channelLogo;
CComponentsPicture *m_movieCover; CComponentsPicture *m_movieCover;
LF_LINES m_browserListLines; lf_line_types_t m_browserListLines;
LF_LINES m_recordListLines; lf_line_types_t m_recordListLines;
LF_LINES m_playListLines; lf_line_types_t m_playListLines;
LF_LINES m_FilterLines; lf_line_types_t m_FilterLines;
std::vector<MI_MOVIE_INFO> m_vMovieInfo; std::vector<MI_MOVIE_INFO> m_vMovieInfo;
std::vector<MI_MOVIE_INFO*> m_vHandleBrowserList; std::vector<MI_MOVIE_INFO*> m_vHandleBrowserList;

View File

@@ -68,7 +68,8 @@ typedef enum
MB_INFO_RATING = 20, MB_INFO_RATING = 20,
MB_INFO_SPACER = 21, MB_INFO_SPACER = 21,
MB_INFO_RECORDTIME = 22, MB_INFO_RECORDTIME = 22,
MB_INFO_MAX_NUMBER = 23 // MUST be allways the last item in the list MB_INFO_PERCENT_ELAPSED = 23,
MB_INFO_MAX_NUMBER = 24 // MUST be allways the last item in the list
}MB_INFO_ITEM; }MB_INFO_ITEM;
typedef enum typedef enum

View File

@@ -1849,6 +1849,7 @@ typedef enum
LOCALE_MOVIEBROWSER_IMDB_DATA, LOCALE_MOVIEBROWSER_IMDB_DATA,
LOCALE_MOVIEBROWSER_INFO_AUDIO, LOCALE_MOVIEBROWSER_INFO_AUDIO,
LOCALE_MOVIEBROWSER_INFO_CHANNEL, LOCALE_MOVIEBROWSER_INFO_CHANNEL,
LOCALE_MOVIEBROWSER_INFO_ELAPSED,
LOCALE_MOVIEBROWSER_INFO_FILE, LOCALE_MOVIEBROWSER_INFO_FILE,
LOCALE_MOVIEBROWSER_INFO_FILENAME, LOCALE_MOVIEBROWSER_INFO_FILENAME,
LOCALE_MOVIEBROWSER_INFO_GENRE_MAJOR, LOCALE_MOVIEBROWSER_INFO_GENRE_MAJOR,
@@ -1911,6 +1912,7 @@ typedef enum
LOCALE_MOVIEBROWSER_SHORT_BOOK, LOCALE_MOVIEBROWSER_SHORT_BOOK,
LOCALE_MOVIEBROWSER_SHORT_CHANNEL, LOCALE_MOVIEBROWSER_SHORT_CHANNEL,
LOCALE_MOVIEBROWSER_SHORT_COUNTRY, LOCALE_MOVIEBROWSER_SHORT_COUNTRY,
LOCALE_MOVIEBROWSER_SHORT_ELAPSED,
LOCALE_MOVIEBROWSER_SHORT_FILENAME, LOCALE_MOVIEBROWSER_SHORT_FILENAME,
LOCALE_MOVIEBROWSER_SHORT_FORMAT, LOCALE_MOVIEBROWSER_SHORT_FORMAT,
LOCALE_MOVIEBROWSER_SHORT_GENRE_MAJOR, LOCALE_MOVIEBROWSER_SHORT_GENRE_MAJOR,

View File

@@ -1849,6 +1849,7 @@ const char * locale_real_names[] =
"moviebrowser.imdb_data", "moviebrowser.imdb_data",
"moviebrowser.info_audio", "moviebrowser.info_audio",
"moviebrowser.info_channel", "moviebrowser.info_channel",
"moviebrowser.info_elapsed",
"moviebrowser.info_file", "moviebrowser.info_file",
"moviebrowser.info_filename", "moviebrowser.info_filename",
"moviebrowser.info_genre_major", "moviebrowser.info_genre_major",
@@ -1911,6 +1912,7 @@ const char * locale_real_names[] =
"moviebrowser.short_book", "moviebrowser.short_book",
"moviebrowser.short_channel", "moviebrowser.short_channel",
"moviebrowser.short_country", "moviebrowser.short_country",
"moviebrowser.short_elapsed",
"moviebrowser.short_filename", "moviebrowser.short_filename",
"moviebrowser.short_format", "moviebrowser.short_format",
"moviebrowser.short_genre_major", "moviebrowser.short_genre_major",