summaryrefslogtreecommitdiff
path: root/src/gui/serverdialog.cpp
AgeCommit message (Collapse)AuthorFilesLines
2025-05-01Fixed loading of servers saved in client configThorbjørn Lindeijer1-5/+0
This was broken by 79e4325192f3260ed4ded264e43da8429650bf72 due to there being a case difference between the serverTypeToString and parseType functions, causing loaded servers to be invalid due to unknown server type. Closes #105
2025-04-29Fixed compile with ENABLE_MANASERV=OFFThorbjørn Lindeijer1-2/+2
2025-04-25GUI: Added support for multiple color palettes to ThemeThorbjørn Lindeijer1-7/+8
Each Skin can point to a different palette, which can be used to tweak text colors where necessary. For now there is no generic solution for this, instead a number of locations have been adjusted to take the palette into account: * ChatWindow sets its palette on the BrowserBox used in its tabs. * Popup sets its palette on child widgets when they are added (covering BrowserBox, Label and TextBox). * ItemPopup now uses its palette when looking up colors. The BrowserBox now retrieves its numbered text colors from the theme. Also added OLDCHAT, AWAYCHAT and GLOBAL theme colors, with ##g, ##o and ##a to choose these colors respectively. Fixed ImageRect move constructor. TextPreview class was cleaned up from unused functionality. Being name colors are no longer different between the name shown on the being and the name shown in the SpeechDialog.
2025-04-02Use a consistent naming style for enum class valuesThorbjørn Lindeijer1-5/+5
Sometimes I've used CamelCase and sometimes SNAKE_CASE for these values. Since "enum class" values are always prefixed with the enum name, which uses CamelCase, I find it more fitting to use it for the values as well. Also fixes compilation on Windows where 'ERROR' was conflicting with a define.
2025-04-02General code cleanupsThorbjørn Lindeijer1-9/+5
* Removed some unused includes and forward declarations. * Use std::unique_ptr to automate cleanup. * Use TextRenderer::renderText in BrowserBox to avoid code duplication. * Removed unused STATE_NORMAL from StateFlags. * Small layout fix in ServerDialog. * Reduced rewrapping delay in BrowserBox to 33ms and disabled it entirely when there are no more than 1000 lines to rewrap. The rewrapping is usually fast enough.
2025-03-14Moved widget drawing code into ThemeThorbjørn Lindeijer1-6/+4
This is cleaner overall since now each widget type no longer needs to keep track of its own instances and updating of the GUI alpha. It also introduces a single point from where the GUI theme support can be enhanced. Theme is no longer a singleton, though for now there is a single instance owned by the Gui singleton. Widgets adjusted to delegate their painting to the Theme: * Button * Tab * TextField * CheckBox * RadioButton * Slider * DropDown * ProgressBar * ScrollArea * ResizeGrip * PlayerBox (by subclassing ScrollArea) The Window and Popup widgets already use the theme through the Skin class. They can actually use a different skin per instance, though this feature is only used by the SpeechBubble.
2025-03-13Removed needless case-insensitive string comparisonsThorbjørn Lindeijer1-1/+1
These are not necessary since we can instead make sure the referenced values match case, like we do for everything else. This affects server types in the server list and colors referenced in theme files. The server version was also compared case-insensitively for some reason.
2025-03-01Further Download related cleanupsThorbjørn Lindeijer1-135/+98
* Moved the memory buffer and mutex handling into the Download class to simplify the code updating the UI in ServerDialog and UpdaterWindow. * Replaced the "DownloadUpdate" callback function with simply polling Download::getState, since in the end polling was happening anyway. This changes also fixes handling of the Enter key while downloading updates, which no longer cancels the update process. Also, when pressing Escape while things are being downloaded, the first press cancels and only the second press goes back to login. Introduced a ThreadSafe template class, which wraps any type and makes it only accessible by calling lock(). This ensures the data is never accessed without locking the relevant mutex.
2025-02-26Cleanup Download code, fixing SDL_Thread leakingThorbjørn Lindeijer1-28/+15
The download thread was setting itself to nullptr (d->mThread = nullptr) in a number of locations. This caused a later call to SDL_WaitThread to be unable to perform cleanup. This reverts most of 1eb02f83a5d3895e4e18db30ea10d88da94ba4c0 (including making Download::cancel no longer blocking), but keeps the necessary waiting for the thread to finish before freeing the memory buffer in ~UpdaterWindow(), which might have been the bug fixed by that change. Fixed removal of downloaded .part file when its checksum failed. It trying to remove the file without .part appended instead. Fixed download progress indication in ServerDialog to not be reversed, though this is rarely visible due to the server list being so small. Fixed reporting of curl error.
2025-01-20Made client config statically typedThorbjørn Lindeijer1-70/+9
This makes accessing the config values much faster, since it no longer needs to do a lookup nor string conversion, which means we could remove some needless copying of the values. Overall it makes it easier to find out where settings are used and it puts the defaults along with the declaration. Options with default values are no longer saved to the config file. This does not include unrecognized options, which are kept around to provide some compatibility with older clients. While most basic options have kept the same name, more complicated settings like window geometry, shortcuts, outfits, etc. now have their own XML elements. Older clients will ignore these and erase them when saving the configuration.
2025-01-20Wrapped xmlNodePtr access with a Node classThorbjørn Lindeijer1-23/+19
Slightly more ergonomic and this eliminates direct libxml2 usage from many places.
2024-09-28Replaced all "xmlChildrenNode" with "children"Thorbjørn Lindeijer1-2/+2
Because "xmlChildrenNode" is a macro defined for compatibility with libxml1, which we don't support.
2024-09-27Replaced for_each_xml_child_node macro with helper classThorbjørn Lindeijer1-2/+2
The new XML::Children class enables using a C++11 range-based for loop to iterate over the children of an xmlNodePtr.
2024-03-06General code cleanupsThorbjørn Lindeijer1-5/+1
* Use final for all message handlers, Client, LocalPlayer, Being::getType, Being::setPosition and Being::setMap. (avoids some warnings about virtual dispatch in constructors) * Use auto in more places * Use emplace_back instead of push_back in some places * Use default member initializers * Less else after return * Removed superfluous .c_str() * Removed type aliases that are only used once * Removed more unused includes
2024-03-02Changed server type to "enum class"Thorbjørn Lindeijer1-6/+6
2024-03-02Added support for -y / --server-type parameterThorbjørn Lindeijer1-13/+12
Usually this would be guessed correctly by the port, but now it is also possible to just specify the server type and the port will be derived from there, unless a default port is given in the branding file. Closes #56
2024-02-09C++11: Use default member initializersThorbjørn Lindeijer1-3/+0
This patch is not exhaustive.
2024-01-29Apply C++11 fixitsThorbjørn Lindeijer1-6/+5
modernize-loop-convert modernize-deprecated-headers
2024-01-26Apply C++11 fixitsThorbjørn Lindeijer1-10/+10
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2024-01-26Added support for the "persistentIp" server info settingThorbjørn Lindeijer1-2/+11
This option was added in ManaPlus and support for it is required to connect to The Mana World as it is currently set up, since the server sends 127.0.0.1 for the character server and map server IP. Can't play yet, because of an unknown packet 0x226 being received once connecting to the map server.
2013-05-09Changed default serverlist.xml URL to avoid redirectThorbjørn Lindeijer1-1/+1
Previously the redirect was from www.manasource.org to manasource.org.
2012-03-24Merge branch '0.6'Thorbjørn Lindeijer1-2/+2
2012-03-24Introduced compile-time option to disable use of C++0xThorbjørn Lindeijer1-2/+2
This is in order to still support older compilers, in particular GCC 4.2.1, so that Mana may be compiled for Maemo 5. Reviewed-by: Yohann Ferreira
2012-03-21Added default ports when connecting to a custom server.jurkan1-14/+2
When creating a custom server entry, the default port is used if no other port is specified. Reviewed-by: Thorbjørn Lindeijer Mantis-issue: 464
2012-02-26Fixed display of server descriptionErik Schilling1-0/+1
Reviewed-by: bjorn.
2012-02-18Fixed manaserv-enabled buildsThorbjørn Lindeijer1-2/+2
Wrong define was used in the code.
2012-02-12Restored manaserv-less buildsYohann Ferreira1-3/+11
I made sure the manaserv based custom server don't get deleted when running a manaserv-less client session. Reviewed-by: Thorbjørn Lindeijer
2012-01-31Fixed saving the selected server at server connection level.Yohann Ferreira1-1/+3
I also change the serverInfo to use a deque to permit the use of the push_front function. Spotted and reviewed-by: Erik Schilling
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2012-01-16Renamed some file names for consistency with the class namesThorbjørn Lindeijer1-1/+1
This was already done by ManaPlus. It's a good idea anyway and it makes comparing the code a little easier. Reviewed-by: Yohann Ferreira
2012-01-10Added a separate label for the download description in the server dialog.Yohann Ferreira1-10/+13
+ Fixe requested by Ablu. Reviewed-by: Ablu
2012-01-10Added a modify button to the server dialog.Yohann Ferreira1-12/+41
This was righteously requested by Ablu as missing when dealing with one's own entries. Reviewed-by: Ablu
2012-01-10Made addition of custom servers be done in a separate window.Yohann Ferreira1-122/+54
Now the first window the user can see is a list of servers which can double-clicked, making it all less cluttered. This commit also makes custom servers able to now have their own titles and their own description, just as the official ones. I also fixed the add entry button being registered twice to the action listener, and the fact that the description wasn't updated properly at windows loading and when adding/removing an entry. Resolves: Mana-Mantis #237. Reviewed-by: Ablu
2011-04-30Revert "Add option for sorting servers list"Stefan Dombrowski1-53/+0
This reverts commits e35b3bdd0a74464e4b4d3b931ca416f0c7864ba6 and e35b3bdd0a74464e4b4d3b931ca416f0c7864ba6. Sometimes the text fields and the list show different server selected, so you don't see to what server you connect. It is a big security risk sending your user name and password to the wrong server. Reviewed-by: Freeyorp, Bertram
2011-03-25Merge branch '0.5'Thorbjørn Lindeijer1-1/+1
Conflicts: CMakeLists.txt po/pt_BR.po po/ru.po src/winver.h
2011-03-22Fix a warning on serverdialogBlue Sans Douze1-2/+1
2011-03-22Add option for sorting servers list (issue 316)Blue Sans Douze1-0/+54
2011-03-05Fixing removal of custom serverStefan Dombrowski1-1/+1
The server got selected from a list that still contained the unwanted server.
2010-11-02Re-Enable the support of manaserv servers.Yohann Ferreira1-51/+0
Reviewed-by: CodyMartin.
2010-11-02Adding double-click to server dialog and world select dialogStefan Dombrowski1-0/+10
This resolves http://bugs.manasource.org/view.php?id=259 Reviewed-by: Thorbjorn
2010-11-01Merge branch '0.5' of gitorious.org:mana/manaYohann Ferreira1-11/+51
Conflicts: src/being.cpp src/client.cpp src/commandhandler.cpp src/gui/setup_video.cpp src/gui/socialwindow.cpp src/gui/viewport.cpp src/gui/widgets/browserbox.cpp src/gui/widgets/itemcontainer.cpp src/imageparticle.cpp src/localplayer.cpp src/localplayer.h src/map.cpp src/net/tmwa/beinghandler.cpp src/particle.cpp src/particle.h src/player.cpp src/player.h
2010-10-13Hiding Manaserv from the player on TMW-Athena only releaseStefan Dombrowski1-0/+51
With the preprocessor definition MANASERV_SUPPORT the manaserv support is avaible as before. * Removing server type from server dialog GUI. * Ignoring Manaserv entries in serverlist.xml. * In order not to lose Manaserv CustomServers from the config.xml, they get stored in mManaservServers. * The entries in mManaservServers are saved in config.xml again. But they are now behind the TMWA-Athena servers. * For custom server the GUI sets 6901 as default value for port. * If the server type is unknown, then we use TMW-Athena. This is relevant, if the client is started with command line options for server. Reviewed-by: Bertram
2010-09-28Removing click-countStefan Dombrowski1-11/+0
Click-count is not double-click, because it does neither check if the clicks happen on the same object nor if the clicks happen in rapid succession. * In the server dialog it can happen that you can get connected by just selecting a server. * In the social window it can happen that you open a chat by just clicking once on a name. * In the inventory window you better only select useable items if you want to use them, because they might get used by just selecting them. * And in case you actually want to use double-click, it often does not work, because click-count is already larger than 2. This reverts the commits: 8b4d9f9b5eaf175baf0c4209c312133bb457742c b1aef06ac85b1ed7db7725e50b2dbfcdfd1a0925 4c27bfbf6ca84546e5b914b7909df14dd2966081 Reviewed-by: Thorbjorn
2010-09-25Merge branch '1.0'Thorbjørn Lindeijer1-1/+1
Conflicts: src/actorspritemanager.h src/beingmanager.cpp src/game.cpp src/gui/beingpopup.cpp src/gui/chat.cpp src/gui/chat.h src/gui/inventorywindow.h src/gui/itempopup.cpp src/gui/socialwindow.cpp src/gui/statuswindow.cpp src/gui/widgets/chattab.cpp src/gui/widgets/chattab.h src/net/tmwa/inventoryhandler.cpp src/net/tmwa/partyhandler.cpp src/party.cpp src/sound.cpp src/utils/stringutils.cpp src/utils/stringutils.h
2010-09-11Fixing misspelling in Setup_Video and removing empty lines from logStefan Dombrowski1-1/+1
Reviewed-by: Jaxad0127
2010-08-03Move Theme and UserPalette to the resources folderJared Adams1-2/+2
Reviewed-by: Yohann Ferreira
2010-07-28Centralized configuration default values using the VariableData system.Yohann Ferreira1-2/+2
Please note that I didn't turned all the getValue() call into new ones, simply because I have to have config object initiated which is not forcefully the case the branding file. Resolves: Manasource Mantis #170.
2010-06-13Merge remote branch '1.0/1.0'Jared Adams1-6/+12
Conflicts: data/graphics/CMakeLists.txt data/graphics/Makefile.am src/client.cpp
2010-06-13Handle char-server login errors betterJared Adams1-0/+1
Also fix a small compilation error sometimes reported. Reviewed-by: Chuck Miller
2010-06-12Add error.xml to client repository and move error.pngJared Adams1-0/+2
There is no reason why error.xml shouldn't be in this repository, as it is used when no sprite data is present and is a very small file anyways. Servers can still replace these if they want to. error.png is only used in sprites, so should be in the new sprites folder too. Reviewed-by: 4144