1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
#ifndef UTILITY_H
#define UTILITY_H
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <vector>
class ICQUser;
//=====CUtilityInternalWindow================================================
class CUtilityInternalWindow
{
public:
CUtilityInternalWindow();
~CUtilityInternalWindow();
bool POpen(const char *cmd);
int PClose();
bool Running() { return fStdOut != NULL; }
FILE *StdOut() { return fStdOut; }
FILE *StdErr() { return fStdErr; }
protected:
int pid;
FILE *fStdOut;
FILE *fStdErr;
};
//=====CUtilityUserField=========================================================
class CUtilityUserField
{
public:
CUtilityUserField(const char *_szTitle, const char *_szDefault)
{
m_szTitle = strdup(_szTitle);
m_szDefault = strdup(_szDefault);
}
~CUtilityUserField()
{
free (m_szTitle);
free (m_szDefault);
}
const char *Title() { return m_szTitle; }
const char *Default() { return m_szDefault; }
const char *FullDefault() { return m_szFullDefault; }
bool SetFields(ICQUser *);
protected:
char *m_szTitle;
char *m_szDefault;
char *m_szFullDefault;
};
//=====CUtility==================================================================
enum EWinType { UtilityWinLicq, UtilityWinTerm, UtilityWinGui };
class CUtility
{
public:
CUtility(const char *_szFileName);
~CUtility();
const char *Name() { return m_szName; }
const char *Command(ICQUser *) { return m_szCommand; }
const char *Description() { return m_szDescription; }
EWinType WinType() { return m_eWinType; }
bool SetFields(unsigned long _nUin);
bool SetFields(const char *szId, unsigned long nPPID);
void SetUserFields(const std::vector<const char *> &_vszUserFields);
void SetBackgroundTask() { strcat(m_szFullCommand, " &"); }
const char *FullCommand() { return m_szFullCommand; }
unsigned short NumUserFields() { return m_vxUserField.size(); }
CUtilityUserField *UserField(unsigned short i) { return m_vxUserField[i]; }
bool Exception() { return bException; }
protected:
char *m_szName;
char *m_szDescription;
EWinType m_eWinType;
char *m_szCommand;
char *m_szFullCommand;
std::vector <CUtilityUserField *> m_vxUserField;
bool bException;
};
//=====CUtilityManager===========================================================
class CUtilityManager
{
public:
CUtilityManager();
~CUtilityManager();
unsigned short LoadUtilities(const char *_szDir);
CUtility *Utility(unsigned short n) { return m_vxUtilities[n]; }
unsigned short NumUtilities() { return m_vxUtilities.size(); }
protected:
std::vector <CUtility *> m_vxUtilities;
};
extern CUtilityManager gUtilityManager;
#endif
|