src: Yearly copyright bump This time on time!
src: Yearly copyright bump Let's welcome 2020.
src: Yearly copyright bump ... and it's still January!
modernize: Reformat ALL the source... again! It's been more than six years since we last used an autoformatter on the codebase. Tooling has progressed, so has the language and of course our personal preferences. Use clang-format this time to reformat the whole codebase, following the rules laid out in .clang-format (which one can use for configuring an IDE, too, if it supports autoformatting). Overall, the new style is not too different from what we used before, with one significant change: We now attach pointer/reference indicators (*&) to the type rather than the name, i.e. we left-align. While this is a major deviation from the Qt style which we use for almost everything else, it aligns more closely with many other projects, as well as the C++ documentation and STL. It also makes more sense semantically, because */& are really part of the type. Other changes include (but are not limited to): - Use only one blank line between function definitions - Categorize includes from generic/system to local, sorting each category alphabetically. The generic-to-local sort order seems to be more common than the other way round, so we use that. - In .cpp files, the corresponding header is always included first. This is a general recommendation, because it makes it harder to accidentally introduce a reliance on transitive includes in headers. - Consistently break initializers in ctors before the comma, so the commas are left-aligned together with the colon. - Use two spaces between code and trailing comments. Note that sometimes even clang-format gets things wrong. In a few places, formatting was manually fixed; however, reviewing a diff of almost 80k lines is a rather boring task, so we didn't thoroughly go through all the changes. Wrong formatting can always be fixed in follow-up commits, anyway. Note also that we don't intend to re-run clang-format on a regular basis, nor do we want to religiously follow a hardcoded set of rules for new code in the future. Where it makes sense, the rules may be bent in favor of better readability or more pleasing code.
modernize: Remove old-style slot usage in NetworkModelController Use member function pointers in NetworkModelController and related classes, instead of old-style slots and invokeMethod().
modernize: Use '= default' instead of empty ctor/dtor bodies Also remove lots of unnecessary, empty ctors and dtors.
modernize: Prefer default member init over ctor init Where appropriate, initialize class members in the header rather than in the constructor.
modernize: Use override instead of virtual Let clang-tidy fix all occurrences where override should be used instead of virtual. Also, let it annotate member functions where virtual was missing in the first place.
modernize: Use nullptr Let clang-tidy fix all occurrences where nullptr should be used instead of 0.
src: Mark symbols to be exported where needed Generate export headers for the Quassel modules, and mark all relevant classes and function to be exported so that shared libraries can be linked against without globally exporting all symbols. This is a hard requirement for Windows DLLs, and more efficient on other platforms, too. For now, this was done incrementally until everything linked properly. In the future, we may consider explicitly defining the public interfaces for each module, and trying to minimize the linker interface e.g. by PIMPLing.
client: /list automatically requests channel list When using "/list" or "/list <params" to open Channel List dialog, automatically request the channel list. This mimics the behavior before the UI interception and minimizes effort needed to use the dialog.
client: Convert /list #chan to UI advanced search Pass "/list" parameters to ChannelListDlg when opening, allowing for "/list #channel", <Enter> to search in a similar fashion to current stable release. Add documentation to the showChannelList()/related functions. Prompt when "/list" is called without a valid network selected. This fixes running "/list" before any networks are selected resulting in a channel list dialog that wouldn't do anything.
Add a Configure menu item to Networks in the buffer list Add 'Configure' above 'Disconnect' in the right-click menu from a network in the buffer list. Clicking 'Configure' will open the Configure Networks dialog to the selected network. Fixes #607
Semi-yearly copyright bump It's no longer 2016.
Add function to "(Dis-)Connect from/to all" in connection dropdown If I'm not mistaken there needs to be one ActionType per different button layout (with icon/text only)...
Bring copyright headers into 2016 That took some time...
Toggle hiding of Join/Part/Quits with a single button
Happy New Year!
Use Qt's native icon theme support rather than our own For the longest time, we've had our own icon loader (or used KDE's) in order to provide rudimentary icon theme support. However, since 2009, Qt has had native support for loading icons from themes. In recent version (due to platform integration etc.), proper icon theme support has gotten much more complex too... things like theme inheritance, proper fallback policies, specialized states and so on have never been supported by our simple custom icon loader. This commit switches all icon loading to QIcon::fromTheme(). The downside is that we have little control about Qt's icon loader, which may cause issues with some of the non-standard icons we ship. In case of the native Qt icon loader being used, we define fallbacks that should find the extra icons. If you use Qt5 and have the KDE Frameworks integration plugin for Qt enabled, these fallbacks won't work unfortunately. If you see missing icons, you may have to install Quassel's 'hicolor' icons into /usr/share/icons/hicolor so they get picked up. For non-Linux platforms, we recommend using the bundled Oxygen icon set (this is the default).
Happy New Year!