You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
knights/knights/resource.h

242 lines
7.0 KiB

/***************************************************************************
resource.h - description
-------------------
begin : Tue Jul 17 2001
copyright : (C) 2003 by Troy Corbin Jr.
email : tcorbin@users.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef RESOURCE_H
#define RESOURCE_H
/**
*@author Troy Corbin Jr.
*/
/* KDE */
#include <kapp.h>
#include <tdelocale.h>
#include <kcursor.h>
#include <tdelistview.h>
#include <tdecmdlineargs.h>
/* TQt */
#include <tqstylesheet.h>
#include <tqvaluelist.h>
#include <tqstring.h>
#include <tqstringlist.h>
#include <tqpixmap.h>
#include <tqimage.h>
/* Local */
#include "definitions.h"
class audio;
class KnightsPixCache;
class TabManager;
class Accel;
struct engineResource
{
TQListViewItem *Item;
TQString Name;
TQString Filename;
TQString Arguments;
TQString LogFile;
int Protocol;
int Wins;
int Losses;
int Draws;
int CurrentRef;
};
struct serverResource
{
TQListViewItem *Item;
TQString Name;
TQString URL;
TQString UserName;
TQString Password;
TQString LogFile;
TQString Timeseal;
bool StorePass;
int Port;
int CurrentRef;
};
typedef TQValueList<engineResource> engineList;
typedef TQValueList<serverResource> serverList;
class resource
{
public:
/* The current Theme */
int ThemeSize;
bool ThemeBorder;
TQStyleSheet *ConsoleStyle;
TQString CurrentBoard;
TQString CurrentChessmen;
TQString CurrentAudio;
ThemeHeader boardHeader;
ThemeHeader chessmenHeader;
ThemeHeader audioHeader;
KnightsPixCache *pixCache;
TabManager *tabManager;
Accel *myAccel;
/* General Settings */
TQString Local_Player;
TQString Local_Email_Address;
int Config_Version;
bool Accepted_License;
int OPTION_On_Init;
int Audio_Volume;
bool OPTION_Audio;
bool OPTION_Audio_Current_Only;
bool OPTION_Auto_Queen;
bool OPTION_Auto_Preview;
bool OPTION_Auto_Call_Flag;
bool OPTION_Auto_Close_Last_ICS;
bool OPTION_Animate_Moves;
bool OPTION_Book_White;
bool OPTION_Book_Black;
bool OPTION_Board_Orientation;
bool OPTION_Delete_Logs;
bool OPTION_Ponder;
bool OPTION_Show_Coord;
bool OPTION_Show_Last_Move;
bool OPTION_Show_Splash;
bool OPTION_Show_Extended_PGN;
bool OPTION_Pause_On_Minimize;
bool OPTION_Reuse_PGN;
bool OPTION_3DBoard;
TQString PGN_Filename;
TQString Email_Command_Line;
TQString Email_Address;
TQString SCID_Image_Path;
int Widget_Height;
/* ICS Options */
int Seek_Timer;
int OPTION_Profanity;
bool OPTION_Premove;
bool OPTION_Kibitz;
bool OPTION_Private;
bool OPTION_Shout;
bool OPTION_Tell;
bool OPTION_Seek;
/* Notification Prompts */
TQString PromptForSaving;
/* Colors */
TQColor COLOR_White;
TQColor COLOR_Black;
TQColor COLOR_Background;
TQColor COLOR_Standard;
TQColor COLOR_PrivateTell;
TQColor COLOR_ChannelTell;
TQColor COLOR_Shout;
TQColor COLOR_Whisper;
TQColor COLOR_Notification;
TQColor COLOR_Notation;
TQColor COLOR_Notation_Shadow;
TQColor COLOR_GraphBackground;
TQColor COLOR_GraphForeground;
/* Fonts */
TQFont FONT_Standard;
TQFont FONT_PrivateTell;
TQFont FONT_ChannelTell;
TQFont FONT_Shout;
TQFont FONT_Whisper;
TQFont FONT_Notification;
/* Cursors */
TQCursor CURSOR_Standard;
TQCursor CURSOR_Thinking;
TQCursor CURSOR_Text;
/* Chess Engines */
engineList engines;
engineList::Iterator enginesIT;
/* Chess Servers */
serverList servers;
serverList::Iterator serversIT;
/* New Match Presets */
TCPList TCPWhite;
TCPList TCPBlack;
char MatchRules;
char Type[4];
char Strength[4];
resource( TDECmdLineArgs *args );
~resource();
void ConfigRead( void );
void ConfigWrite( void );
void readThemeDir( void );
TQString getBoard( int Index=-1 );
TQString getChessmen( int Index=-1 );
TQString getSounds( int Index=-1 );
TQString themeDir( void );
void setTheme( int BoardIndex=-1, int ChessmenIndex=-1 );
void setAudio( int AudioIndex=-1 );
void resizeTheme( const int &size );
/**
Call buildStyle whenever you need to reparse the Resource configuration */
void buildStyle( void );
TQPixmap LoadIcon( TQString Name, int Group );
TQPixmap loadSCIDImage( const TQString &name );
void play( const char );
private:
TQStyleSheetItem *SSI_Default;
TQStyleSheetItem *SSI_PrivateTell;
TQStyleSheetItem *SSI_ChannelTell;
TQStyleSheetItem *SSI_Shout;
TQStyleSheetItem *SSI_Whisper;
TQStyleSheetItem *SSI_Notification;
TQString GlobalDataDir;
TQString LocalDataDir;
TQStringList Boards;
TQStringList Chessmen;
TQStringList Sounds;
TDEIconLoader *Icons;
audio *Audio;
void ReadEngines( void );
void WriteEngines( void );
void ReadServers( void );
void WriteServers( void );
void ReadMatchParam( void );
void WriteMatchParam( void );
void ReadColors( void );
void WriteColors( void );
void ReadFonts( void );
void WriteFonts( void );
/**
Borrowed from KMail
Very primitive en/de-cryption so that the password is not
readable in the config file. But still very easy breakable.
*/
TQString encryptStr( const TQString& inStr ) const;
TQString decryptStr( const TQString& inStr ) const;
TQString themeURL( const TQString );
void loadThemeItem( const TQString& URL, TQImage& Image );
};
#endif