diff --git a/THEMES.md b/THEMES.md index 0adbf7858..f05a345fb 100644 --- a/THEMES.md +++ b/THEMES.md @@ -97,6 +97,7 @@ Pretty much any image format is supported. `` - No default. `` - No default. +`` - No default. Sounds ====== diff --git a/src/ThemeData.cpp b/src/ThemeData.cpp index 63f35bf5a..21bb49d90 100644 --- a/src/ThemeData.cpp +++ b/src/ThemeData.cpp @@ -22,7 +22,8 @@ std::map ThemeData::sDefaultColors = boost::assign::m std::map ThemeData::sDefaultImages = boost::assign::map_list_of ("backgroundImage", ImageDef("", true)) - ("headerImage", ImageDef("", false)); + ("headerImage", ImageDef("", false)) + ("infoBackgroundImage", ImageDef("", false)); std::map ThemeData::sDefaultSounds = boost::assign::map_list_of ("scrollSound", SoundDef("")) diff --git a/src/views/BasicGameListView.cpp b/src/views/BasicGameListView.cpp index f338da262..3050e6a23 100644 --- a/src/views/BasicGameListView.cpp +++ b/src/views/BasicGameListView.cpp @@ -13,7 +13,7 @@ BasicGameListView::BasicGameListView(Window* window, FileData* root) mHeaderText.setPosition(0, 0); mHeaderText.setCentered(true); - mHeaderImage.setResize(0, mSize.y() * 0.2f, false); + mHeaderImage.setResize(0, mSize.y() * 0.185f, false); mHeaderImage.setOrigin(0.5f, 0.0f); mHeaderImage.setPosition(mSize.x() / 2, 0); diff --git a/src/views/DetailedGameListView.cpp b/src/views/DetailedGameListView.cpp index 11ee74389..332021aeb 100644 --- a/src/views/DetailedGameListView.cpp +++ b/src/views/DetailedGameListView.cpp @@ -3,9 +3,17 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) : BasicGameListView(window, root), mDescContainer(window), mDescription(window), - mImage(window) + mImage(window), mInfoBackground(window) { - const float padding = 0.02f; + mHeaderImage.setPosition(mSize.x() * 0.25f, 0); + mHeaderImage.setResize(mSize.x() * 0.5f, 0, true); + + mInfoBackground.setPosition(0, mSize.y() * 0.5f, 0); + mInfoBackground.setOrigin(0, 0.5f); + mInfoBackground.setResize(mSize.x() * 0.5f, mSize.y(), true); + addChild(&mInfoBackground); + + const float padding = 0.01f; mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y()); mList.setSize(mSize.x() * (0.50f - 2*padding), mList.getSize().y()); @@ -34,6 +42,7 @@ void DetailedGameListView::setTheme(const std::shared_ptr& theme) mDescription.setFont(theme->getFont("descriptionFont")); mDescription.setColor(theme->getColor("descriptionColor")); + mInfoBackground.setImage(theme->getImage("infoBackgroundImage").getTexture()); } void DetailedGameListView::updateInfoPanel() diff --git a/src/views/DetailedGameListView.h b/src/views/DetailedGameListView.h index 0bf988828..f98eb586a 100644 --- a/src/views/DetailedGameListView.h +++ b/src/views/DetailedGameListView.h @@ -18,6 +18,7 @@ private: void updateInfoPanel(); ImageComponent mImage; + ImageComponent mInfoBackground; ScrollableContainer mDescContainer; TextComponent mDescription; diff --git a/src/views/ViewController.cpp b/src/views/ViewController.cpp index de3f1f5ea..6b1fabf98 100644 --- a/src/views/ViewController.cpp +++ b/src/views/ViewController.cpp @@ -101,7 +101,23 @@ std::shared_ptr ViewController::getSystemView(SystemData* system) if(system != NULL) { - view = std::shared_ptr(new DetailedGameListView(mWindow, system->getRootFolder())); + //decide type + bool detailed = false; + std::vector files = system->getRootFolder()->getFilesRecursive(GAME | FOLDER); + for(auto it = files.begin(); it != files.end(); it++) + { + if(!(*it)->getThumbnailPath().empty()) + { + detailed = true; + break; + } + } + + if(detailed) + view = std::shared_ptr(new DetailedGameListView(mWindow, system->getRootFolder())); + else + view = std::shared_ptr(new BasicGameListView(mWindow, system->getRootFolder())); + view->setTheme(system->getTheme()); }else{ LOG(LogError) << "null system"; // should eventually return an "all games" gamelist view