[Scummvm-cvs-logs] SF.net SVN: scummvm:[51155] scummvm/branches/gsoc2010-testbed/engines/ testbed

sud03r at users.sourceforge.net sud03r at users.sourceforge.net
Thu Jul 22 20:00:00 CEST 2010


Revision: 51155
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51155&view=rev
Author:   sud03r
Date:     2010-07-22 17:59:59 +0000 (Thu, 22 Jul 2010)

Log Message:
-----------
TESTBED: added deselect capabilty in GUI, removed redundant code, testsuites now all enabled by default

Modified Paths:
--------------
    scummvm/branches/gsoc2010-testbed/engines/testbed/config.cpp
    scummvm/branches/gsoc2010-testbed/engines/testbed/config.h
    scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/config.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/config.cpp	2010-07-22 17:53:32 UTC (rev 51154)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/config.cpp	2010-07-22 17:59:59 UTC (rev 51155)
@@ -29,30 +29,34 @@
 
 TestbedOptionsDialog::TestbedOptionsDialog(Common::Array<Testsuite *> &tsList, TestbedConfigManager *tsConfMan) : GUI::Dialog("Browser") {
 	
-	_testbedConfMan = tsConfMan;
-	
 	new GUI::StaticTextWidget(this, "Browser.Headline", "Select Testsuites to Execute");
 	new GUI::StaticTextWidget(this, "Browser.Path", "Use Double click to select / deselect");
 
 	// Construct a String Array
 	Common::Array<Testsuite *>::const_iterator iter;
+	Common::String description;
 
 	for (iter = tsList.begin(); iter != tsList.end(); iter++) {
-		_testSuiteArray.push_back((*iter)->getName());
-		_testSuiteDescArray.push_back((*iter)->getDescription());
-		_colors.push_back(GUI::ThemeEngine::kFontColorAlternate);
+		_testSuiteArray.push_back(*iter);
+		description = (*iter)->getDescription();
+		if ((*iter)->isEnabled()) {
+			_testSuiteDescArray.push_back(description + "(selected)");
+			_colors.push_back(GUI::ThemeEngine::kFontColorNormal);
+		} else {
+			_testSuiteDescArray.push_back(description);
+			_colors.push_back(GUI::ThemeEngine::kFontColorAlternate);
+		}
 	}
 	
-	_testListDisplay = new TestbedListWidget(this, "Browser.List", _testSuiteDescArray);
+	_testListDisplay = new TestbedListWidget(this, "Browser.List", _testSuiteArray);
 	_testListDisplay->setNumberingMode(GUI::kListNumberingOff);
 	_testListDisplay->setList(_testSuiteDescArray, &_colors);
 
 	// This list shouldn't be editable
 	_testListDisplay->setEditable(false);
 
-	new GUI::ButtonWidget(this, "Browser.Up", "Select All", kTestbedSelectAll, 0);
+	_selectButton = new GUI::ButtonWidget(this, "Browser.Up", "Deselect All", kTestbedDeselectAll, 0);
 	new GUI::ButtonWidget(this, "Browser.Cancel", "Continue", GUI::kCloseCmd);
-	// XXX: Add more commands for this
 	new GUI::ButtonWidget(this, "Browser.Choose", "Exit Testbed", kTestbedQuitCmd);
 }
 
@@ -62,56 +66,54 @@
 	Testsuite *ts;
 	switch (cmd) {
 	case GUI::kListItemDoubleClickedCmd:
-		ts  = _testbedConfMan->getTestsuiteByName(_testSuiteArray[_testListDisplay->getSelected()]);
+		ts  = _testSuiteArray[_testListDisplay->getSelected()];
 		if (ts) {
+			if (ts->isEnabled()) {
+				ts->enable(false);
+				_testListDisplay->markAsDeselected(_testListDisplay->getSelected());
+			} else {
+				ts->enable(true);
+				_testListDisplay->markAsSelected(_testListDisplay->getSelected());
+			}
 			ts->enable(!ts->isEnabled());
-			_testListDisplay->changeColor();
 		}
 		break;
+
 	case kTestbedQuitCmd:
 		Engine::quitGame();
 		close();
 		break;
+
+	case kTestbedDeselectAll:
+		_selectButton->setLabel("Select All");
+		_selectButton->setCmd(kTestbedSelectAll);
+		for (uint i = 0; i < _testSuiteArray.size(); i++) {
+			_testListDisplay->markAsDeselected(i);
+			ts  = _testSuiteArray[i];
+			if (ts) {
+				ts->enable(false);
+			}
+		}
+		break;
+
 	case kTestbedSelectAll:
+		_selectButton->setLabel("Deselect All");
+		_selectButton->setCmd(kTestbedDeselectAll);
 		for (uint i = 0; i < _testSuiteArray.size(); i++) {
-			ts  = _testbedConfMan->getTestsuiteByName(_testSuiteArray[i]);
+			_testListDisplay->markAsSelected(i);
+			ts  = _testSuiteArray[i];
 			if (ts) {
 				ts->enable(true);
 			}
 		}
-		_testListDisplay->setColorAll(GUI::ThemeEngine::kFontColorNormal);
 		break;
+
 	default:
 		GUI::Dialog::handleCommand(sender, cmd, data);
+	
 	}
 }
 
