An IRC client for Windows Pocket PCs (cira 2000)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Doc import main development line from cvs head Jul 11, 2007
Setup
Source
License.txt
PocketIRC.sln
PocketIRC.vcproj
ReadMe.txt

ReadMe.txt

BUGS

o WM6.5 the keyboard button disappears - phigan on #pocketpc - use hardware button to bring up home/taskmanager
o Can't Send/Receive files from storage card
o DCC not recognised in some formats, notice type maybe?
o Replace "[ ... ]" with "" in channel list
o Unlamify "Trying..." and other status messages

TODO

o Multiple codepage support
o Logging

o Per network/server? channel lists
o Take channel list out of session object
o Auto Reconnect on Disconnection
o Secondary/generated nick

o Resizeable user list
o Network server lists
o DNS lookup on server provided host info
o Make /list window headers sortable
o Show user list by default option
o Hold to scroll right/left through tabs
o Highlight tab arrow with highest notification colour

o Notify list
o Ignore list
o Channel mode window
o Top of window info bar on disconnect/kick/DCC
o Key combinations for navigating the interface, tabs
o Scroll dialogs into view when tabbing to controls off screen
o Tweak scroll behavior when SIP raised/lowered, try to maintain view
o Auto Rejoin on Kick
o DCC Progress meter
o Open/Run/Play files from DCC window

? Simply socket sink to a single callback with messages
? Auto-connect on run
? Single thread socket handling
? DLL Plugins
? Event scripts
? Configurable command menus
? Tray Notifications
? Audio/Vibration notifications?
? Have TabStrip autosize itself instead of MainWindow doing so
? Double click nick to query
? General perform on connect script
? Per network join on connect and perform

x Server capability parsing
x Doesn't properly parse user mode flags like % and &, general problem of any non-EFNet server flag compatibility
x Channel list breaks on non-breaking spaces in nicknames !#%#@  (irc.visp.ru, #sarovnet, "Dr Geegle")
x User changes nick with query open can no longer talk to that user
x Make DCC List window landscape/square friendly
? drano - can't add favourite to channel (with key?)
x psyBNC compat, has usernames starting with -, ( and )
? psyBNC compat, joining channel with many users causes an error (no other details known)
x Remove duplicates when adding stuff to input combo box
x Enable green button at all times since you can always use it :/
x /server and /connect behaviour when already connected
x Channel List doesn't parse some channels correctly
x Remember channel list (per session)
x Landscape friendly Options dlg
x Landscape friendly Channels dlg
x Add List tab to Channels window and ability to join by typing in a new one
x Timestamps
x Allow querying nicks with ' in them?
x Support /commands
x Better Win32 error code reporting
x Popup menu on channel window too, not just tab
x Perform on connect / join channel / channel favourites
x Nick list menu
x Disable popup menus when disconnected
x DCC chat
x DCC file transfer
x URL hotlinks in display
x Popup menu for nicks and channels in display



XML MENU

<MENU NAME="Channel">
	<COMMAND NAME="Part">
		Part
	</COMMAND>
	<COMMAND NAME="Say">
		Say(InputBar.GetText());
 	</COMMAND>
	<COMMAND NAME="Topic">
		Topic(InputBar.GetText());
 	</COMMAND>
	<SUBMENU NAME="Modes">
		<COMMAND NAME="+s">	
			Mode("+s");
		</COMMAND>
		<COMMAND NAME="+s">	
			Mode("+s");
		</COMMAND>
	</SUBMENU>
</MENU>

<MENU NAME="Query">
	<COMMAND NAME="Close">
		Close
	</COMMAND>
	<COMMAND NAME="Say">
		Say(InputBar.GetText());
 	</COMMAND>
</MENU>



INCOMING EVENT

o Session gets parsed IRCEvent
o Session updates internal state based on
  NICK or MODE changes
  JOIN, PART, KICK events, remote QUITs
o Session optionally passes event to script engine
o If script engine indicates the message should not be processed further, break.
o Session handles PING replies, creates QUERY windows if required
o Event passed to output dispatcher for display on the screen

USER INPUT

o Parse command into IRCCommand object
o Pass IRCCommand to script engine
o If script engine indicates the command should not be processed further, break
o Build in or scripted handler builds an IRCEvent
o IRCEvent is passed to IRCSession
o Session passes Event to OutputDispatcher for display
o IRCSession passed IRCEvent to IRCWriter which formats the event for network transport
o Outgoing message is written to tranport


CHANNEL MODES

	O - give "channel creator" status;
    o - give/take channel operator privilege;
    v - give/take the voice privilege;

    a - toggle the anonymous channel flag;
    i - toggle the invite-only channel flag;
    m - toggle the moderated channel;
    n - toggle the no messages to channel from clients on the
        outside;
    q - toggle the quiet channel flag;
    p - toggle the private channel flag;
    s - toggle the secret channel flag;
    r - toggle the server reop channel flag;
    t - toggle the topic settable by channel operator only flag;

    k - set/remove the channel key (password);
    l - set/remove the user limit to channel;

    b - set/remove ban mask to keep users out;
    e - set/remove an exception mask to override a ban mask;
    I - set/remove an invitation mask to automatically override
        the invite-only flag;

MENU COMMANDS

- Global Commands
	JOIN (input)
	QUIT (input)
	QUERY (input)
	WHOIS (input)
	CTCP (input)
	NICK (input)
	MODE (self) (input)
	RAW (input)
	DCC
		SEND (input)
		XMIT (input)
		CHAT (input)

- Channel
	SAY (channel) (input)
	ACT (channel) (input)
	NOTICE (channel) (input)
	CTCP (channel) (input)
	PART (channel)
	MODE (channel) (*input)
	INVITE (channel) (input)
	User
		VOICE (channel) (input)
		DEVOICE (channel) (input)
		OP (channel) (input)
		DEOP (channel) (input)
		KICK (channel) (input)
		BAN (channel) (input)
		KICK/BAN (channel) (input)

- Channel User
	VOICE (channel) (user)
	DEVOICE (channel) (user)
	OP (channel) (user)
	DEOP (channel) (user)
	KICK (channel) (user) (*input)
	BAN (channel) (user)
	KICK/BAN (channel) (user) (*input)
	User
		MSG (user) (input)
		NOTICE (user) (input)
		CTCP (user) (input)
		QUERY (user)


- Query
	Say(user, input);
	Act(user, input);
	Notice(user, input);
	CTCP(user, input);
	Whois(user);
	OpenQuer(user);
	CloseQuery(user);
	Invite(input, user);

	DCC
		DCCSend(user);
		DCCChat(user);
		DCCXmit(user);

IMenuProvider:
	DoMenu(MENU_TYPE_X, POINT pt, channel, user, input);