Manuel Nickschas [Fri, 19 Oct 2007 12:52:02 +0000 (12:52 +0000)]
Stage 2
Manuel Nickschas [Fri, 19 Oct 2007 12:51:06 +0000 (12:51 +0000)]
Renaming QtGui to QtUi, in order to not confuse build systems on non-case-sensitive
systems. Also getting rid of CMake...
Stage 1: Not done yet, not working - DO NOT CHECK OUT JUST NOW!
Benjamin Zeller [Fri, 19 Oct 2007 12:41:46 +0000 (12:41 +0000)]
make quassel compile on msvc
Manuel Nickschas [Thu, 18 Oct 2007 15:15:24 +0000 (15:15 +0000)]
Newest version of QuasselTopia, and some minor random fixes.
Manuel Nickschas [Thu, 18 Oct 2007 14:16:26 +0000 (14:16 +0000)]
Remove superfluous (and warning-producing) semicolons.
Marcus Eggenberger [Thu, 18 Oct 2007 13:58:04 +0000 (13:58 +0000)]
Ok this is the major rework of quassel we've all been waiting for. For the actual user it's a step back though (at least for the moment). With this update the topicline, and the nicklist will not be working anymore.
Major changes:
- core/server.cpp has been disected into seperate handlers which all derive from core/basichandler
- the switch from networknames to networkids has been done where possible (connection to irc is still missing since this is undergoing a separate redesign)
- there are now objects providing information about networks, ircusers and channels. they are avaialbe in the core and in the client
- BufferId has been renamed to BufferInfo since it's no longer an Identifier. (the actual identifier is BufferInfo.uid())
Manuel Nickschas [Fri, 12 Oct 2007 09:51:19 +0000 (09:51 +0000)]
Moving quasselui.h from common/ to client/ where it belongs.
Also get rid of the non-virtual destructor warning. Wth do we
need an empty destructor?
Manuel Nickschas [Wed, 10 Oct 2007 15:45:01 +0000 (15:45 +0000)]
Make debug mode default again. Change this in build/buildconf.pri.
Manuel Nickschas [Wed, 10 Oct 2007 15:26:25 +0000 (15:26 +0000)]
Avoid a strange (maybe gcc-related?) bug where Quassel would crash in
ChatLine::layout(), if it is built with qmake in release mode.
Changing the type of i from int to uint fixes this.
Nope, I don't see a rational explanation for that.
Manuel Nickschas [Wed, 10 Oct 2007 14:43:21 +0000 (14:43 +0000)]
Add manual deps to ensure rebuilding of the binary.
Manuel Nickschas [Wed, 10 Oct 2007 13:02:54 +0000 (13:02 +0000)]
We put the project-wide value of CONFIG in build/buildconf.pri now, in order to quickly
change the build configuration (and no longer rely on platform-dependend default values
for CONFIG)
Manuel Nickschas [Tue, 9 Oct 2007 23:26:19 +0000 (23:26 +0000)]
Added basic stuff for localization/internationalization (i18n).
This is not yet supported by code (other than the commented test code in
main.cpp), and it probably does not make sense to start translating stuff
right now, but I wanted to test if and how linguist works... and it does!
Manuel Nickschas [Tue, 9 Oct 2007 22:31:29 +0000 (22:31 +0000)]
Make QuasselTopia build again. Just run 'qtopiamake && make' in qtopia-build/
Manuel Nickschas [Tue, 9 Oct 2007 22:05:34 +0000 (22:05 +0000)]
qmake-based build system should work now! Please test. If I don't get complaints,
the cmake files will be removed soonish.
See build/quassel.pro for short instructions, or just run 'qmake && make' in the build dir.
NOTE: Files must now be declared in the various *.pri files found in the module directories!
Manuel Nickschas [Tue, 9 Oct 2007 21:01:13 +0000 (21:01 +0000)]
Some small stuff, like adding semicolons to Qt macro defs in order to not
screw up KDevelop parsing...
Manuel Nickschas [Tue, 9 Oct 2007 20:59:00 +0000 (20:59 +0000)]
Checking in current state of QuasselTopia. Probably doesn't even compile.
Manuel Nickschas [Tue, 9 Oct 2007 20:27:45 +0000 (20:27 +0000)]
Preliminary check-in of qmake-based build system. This is not finished yet!
DO NOT TOUCH - DO NOT USE - DO NOT COMPLAIN - CMake is still enabled.
Marcus Eggenberger [Tue, 9 Oct 2007 18:18:39 +0000 (18:18 +0000)]
Added uint networkId() to BufferIds.
Manuel Nickschas [Thu, 4 Oct 2007 23:43:07 +0000 (23:43 +0000)]
Updated Doxyfile now generated docs without too many warnings.
Yeah, we hardly have documented code anyway, so...
Manuel Nickschas [Thu, 4 Oct 2007 23:25:22 +0000 (23:25 +0000)]
consistent_naming++
Manuel Nickschas [Thu, 4 Oct 2007 23:14:22 +0000 (23:14 +0000)]
Moving the message format code (i.e. msg -> formatted string) from Style into Message.
This avoids code duplication, since that function is needed by all GUIs. Note that
the "formatted string" contains our internal format codes, which are then translated
into real eyecandy elsewhere (e.g. in Style).
Manuel Nickschas [Thu, 4 Oct 2007 22:43:41 +0000 (22:43 +0000)]
Make Message a proper class rather than a struct (i.e. use setters/getters and
private members). I am going to add more methods to it, and it's just bad style
to do that to a struct, I think.
Manuel Nickschas [Thu, 4 Oct 2007 10:34:38 +0000 (10:34 +0000)]
Make SignalProxy accept temporary variables for signal/slot name.
Manuel Nickschas [Wed, 3 Oct 2007 09:46:02 +0000 (09:46 +0000)]
Make selectBuffer() work as expected (by me :-)).
Manuel Nickschas [Mon, 1 Oct 2007 23:35:16 +0000 (23:35 +0000)]
Committing my current state just in case. Mostly work on qtopia, nothing special
or usable yet. Some small fixes in the rest of the code, which should not conflict
with anything though.
Marcus Eggenberger [Sun, 30 Sep 2007 17:05:16 +0000 (17:05 +0000)]
Added uint editingDistance(const QString &s1, const QString &s2) for string comparision
Marcus Eggenberger [Sat, 22 Sep 2007 18:31:26 +0000 (18:31 +0000)]
Added getNetworkId(UserId user, const QString &network) to make the transition to network ids easier
Manuel Nickschas [Wed, 19 Sep 2007 11:56:51 +0000 (11:56 +0000)]
pirate++
Yarrrrr!
Marcus Eggenberger [Wed, 19 Sep 2007 11:48:54 +0000 (11:48 +0000)]
Undoing my recent bullshit... -.-
Marcus Eggenberger [Wed, 19 Sep 2007 10:46:29 +0000 (10:46 +0000)]
Moved detachObject(QObject *) to public slots
Manuel Nickschas [Tue, 18 Sep 2007 14:35:01 +0000 (14:35 +0000)]
Make SignalProxy detach QObjects automatically upon their destruction.
Manuel Nickschas [Mon, 10 Sep 2007 19:17:26 +0000 (19:17 +0000)]
SignalProxy::detachObject() implemented. Not really tested though.
Manuel Nickschas [Fri, 7 Sep 2007 08:08:39 +0000 (08:08 +0000)]
Fixes.
Manuel Nickschas [Thu, 6 Sep 2007 22:29:27 +0000 (22:29 +0000)]
Yay! QuasselTopia has a working core connection dialog now! Nothing else yet, GUI-wise.
But you can connect to the core and the client (which is already fully functional on Qtopia!)
initializes correctly. Now all that's missing is a GUI for actually displaying the
client data... ;-)
Also, obsolete--
Manuel Nickschas [Sat, 1 Sep 2007 17:46:40 +0000 (17:46 +0000)]
Renamed project file für Qtopia build to quasseltopia.pro
Manuel Nickschas [Fri, 31 Aug 2007 14:02:55 +0000 (14:02 +0000)]
First check-in of the Qtopia build system. See qtopia-build/README.
Yes, this compiles and links an example application (that includes all quassel parts
intended for Qtopia). Nope, it does not display more than a button, since the main() is
still the one from the Qtopia example app.
And yes, this has hardly been tested and will probably be redesigned at some point. But it's still
a proof of concept :)
Manuel Nickschas [Wed, 29 Aug 2007 21:04:01 +0000 (21:04 +0000)]
clean++
obsolete--
Manuel Nickschas [Wed, 29 Aug 2007 20:44:47 +0000 (20:44 +0000)]
YES! We finally have dynamic signals between Core and Client, meaning that arbitrary
signals and slots can be attached to the SignalProxy, rather than having hard-coded
stuff in the old CoreProxy and ClientProxy classes. This was made possible by integrating
QxtRPCPeer from the guys at <http://www.libqxt.org>.
Everything should work now as before, except connections to an internal core, which are disabled
for the moment. The connection handling had to be completely rewritten, and I still need a QIODevice
that can do loopback connections.
The code is still a big mess, I am deliberately committing this before clean-up, in case I
delete something we still need. Expect a much cleaner version soon.
Oh, and VarMap has been substituted by QVariantMap project-wide. We cannot send VarMap through the
SignalProxy, and I decided to change the naming consistently everywhere.
Manuel Nickschas [Mon, 27 Aug 2007 17:50:49 +0000 (17:50 +0000)]
Last Quassel version to use the soon-to-be-obsolete static signal proxy.
Most of the new, QxtRPCPeer-based SignalProxy has been implemented, and after
this commit, I'm gonna rip out the guts out of both client and core to make
them use dynamic signals-over-net.
Manuel Nickschas [Mon, 20 Aug 2007 13:13:44 +0000 (13:13 +0000)]
Checking in current work on settings dialogs. We will move away from SettingsInterface
and switch to SettingsPage instead, which will offer support for change notification and stuff.
Work is only partly done right now, nothing really works, so the SettingsDlg is disabled for now.
Checking in now primarily because I will tackle QxtRPCPeer now with higher priority.
Marcus Eggenberger [Sun, 19 Aug 2007 12:29:10 +0000 (12:29 +0000)]
some minor code purdifications :)
Marcus Eggenberger [Wed, 15 Aug 2007 12:13:15 +0000 (12:13 +0000)]
Fixing the Bug where a clear of the BufferTreeModel would not result in cleard hashlists.
The result is a redesign of Lookupsystem for child items in the tree has been redesigned.
Manuel Nickschas [Fri, 10 Aug 2007 18:06:10 +0000 (18:06 +0000)]
Fixed disconnect from Core. Dis- and reconnecting should now work as expected.
I had to add some dirty hack in BufferTreeModel for this -> EgS, please check :)
Oh, and I removed the reaaally obsolete ircwidget.ui from svn. This has been rotting
there for months.
Manuel Nickschas [Wed, 8 Aug 2007 16:58:27 +0000 (16:58 +0000)]
Implemented a signal handler to graceful shutdown Quassel when SIGTERM or
SIGINT (Ctrl+C) are received. Should be portable (it's ISO C at least), but if not,
just comment out the few lines in main.cpp and tell me.
Manuel Nickschas [Tue, 7 Aug 2007 20:15:36 +0000 (20:15 +0000)]
Removed broken autoconnect (for networks) -- how are we gonna do that anyways?
We should not wait for a client to connect...
Also I added Storage::renameUser() and a few signals.
Manuel Nickschas [Tue, 7 Aug 2007 19:49:27 +0000 (19:49 +0000)]
Progress bar working, get rid of debug code.
Manuel Nickschas [Tue, 7 Aug 2007 19:39:41 +0000 (19:39 +0000)]
Work-in-progress: use progress bar
Manuel Nickschas [Tue, 7 Aug 2007 19:20:00 +0000 (19:20 +0000)]
Yay! After months, distributed client/core operation is working again!
There is still some work left concerning menu states, progress bar, and the dialog,
and also we don't have user management yet (so you have to use user "Default" and
password "password" for both internal and external cores), but basically it's working.
This also (finally!) closes BR #17.
Manuel Nickschas [Sun, 5 Aug 2007 21:24:58 +0000 (21:24 +0000)]
Tuned the settings dialog a bit, mostly fixing the layout problems we had and adding
functionality.
It should now be possible to register settings pages and use them in the settings dialog.
A settings page is a QWidget implementing the SettingsInterface as defined in plugin.h.
Currently, these are defined in settingspages.* (which may change... maybe it'd be a good
idea to put all settings related stuff in an extra dir below qtgui/?)
Manuel Nickschas [Fri, 3 Aug 2007 10:41:28 +0000 (10:41 +0000)]
Trying to fix random segfault upon connect...
Manuel Nickschas [Wed, 1 Aug 2007 23:28:06 +0000 (23:28 +0000)]
Got rid of class Global, as promised. For now, the few global variables we still
have are in a new namespace Global. This is bound to change to Quassel:: or sumthing.
Oh yeah, and if you find out why QPainter complains, feel free to tell me or fix it.
Everything seems to work, but we still get spurious debug output.
Manuel Nickschas [Wed, 1 Aug 2007 22:38:13 +0000 (22:38 +0000)]
OK Folks, my first commit after quite a while, and while Quassel looks the same as before,
a lot of changed under the hood. This includes
* Parts of the new settings system, includin session data which is gonna replace Global
* Multi-user core
* Complete separation of core and client even in th monolithic client
Basically now most of the multi-user core and core connection code is in place, as well as
most of the skeleton for the authentification. Since parts of the UI, disconnecting from a core
and connecting to a remote core don't work yet, I have most of it disabled or hidden. Things
will fall back in place piece by piece, without requiring too many changes to the source in
the future I hope.
Oh yeah, due to the new settings stuff, you will have to enter identity, network and other data anew.
Maybe this is a good opportunity to wipe out your .config...
Manuel Nickschas [Fri, 27 Jul 2007 19:24:32 +0000 (19:24 +0000)]
Fixed linker error caused by not running MOC on ircuser.h.
/me slaps EgS with a medium-sized imperial Star Destroyer running Vista for this.
Marcus Eggenberger [Fri, 27 Jul 2007 18:54:46 +0000 (18:54 +0000)]
No new features here... (adding/testing of new files)
Marcus Eggenberger [Fri, 27 Jul 2007 18:24:48 +0000 (18:24 +0000)]
Aller guten Dinge sind drei! (please don't ask any questions...)
Marcus Eggenberger [Fri, 27 Jul 2007 16:57:59 +0000 (16:57 +0000)]
next try *lol*
Marcus Eggenberger [Wed, 25 Jul 2007 17:55:00 +0000 (17:55 +0000)]
treemodels can now be cleared
Manuel Nickschas [Sun, 8 Jul 2007 14:36:08 +0000 (14:36 +0000)]
I am starting to clean up the mess that is Global right now, and to implement a clean infrastructure
for storing settings (session-wide and local). First step: Instead of putting synchronization stuff into
Global and doing special treatment for signals in Core, we have now a clear interface for handling
session-wide data in both Client and CoreSession:
Client::storeSessionData(key, data) [static]
Client::retrieveSessionData(key, defdata) [static]
CoreSession::storeSessionData(key, data)
CoreSession::retrieveSessionData(key, defdata)
CoreSession also cares for persistent storage using QSettings. It should be noted that the client-side store function
just sends a signal to the core, and the client-side data is actually updated upon receipt of the sync signal from core.
IOW, stuff is not stored immediately, and you should thus not rely on it being available right after your call to
storeSessionData(). If this is a bad idea, we might change this behavior at some point.
Note: The code has not yet been tested thoroughly, and it's only the first step anyway.
Manuel Nickschas [Fri, 6 Jul 2007 16:54:59 +0000 (16:54 +0000)]
Fixed comments.
Manuel Nickschas [Fri, 6 Jul 2007 16:48:34 +0000 (16:48 +0000)]
Added a function decodeString() to util.{h|cpp} that takes a QByteArray with raw text data and decodes
it using a specified text codec. Except the input data is utf8, in which case this function detects
utf8 and takes appropriate measures to get a correctly decoded QString regardless of the specified coded.
I'd like to use this function for decoding incoming server messages, but we need to change things quite
a bit in the Server to do this correctly. See my comment in server.cpp.
Manuel Nickschas [Thu, 28 Jun 2007 00:57:31 +0000 (00:57 +0000)]
Cleaning up the closet... or at least the code. Tried to reduce the number of #includes, removing
inter-file dependencies as far as possible. There is probably some work left especially in qtgui, though.
Also I removed some obsolete files and split up CoreSession and QtGui in their own files.
Manuel Nickschas [Wed, 27 Jun 2007 22:24:56 +0000 (22:24 +0000)]
Fixed a problem where cmake apparently didn't get all deps right and screwed up by linking qtgui. Removed previous
fugly workaround. Also got rid of the warnings in buffertreemodel.cpp, while I was at it.
Manuel Nickschas [Wed, 27 Jun 2007 21:48:19 +0000 (21:48 +0000)]
Still working on the authentification stuff. Technically, now even in the monolithic build the client connects
to the internal core (still using the possible shortcuts, of course). It should also be able to disconnect, although
not all is cleaned up yet in the process. After this is done, one will be able to disconnect the client from the internal
core and connect to a remote core, and vice versa.
This made a lot of changes to the init process necessary, so I have changed quite a bit of stuff around.
You should refrain from building core and client separately now, even though it probably compiles. It is not tested yet,
and the GUI stuff is still missing anyways.
Marcus Eggenberger [Wed, 27 Jun 2007 17:28:02 +0000 (17:28 +0000)]
minor fixes. now buffers can be removed via del/backspace from customviews
Manuel Nickschas [Mon, 25 Jun 2007 20:31:21 +0000 (20:31 +0000)]
Fix off-by-one bug in a line that was even more buggy until a few hours ago.
Manuel Nickschas [Mon, 25 Jun 2007 18:21:09 +0000 (18:21 +0000)]
Finished the fusion of the different main_* files, so now we have only one #ifdef-ridden main.cpp.
Thought it might be a good idea to enable gcc warnings (-Wall -Wextra -ansi), so I did. While fixing
most of the resulting warnings, I also found a couple of bugs. So this was a Good Thing[tm], obviously.
Don't even think of enabling -pedantic as well - this fails horribly somewhere in Qt.
Manuel Nickschas [Sun, 24 Jun 2007 14:24:44 +0000 (14:24 +0000)]
Some modifications to the build system, that allow us to only use one main.cpp in the future.
Of course, we will need a lot of #ifdefs there...
I could not find out how to specify per-target #defines in cmake, so I use different source files
named build_*.cpp that set a #define and #include main.cpp (actually, main_mono.cpp, which is to be renamed
in the next commit).
Paul Klumpp [Sun, 24 Jun 2007 13:23:52 +0000 (13:23 +0000)]
small easy buildscript, that should work for people who forget the cmake syntax.. lol.
Marcus Eggenberger [Fri, 22 Jun 2007 19:39:41 +0000 (19:39 +0000)]
some minor tweaks
Marcus Eggenberger [Fri, 22 Jun 2007 15:35:44 +0000 (15:35 +0000)]
fixed a bug preventing quasel from crashing on exit
Marcus Eggenberger [Fri, 22 Jun 2007 15:06:11 +0000 (15:06 +0000)]
Implemented Custom Views (configurable via drag and drop)
Manuel Nickschas [Wed, 20 Jun 2007 19:26:32 +0000 (19:26 +0000)]
Reorganizing of the Quassel architecture is almost done. Client and GUI have been split.
I will now consolidate the main files and start enabling building of standalone core and client again.
Marcus Eggenberger [Wed, 20 Jun 2007 13:50:33 +0000 (13:50 +0000)]
forgot to add 6 files... -.-
Marcus Eggenberger [Wed, 20 Jun 2007 13:49:30 +0000 (13:49 +0000)]
still continuing separation of gui and data and file reorganisation:
bufferviewwidget got split into:
- treemodel (a basic tree model for easy inheritance)
- buffertreemodel (fancy version of treemodel)
- bufferviewwidget (not much more left here then pure gui stuff)
bufferview got split into:
- bufferviewfilter
- bufferview
Manuel Nickschas [Wed, 20 Jun 2007 01:44:11 +0000 (01:44 +0000)]
Finished file reorganization (for now). Sources are now in src/, subdir names have changed,
and files from the former gui/ dir have been split up between the new qtgui/ and client/.
Most, if not all files should now be at their final location, while the real work (cleaning up
the code from the first phase of GUI reorganization, as well as doing the actual separation)
begins now.
Manuel Nickschas [Wed, 20 Jun 2007 01:24:38 +0000 (01:24 +0000)]
Continuing file reorganization...
Manuel Nickschas [Wed, 20 Jun 2007 01:21:00 +0000 (01:21 +0000)]
Starting reorganization of files in preparation of separation of client and GUI.
Manuel Nickschas [Wed, 20 Jun 2007 00:01:31 +0000 (00:01 +0000)]
Make selections in bufferviews (mostly) synchronous again.
Manuel Nickschas [Tue, 19 Jun 2007 23:42:47 +0000 (23:42 +0000)]
Two hours of bughunting ending between keyboard and chair. Or something like that. Fixed.
Manuel Nickschas [Tue, 19 Jun 2007 22:09:28 +0000 (22:09 +0000)]
Refactoring the GUI. Work in progress.
Marcus Eggenberger [Tue, 19 Jun 2007 19:27:05 +0000 (19:27 +0000)]
Fixed a Bug where an issued /join did not trigger the creation of a Item in the BufferViews
Manuel Nickschas [Tue, 19 Jun 2007 12:26:32 +0000 (12:26 +0000)]
Only expand network items in bufferviews.
Manuel Nickschas [Tue, 19 Jun 2007 10:00:42 +0000 (10:00 +0000)]
Make BufferView trees expanded by default.
Manuel Nickschas [Tue, 19 Jun 2007 09:37:08 +0000 (09:37 +0000)]
Setting status buffer active on connection (by creating a BufferId for it in Core
before we try to access the corresponding Buffer in GUI), fixing BR #40.
Manuel Nickschas [Tue, 19 Jun 2007 00:50:42 +0000 (00:50 +0000)]
Big update this time - Core has been redesigned to be multi-user capable. At least partly. (BR #42)
* Architecture changes mostly complete:
- Core has been split in Core (static) and CoreSession (per-user objects)
- Connection stuff has been moved out of CoreProxy into Core
- Lots of cleanups, and we have finally real singletons!
- Global is now (externally) a static class -- changes throughout the code
* Monolithic Quassel works (or at least it seems to)
* Standalone Core and GUI disabled for now:
- While most of the new infrastructure is in place in Core, we still need GUI stuff for auth (BR #17)
- Syncing with Core as well as getting session states not done yet
Next steps will include the redesign of the GUI to make that cleaner as well (BR #41)
Marcus Eggenberger [Mon, 18 Jun 2007 19:47:01 +0000 (19:47 +0000)]
Minor Update:
- some minor fixes
- preparation for query merging and custom views
Marcus Eggenberger [Mon, 18 Jun 2007 15:09:21 +0000 (15:09 +0000)]
Changed the BufferView System to a MVC Design Pattern
Marcus Eggenberger [Mon, 18 Jun 2007 15:01:38 +0000 (15:01 +0000)]
I konw... stupid me... moved it to the wrong directory... -.-
Marcus Eggenberger [Mon, 18 Jun 2007 14:51:09 +0000 (14:51 +0000)]
rename of bufferview.ui according to new naming scheme
Manuel Nickschas [Mon, 11 Jun 2007 18:56:29 +0000 (18:56 +0000)]
Renamed NetworkView[Widget] to BufferView[Widget].
Marcus Eggenberger [Mon, 11 Jun 2007 14:09:25 +0000 (14:09 +0000)]
Implemented a basic notification system to show activity in the networkviews
Marcus Eggenberger [Wed, 6 Jun 2007 11:00:23 +0000 (11:00 +0000)]
Fixes to SqliteStorage:
- removed all transactions in favor of speed
- fixed some queries
Manuel Nickschas [Sun, 3 Jun 2007 14:21:01 +0000 (14:21 +0000)]
Fixed and integrated SqliteStorage as new storage backend. This retires the old Backlog class.
SqliteStorage still needs some love though, and it does not yet have transactions.
Now that we have transitioned to Storage, we can tackle multi-user support in Core.
Manuel Nickschas [Thu, 24 May 2007 12:45:30 +0000 (12:45 +0000)]
Added install rules (at least for *nix)
Marcus Eggenberger [Wed, 23 May 2007 14:21:12 +0000 (14:21 +0000)]
Implemented new SqliteStorage Backend
Manuel Nickschas [Mon, 21 May 2007 21:56:52 +0000 (21:56 +0000)]
Adding skeleton for SqliteStorage.
Manuel Nickschas [Mon, 21 May 2007 14:36:16 +0000 (14:36 +0000)]
Implement check for empty quit message, fixing BR #31.
Manuel Nickschas [Sat, 19 May 2007 02:01:04 +0000 (02:01 +0000)]
Fixed small bug in CTCP handling: userFromMask -> nickFromMask
Marcus Eggenberger [Fri, 18 May 2007 20:16:08 +0000 (20:16 +0000)]
added some more ctcp handlers
Manuel Nickschas [Fri, 18 May 2007 15:57:24 +0000 (15:57 +0000)]
Fixed rendering for CTCP ACTION, closing BR #27.