-bool TestbedConfigManager::isEnabled(const Common::String &tsName) {
-	Testsuite *ts = getTestsuiteByName(tsName);
-	return ts ? ts->isEnabled() : false;
-}
-
-
-void TestbedConfigManager::enableTestsuite(const Common::String &name, bool enable) {
-	Testsuite *ts = getTestsuiteByName(name);
-	if (ts) {
-		ts->enable(enable);
-	} else {
-		warning("No matches found for %s\n", name.c_str());
-	}
-}
-
-Testsuite *TestbedConfigManager::getTestsuiteByName(const Common::String &name) {
-	Common::Array<Testsuite *>::const_iterator iter;
-
-	for (iter = _testsuiteList.begin(); iter != _testsuiteList.end(); iter++) {
-		if (name.equalsIgnoreCase((*iter)->getName())) {
-			return *iter;
-		}
-	}
-	return 0;
-}
-
 void TestbedConfigManager::selectTestsuites() {
 
 

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/config.h
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/config.h	2010-07-22 17:53:32 UTC (rev 51154)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/config.h	2010-07-22 17:59:59 UTC (rev 51155)
@@ -40,7 +40,8 @@
 
 enum {
 	kTestbedQuitCmd = 'Quit',
-	kTestbedSelectAll = 'sAll'
+	kTestbedSelectAll = 'sAll',
+	kTestbedDeselectAll = 'dAll'
 };
 
 class TestbedConfigManager {
@@ -48,46 +49,29 @@
 	TestbedConfigManager(Common::Array<Testsuite *> &tList) : _testsuiteList(tList) {}
 	~TestbedConfigManager() {}
 	void selectTestsuites();
-	Testsuite *getTestsuiteByName(const Common::String &name);
-	bool isEnabled(const Common::String &tsName);
 private:
 	Common::Array<Testsuite *> &_testsuiteList;
-	void enableTestsuite(const Common::String &name, bool enable);
 	void parseConfigFile() {}
 };
 
 class TestbedListWidget : public GUI::ListWidget {
 public:
-	TestbedListWidget(GUI::Dialog *boss, const Common::String &name, Common::StringArray &tsDescArr) : GUI::ListWidget(boss, name), _testSuiteDescArray(tsDescArr) {}
+	TestbedListWidget(GUI::Dialog *boss, const Common::String &name, Common::Array<Testsuite *> tsArray) : GUI::ListWidget(boss, name), _testSuiteArray(tsArray) {}
 
-	void changeColor() {
-		// Using Font Color Mechanism to highlight selected entries.
-		// Might not be detectable with some themes
-		if (_listColors.size() >= 2) {
-			if (GUI::ThemeEngine::kFontColorNormal == _listColors[_selectedItem]) {
-				_listColors[_selectedItem] = GUI::ThemeEngine::kFontColorAlternate;
-			} else if (GUI::ThemeEngine::kFontColorAlternate == _listColors[_selectedItem]) {
-				_listColors[_selectedItem] = GUI::ThemeEngine::kFontColorNormal;
-			}
+	void markAsSelected(int i) {
+		if (!_list[i].contains("selected")) {
+			_list[i] += " (selected)";
 		}
-
-		// Also append (selected) to each selected entry
-		if (_list[_selectedItem].contains("selected")) {
-			_list[_selectedItem] = _testSuiteDescArray[_selectedItem];	
-		} else {
-			_list[_selectedItem] += " (selected)";
-		}
+		_listColors[i] = GUI::ThemeEngine::kFontColorNormal;
 		draw();
 	}
-
-	void setColorAll(GUI::ThemeEngine::FontColor color) {
-		for (uint i = 0; i < _listColors.size(); i++) {
-			if (!_list[i].contains("selected")) {
-				_listColors[i] = color;
-				_list[i] += " (selected)";
-			}
+	
+	void markAsDeselected(int i) {
+		if (_list[i].contains("selected")) {
+			_list[i] = _testSuiteArray[i]->getDescription();
 		}
-		draw();;
+		_listColors[i] = GUI::ThemeEngine::kFontColorAlternate;
+		draw();
 	}
 	
 	void setColor(uint32 indx, GUI::ThemeEngine::FontColor color) {
@@ -97,7 +81,7 @@
 	}
 
 private:
-	const Common::StringArray	_testSuiteDescArray;
+	Common::Array<Testsuite *>	_testSuiteArray;
 };
 
 class TestbedOptionsDialog : public GUI::Dialog {
@@ -108,10 +92,10 @@
 
 private:
 	GUI::ListWidget::ColorList _colors;
-	Common::StringArray _testSuiteArray;
+	GUI::ButtonWidget	*_selectButton;
+	Common::Array<Testsuite *> _testSuiteArray;
 	Common::StringArray _testSuiteDescArray;
 	TestbedListWidget *_testListDisplay;
-	TestbedConfigManager *_testbedConfMan;
 };
 
 } // End of namespace Testbed

Modified: scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp	2010-07-22 17:53:32 UTC (rev 51154)
+++ scummvm/branches/gsoc2010-testbed/engines/testbed/testsuite.cpp	2010-07-22 17:59:59 UTC (rev 51155)
@@ -117,8 +117,8 @@
 Testsuite::Testsuite() {
 	_numTestsPassed = 0;
 	_numTestsExecuted = 0;
-	// Initially all testsuites are disabled, enable them by calling enableTestSuite(name, true)
-	_isTsEnabled = false;
+	// Initially all testsuites are enabled, disable them by calling enableTestSuite(name, false)
+	_isTsEnabled = true;
 }
 
 Testsuite::~Testsuite() {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list