git-svn-id: https://openitg.svn.sourceforge.net/svnroot/openitg@217 83fadc84-e282...
authorPatrick McIlroy <itgpmc@gmail.com>
Sun, 13 Apr 2008 21:53:40 +0000 (21:53 +0000)
committerPatrick McIlroy <itgpmc@gmail.com>
Sun, 13 Apr 2008 21:53:40 +0000 (21:53 +0000)
src/ThemeManager.cpp

index 21ef9b0..e8f0090 100755 (executable)
@@ -150,26 +150,27 @@ void ThemeManager::GetThemeNames( CStringArray& AddTo )
        }
 }
 
+// FYI: GetThemeNames() apparently has a bug which makes the iteration neglect account
+//   for the last element in AddTo when removing "CVS".  This is ok
+//   for the original GetThemeNames because "CVS" will most likely
+//   not be the last directory entry, however we need account for every
+//   theme available, even the last one.  This is why "fallback" kept appearing
+//   in the theme switcher mod.  --infamouspat
 void ThemeManager::GetDisplayableThemeNames( CStringArray& AddTo )
 {
-       GetDirListing( THEMES_DIR + "*", AddTo, true );
-
-       if (AddTo.size() == 0) return;
-       CStringArray::iterator i = AddTo.begin();
-       while (i != AddTo.end())
-       {
-               if ( *i == "CVS" || !IsThemeSelectable(*i) )
-               {
-                       AddTo.erase(i, i+1);
-               }
-               i++;
-       }
-       if ( *i == "CVS" || !IsThemeSelectable(*i) )
+       vector<CString> candidates;
+       GetThemeNames( candidates );
+       FOREACH_CONST( CString, candidates, cand )
        {
-               AddTo.erase(i, i+1);
+               if ( IsThemeSelectable(*cand) ) AddTo.push_back(*cand);
        }
+       
 }
 
+// also, I'm assuming "Default" wants to be removed too because, in ITG's theme setup,
+//  if "Default" is called over "arcade", diagnostics and machine update will not work.
+//  Themers should also keep that in the back of their mind when making an ITG2AC-based theme.
+//   --infamouspat
 bool ThemeManager::IsThemeSelectable( const CString &sThemeName )
 {
        LOG->Info("IsThemeSelectable(): %s", sThemeName.c_str() );