# Doomseeker Changelog (Version 0.1 Alpha)

## Blzut3

- Commented out a debug feature - Removed the ability to resize the about window.
- Made release builds not display a console. I'm not sure if this works on any other compiler other than MinGW.
- Added version number (0.1 Alpha) - Added about dialog. - Added file->quit to the menu.
- Darkened silver and white in order to make them more readable.
- Made the players table have a white background and black text in order to provide a uniform experience across platforms.
- Removed some really old test code that was referenced, but not actually used. - Added string colorization so now player names are shown in their proper colors.
- Finished converting the SDE API to the point it can be at Milestone 1. The PluginLoader needs to be changed a little still. - Fixed: Unix operating systems don't use .exe files. In fact binaries don't even have an extension.
- Fixed: In some servers the first character of a name was dropped. - Fixed: break that prevented a function from generating a string with more than one character. - Fixed: Lists were not cleared on refresh causing them to pile up. - Removed banned signal and replaced it with a more generic updated signal. Be sure to check the response now.
- Temporarly fixed rapid refreshing starting new threads for each refresh. Probably is still a good idea to give the Refresher it's own thread pool.
- Removed veritcal header from the Server table as it didn't convey useful information. - Made the rows automatically be resized to be as small as possible. - Used proper layout managers on the MainWindow to allow resizing.
- Used some layouts on the configuration dialog so it should resize properly.
- Fixed: The scanner tried to use an empty string to indicate token not found, but it could have possibly been an empty string.
- Finished converting the Config class to Qt.
- Added some classes from Simple Doom Editor that we may be able to apply to this project.
- Completed Skulltag server querying. There are a few fields which I'm unable to test at this point.
- Picked a coding standard. (The same as Qt.)
- Added code to query Skulltag servers. - Added test Odamex query code.

## Zalewa

-Fixed: Crash introduced in previous revision. Yet again a server was not removed from the table after hitting "Get Server" button.
- Fixed: Crash after second use of "Get Servers" button caused by first row from the table not being removed.
- Fixed: Game could be launched by double clicking with any mouse button. Now it responds only to LMB double clicks.
- Added server list support for various server responses.
- Added: Joining server. - Added: <A HREF></A> tags to Server Name tooltip. This cannot be clicked on ATM because tooltip disappears. Will work on that later. - Added: port number to address column
- Fixed: A bug that allowed saving configuration boxes that didn't read any configuration yet. This could cause a removal of previously saved settings. - User can now store wad paths in the config.
- Fixed: compile issues on Windows fixed by replacing preprocessor checks for WIN32 and WINDOWS with preprocessor checks for Q_WS_WIN - Added: Configuration box for file paths which does nothing ATM - Added: SkullTag launches when user doubleclicks on a server. This isn't finished yet.
- Running application by double clicking on server list.
- Tooltips are now spawned only when needed and displayed immediately after cursor enters area of interest.
- Added ToolTips to Wads and Server name columns. - Added SQF_EMAIL and SQF_GAMESKILL to SQF_STANDARDQUERY. - Fixed: pos for reading server version was 12 while it should be 8.
- Tooltip on player column now sorts and splits players properly - If no info about limits is received from the server the values are nullified (just in case)
- Added a flag to server to disallow running more than one refreshing thread at once.
- Refresh button is now Get Servers button - Added Refresh All button which refreshes all servers visible on the list.
- Fixed: Player::currentScore was 'unsigned short' while score can be negative. - Players tooltip is now formatted using HTML tags.
- Added a ToolTip to players column. This isn't working properly yet.
- Replaced QTableView in main window with custom widget because QTableView doesn't have any "right mouse button" signals. - Added server refreshing: select one or more servers then right-click.
- MasterClient object is now stored in SLHandler class and it's deleted with this class or when setMaster() is called. - Server objects are deleted with MasterClient object. - Server::Refresher is now ServerRefresher due to necessity of spawning Guardian thread. - Refresh button is blocked until Guardian thread emits "allServersRefreshed" signal.
- Generalized EngineConfiguration structure. It's called ConfigurationBoxInfo now and can be used to generate and store various config group boxes.
- Fixed: another flag was not honored, this time in Configure dialog in QTreeView. - Added: layout managers to engineSkulltagConfig.ui
- Fixed: properties on server table gone wrong. Again. Now problematic flags are set inside SLCHandler::prepareServerTable() method.
- Fixed: properties on server table somehow gone wrong.
- Set server table to behave exactly like SSB.
- Moved code handling server table to serverlist.h/.cpp files.
- Added some methods to retrieve server pointer stored in table. - Columns are set to certain default width.
- Server table now displays wads used by the server - Separated server table header info from Mainwindow class because it seemed like something that will bring profit in the future.
- Added: a layout in EngineSkulltagConfigBox - Server table displays basic server information. - Added: ServerPointer class to store Server pointers in Server table.
- Replaced QModelIndex with QStandardItem* in ConfigureDlg and EngineConfiguration classes after I realized the former will not work. - Done working with the Configuration dialog box for now and begun work on servers list.
- Renamed: engineConfigBase.h to configBase.h. Former EngineConfigurationBaseBox is now a base class for every config QGroupBox. - Added: ability to specify and save information about SkullTag binary location. This was tested on Windows only. - Added: Instance of Config class stored in MainWindow.
- Fixed: known Configuration box crash from previous revision. - Finished working on Configuration box skeleton. To add new engines simply use ConfigureDlg::addEngineConfiguration() method.
-Further implementation of configuration box. Now configuration box crashes due to bad conversion, but the code still compiles.
-Fixed: compile issue with WIN32 defined -Further work on Configure dialog.
- Added: QTreeWidget to Options->Configure which does nothing ATM.
- Begun working on the GUI, created UI "skeleton" for configuration - Moved part of the code that was refreshing servers from main() to MainWindow::refresh slot. Connected refresh button with this slot. - Modified src/CMakeLists.txt to wrap .ui files like this: http://sector.ynet.sk/qt4-tutorial/my-first-qt-gui-application.html
- Finished replacing all occurencies of std::string by QString in sdeapi - Replaced all occurencies of .sde and sde.cfg with .doomseeker and doomseeker.cfg
Config.cpp / Config.hpp: Replaced occurencies of std::string with QString. std::string method calls were replaced as follows: - std::string::find_first_of with QString::indexOf - std::string::find_last_of with QString::lastIndexOf - std::string::insert(p, 1, '\\') with QString::insert(p, '\\') (Config.cpp line 98) - std::string::c_str() with QString::toAscii()::constData()
- Fixed: forgot to rename one call in PluginLoader::filesInDir()
- Fixed: Refactored SDE code to fit Doomseeker standards. There are three members that start with "m_" now because I didn't know how to resolve naming problems.
- Fixed: Refresher is now an inner class of Server class and it operates on Server class. - Added: virtual method doRefresh() to Server class, used by Refresher class. Method Server::refresh() stopped being virtual as it's now directly creating a new Server::Refresher thread. - I also had to temporarily comment out all SDEAPI code so Doomseeker would compile.
- Fixed: update signal from Server class is now connected to Tester's method using Qt::DirectConnection.
- Fixed: when the timelimit equals zero server doesn't send timeleft information but there was no check on that. Added an 'if' check before reading timeleft info. - Added: servers are now refreshed in separate threads.