campo-sirio/include/mailbox.h
guy 0a93dba34d Corretto destinatario TMessage
MOdificati sheet in modo da gestire meglio perdita e guadagno del focus
Tolta isspace dalle TString e messa is_space


git-svn-id: svn://10.65.10.50/trunk@869 c028cbd2-c16b-5b4b-a496-9718f37d4682
1995-01-16 15:10:52 +00:00

120 lines
3.5 KiB
C++
Executable File

// $Id: mailbox.h,v 1.5 1995-01-16 15:10:24 guy Exp $
/* si', trattasi di -*-c++-*- */
// Mailbox.h
// Message passing between applications and command lines
#ifndef __MAILBOX_H
#define __MAILBOX_H
#ifndef __STRINGS_H
#include <strings.h>
#endif
// TMessage flags
#define MSG_READ (0x01)
class TMessage : public TObject
// basic message
{
TString16 _from;
TString16 _to;
TString80 _subject;
TString _text;
byte _flags;
int _number;
friend class TMailbox;
protected:
void setread() { _flags |= MSG_READ; }
bool isread() { return _flags & MSG_READ; }
int number(int n = -1) { return (n == -1 ? _number : (_number = n)); }
public:
const TString& from() const { return _from; }
const TString& to() const { return _to; }
const TString& subject() const { return _subject; }
const TString& body() const { return _text; }
const TString& from(const char* f) { return _from = f; }
const TString& to(const char* t) { return _to = t; }
const TString& subject(const char* s) { return _subject = s; }
const TString& body(const char* b) { return _text = b; }
void send();
TMessage(const char* to, const char* sub, const char* text,
const char* from = NULL);
};
class TMailbox : public TObject
{
TFilename _path;
TArray _msgs;
int _lastread, n_new;
long _lastpos;
int _cnt;
protected:
void reread();
TMessage* next_read();
TMessage* next_unread();
public:
int check() // return
{ reread(); return n_new; } // n. of messages waiting
void restart() { _cnt = 0;} // reinitialize read phase
int items() // n. of read+unread messages
{ return _msgs.items(); } // in mailbox
TMessage* next(bool read = FALSE); // get next message; if
// TRUE passed, get read mess. too
TMessage* next_s(char* s, bool read = FALSE); // next w/ matching subject
TMessage* next_f(char* f, bool read = FALSE); // next w/ matching sender
void send(TMessage& m); // send a message
void sendcmd(int argc, char* argv[],
char* to); // transform commandline args
// in mail messages
// NOT IMPLEMENTED
char* readcmd(char* to = NULL); // transform mailbox in
// cmdline parms for calling
// non_compliant applications
// NOT IMPLEMENTED
TMessage* get(int n) // nth message
{ return (TMessage*)_msgs.objptr(n); }
TMailbox::TMailbox(const char* appname = NULL);
virtual ~TMailbox();
};
// instead of using commandline args directly, user posts
// messages to application, then calls it without arguments
// If the application is called by the user with command_line
// arguments, sendcmd parses them and translates to messages
// according to the following rules:
//
// from is "cmdline"
//
// subject comes from arguments of type -opt=value
// (opt becomes subject and value becomes body)
//
// args like -opt="val, val, val" create
// one message for each val, with the same subject=opt
//
// -opt arg creates subject=opt and empty body
//
// one-word arguments create a message with "null" subject
//
// A mailbox should be member of applicat and sendcmd should be
// called automatically upon startup
// Non compliant applications (which do not use mailbox) can be
// called consistently by sending messages,
// appending TMailbox::readcmd(appname) to
// their name and doing an exec()
#endif