An IRC client for Windows Pocket PCs (cira 2000)
http://pocketirc.com
| Doc | ||
| Setup | ||
| Source | ||
| License.txt | ||
| PocketIRC.sln | ||
| PocketIRC.vcproj | ||
| 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);