#ifndef _KSOPTS_H_ #define _KSOPTS_H_ #include #include #include #include #include #include #include #include #include #define IRC_SAFE_MAX_LINE 450 #include "boundscheckingarray.h" #include "ksircchannel.h" #include "ksircserver.h" // Central place to hold KSirc's options // and manage default values. The base classes // are only used directly by the prefs dialog. // The constructors initialize all options with default values. class KSOGeneral { public: KSOGeneral(); enum { SDI, MDI } displayMode; bool autoCreateWin : 1; bool autoCreateWinForNotice : 1; bool nickCompletion : 1; bool displayTopic : 1; bool oneLineEntry : 1; bool runDocked : 1; // bool timeStamp : 1; // bool beepNotify : 1; bool colorPicker : 1; bool autoRejoin : 1; // bool beepOnMsg : 1; // bool logging : 1; bool publicAway : 1; bool useColourNickList : 1; // bool topicShow : 1; bool dockPopups : 1; bool autoSaveHistory : 1; int windowLength; TQString backgroundFile; TQPixmap backgroundPixmap(); private: TQPixmap m_backgroundPixmap; }; class KSOChannel { public: KSOChannel(); TQString server; TQString channel; bool timeStamp : 1; bool beepNotify : 1; bool beepOnMsg : 1; bool logging : 1; bool topicShow : 1; bool filterJoinPart : 1; TQString encoding; TQDateTime lastUsed; static bool applyGlobally; }; class KSOServer { public: KSOServer(); TQString server; bool globalCopy; TQString nick; TQString altNick; TQString realName; TQString userID; TQStringList notifyList; TQDateTime lastUsed; }; class KSOStartup { public: KSOStartup(); TQRect geometry; // TQString nick; // TQString altNick; // TQString realName; // TQString userID; // TQStringList notifyList; }; class KSOColors { public: enum { numColors = 16 }; KSOColors(); TQColor textColor; TQColor linkColor; TQColor infoColor; TQColor channelColor; TQColor errorColor; TQColor ownNickColor; bool ownNickBold : 1; bool ownNickUl : 1; bool ownNickRev : 1; TQColor msgContainNick; // needs config + impl TQColor msg1Contain; // needs config TQString msg1String; // needs config bool msg1Regex; TQColor msg2Contain; // need config TQString msg2String; // needs config bool msg2Regex; TQColor nickForeground; TQColor nickBackground; TQColor backgroundColor; TQColor selBackgroundColor; TQColor selForegroundColor; //TQColor ircColors[numColors]; BoundsCheckingArray ircColors; BoundsCheckingArray nickHighlight; TQString colourTheme; TQFont defaultFont; bool ksircColors : 1; bool mircColors : 1; bool nickColourization : 1; }; class KSORMBMenu { public: KSORMBMenu(); }; class KSOServChan { public: KSOServChan(); }; typedef TQMap ChannelOpMap; typedef TQMap ServerChannelOpMap; typedef TQMap ServerOpMap; class KSOptions : public KSOGeneral, public KSOStartup, public KSOColors, public KSORMBMenu, public KSOServChan { public: KSOptions() { s_options = this; } void load( int sections = -1 ); void save( int sections = -1 ); static KSOptions *options() { return s_options; } ServerChannelOpMap channel; ServerOpMap server; KSOChannel &chan( const KSircChannel &chanInfo ) { return channel[chanInfo.server()][chanInfo.channel()]; } KSOServer &serv( const KSircServer &servInfo ) { return server[servInfo.server()]; } void channelSetup(TQString serv, TQString chan); void applyChannelGlobal(void); void serverSetup(TQString server); void serverSetup( const KSircServer &servInfo ) { serverSetup(servInfo.server()); } enum { All = -1, General = 1, Startup = 2, Colors = 4, RMBMenu = 8, ServChan = 16, Channels = 32, Servers = 64 }; private: static KSOptions *s_options; }; #define ksopts (KSOptions::options()) #endif