From 2c6f8aa0d218980a35a86499875fad290d1dfd1c Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 25 Mar 2016 10:30:23 +0100 Subject: New token {hasscrollbar} in rootview & detailview --- browserGrid.cpp | 32 +++++++++++++++++--------------- detailView.cpp | 31 +++++++++++++++++-------------- plexSdOsd.cpp | 2 ++ templates/plug-plex-detail.xml | 1 + templates/plug-plex-root.xml | 1 + tokendefinitions.h | 32 +++++++++++++++++++++++++++++++- 6 files changed, 69 insertions(+), 30 deletions(-) diff --git a/browserGrid.cpp b/browserGrid.cpp index 8b4485b..61c9999 100644 --- a/browserGrid.cpp +++ b/browserGrid.cpp @@ -356,24 +356,26 @@ void cBrowserGrid::DrawFooter() void cBrowserGrid::DrawScrollbar() { - - if (m_vElements.size() == 0) - return; - - int currentRow = SelectedObject()->AbsolutePosition / m_columns; - int totalRows = ceil((double) m_vElements.size() / m_columns); - - int scrollBarHeight = 100.0 / totalRows * m_rows; - - int offset = 100.0 / totalRows * currentRow; - if(offset >= 100 - scrollBarHeight) { - offset = 100.0 - scrollBarHeight; - } m_pScrollbar->Clear(); m_pScrollbar->ClearTokens(); - m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::height, scrollBarHeight); - m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::offset, offset); + if (m_vElements.size() > 0) { + int currentRow = SelectedObject()->AbsolutePosition / m_columns; + int totalRows = ceil((double) m_vElements.size() / m_columns); + + int scrollBarHeight = 100.0 / totalRows * m_rows; + + int offset = 100.0 / totalRows * currentRow; + if(offset >= 100 - scrollBarHeight) { + offset = 100.0 - scrollBarHeight; + } + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::height, scrollBarHeight); + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::offset, offset); + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::hasscrollbar, true); + } else { + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::hasscrollbar, false); + } + m_pScrollbar->Display(); } diff --git a/detailView.cpp b/detailView.cpp index 2fd207f..832956e 100644 --- a/detailView.cpp +++ b/detailView.cpp @@ -135,23 +135,26 @@ void cDetailView::DrawInfo() void cDetailView::DrawScrollbar() { - if (m_vElements.size() == 0) - return; - - int currentRow = SelectedObject()->AbsolutePosition / m_columns; - int totalRows = ceil((double) m_vElements.size() / m_columns); - - int scrollBarHeight = 100.0 / totalRows * m_rows; - - int offset = 100.0 / totalRows * currentRow; - if(offset >= 100 - scrollBarHeight) { - offset = 100.0 - scrollBarHeight; - } m_pScrollbar->Clear(); m_pScrollbar->ClearTokens(); - m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::height, scrollBarHeight); - m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::offset, offset); + if (m_vElements.size() > 0) { + int currentRow = SelectedObject()->AbsolutePosition / m_columns; + int totalRows = ceil((double) m_vElements.size() / m_columns); + + int scrollBarHeight = 100.0 / totalRows * m_rows; + + int offset = 100.0 / totalRows * currentRow; + if(offset >= 100 - scrollBarHeight) { + offset = 100.0 - scrollBarHeight; + } + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::height, scrollBarHeight); + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::offset, offset); + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::hasscrollbar, true); + } else { + m_pScrollbar->AddIntToken((int)eTokenScrollbarInt::hasscrollbar, false); + } + m_pScrollbar->Display(); } diff --git a/plexSdOsd.cpp b/plexSdOsd.cpp index 5eadc9a..6d9a6aa 100644 --- a/plexSdOsd.cpp +++ b/plexSdOsd.cpp @@ -275,6 +275,7 @@ void cPlexSdOsd::DefineTokens(eViewElementsRoot ve, skindesignerapi::cTokenConta case eViewElementsRoot::scrollbar: tk->DefineIntToken("{height}", (int)eTokenScrollbarInt::height); tk->DefineIntToken("{offset}", (int)eTokenScrollbarInt::offset); + tk->DefineIntToken("{hasscrollbar}", (int)eTokenScrollbarInt::hasscrollbar); default: break; } @@ -408,6 +409,7 @@ void cPlexSdOsd::DefineDetailsTokens(eViewElementsDetail ve, skindesignerapi::cT case eViewElementsDetail::scrollbar: tk->DefineIntToken("{height}", (int)eTokenScrollbarInt::height); tk->DefineIntToken("{offset}", (int)eTokenScrollbarInt::offset); + tk->DefineIntToken("{hasscrollbar}", (int)eTokenScrollbarInt::hasscrollbar); break; default: break; diff --git a/templates/plug-plex-detail.xml b/templates/plug-plex-detail.xml index c202745..2f49953 100644 --- a/templates/plug-plex-detail.xml +++ b/templates/plug-plex-detail.xml @@ -78,6 +78,7 @@