Source Code (Use browser search to find items of interest.)

Class Index

kppp'AccountingBase (./kdenetwork/kppp/accounting.h:40)

class AccountingBase : public QObject {
  Q_OBJECT
public:
  AccountingBase(QObject *parent);
  virtual ~AccountingBase();

  virtual double total();
  virtual double session();

  virtual bool running() { return false; };
  virtual bool loadRuleSet(const char *name) = 0;

public slots:
  virtual void slotStart() {};
  virtual void slotStop() {};

signals:
  void changed(QString total, QString session);

protected:
  void logMessage(QString, bool = FALSE);
  bool saveCosts();
  bool loadCosts();

  QString LogFileName;
  double _total, _session;
  QString _name;

  // static members
public:
  static void resetCosts(const char *accountname);
  static void resetVolume(const char *accountname);
  static QString getCosts(const char* accountname);
  static QString getAccountingFile(const QString &accountname);
};


/////////////////////////////////////////////////////////////////////////////
//
// Accounting based on ruleset files
//
/////////////////////////////////////////////////////////////////////////////

kppp'AccountingBase::AccountingBase() (./kdenetwork/kppp/accounting.cpp:76)

AccountingBase::AccountingBase(QObject *parent) :
  QObject(parent),
  _total(0),
  _session(0)
{
  QDate dt = QDate::currentDate();
  LogFileName = QString("%1-%2.log")
    .arg(dt.monthName(dt.month()))
    .arg(dt.year(), 4);

  LogFileName = KGlobal::dirs()->saveLocation("appdata", "Log")
    + "/" + LogFileName;

  debug("LogFileName: %s", LogFileName.latin1());
}


kppp'AccountingBase::~AccountingBase() (./kdenetwork/kppp/accounting.cpp:92)

AccountingBase::~AccountingBase() {
  if(running())
    slotStop();
}



kppp'AccountingBase::total() (./kdenetwork/kppp/accounting.cpp:98)

double AccountingBase::total() {
  return _total + _session;
}




kppp'AccountingBase::session() (./kdenetwork/kppp/accounting.cpp:104)

double AccountingBase::session() {
  return _session;
}


// set costs back to zero ( typically once per month)

kppp'AccountingBase::resetCosts() (./kdenetwork/kppp/accounting.cpp:110)

void AccountingBase::resetCosts(const char *accountname){
  QString prev_account = gpppdata.accname();

  gpppdata.setAccount(accountname);
  gpppdata.setTotalCosts("");

  gpppdata.setAccount(prev_account);
}



kppp'AccountingBase::resetVolume() (./kdenetwork/kppp/accounting.cpp:120)

void AccountingBase::resetVolume(const char *accountname){
  QString prev_account = gpppdata.accname();

  gpppdata.setAccount(accountname);
  gpppdata.setTotalBytes(0);

  gpppdata.setAccount(prev_account);
}



kppp'AccountingBase::logMessage() (./kdenetwork/kppp/accounting.cpp:130)

void AccountingBase::logMessage(QString s, bool newline) {
  int old_umask = umask(0077);

  QFile f(LogFileName);

  bool result = f.open(IO_ReadWrite);
  if(result) {
    // move to eof, and place \n if necessary
    if(f.size() > 0) {
      if(newline) {
	f.at(f.size());
	char c = 0;
	f.readBlock(&c, 1);
	if(c != '\n')
	  f.writeBlock("\n", 1);
      } else
	f.at(f.size());
    }

    f.writeBlock(s.data(), s.length());
    f.close();
  }

  // restore umask
  umask(old_umask);
}



kppp'AccountingBase::getCosts() (./kdenetwork/kppp/accounting.cpp:158)

QString AccountingBase::getCosts(const char* accountname) {
  QString prev_account = gpppdata.accname();

  gpppdata.setAccount(accountname);
  QString val = gpppdata.totalCosts();

  gpppdata.setAccount(prev_account);

  return val;
}




kppp'AccountingBase::saveCosts() (./kdenetwork/kppp/accounting.cpp:171)

bool AccountingBase::saveCosts() {
  if(!_name.isNull() && _name.length() > 0) {
    QString val;
    val.setNum(total());

    gpppdata.setTotalCosts(val);
    gpppdata.save();

    return TRUE;
  } else
    return FALSE;
}



kppp'AccountingBase::loadCosts() (./kdenetwork/kppp/accounting.cpp:185)

bool AccountingBase::loadCosts() {
  QString val = gpppdata.totalCosts();

  if(val.isNull()) // QString will segfault if isnull and toDouble called
    _total = 0.0;
  else {
    bool ok;
    _total = val.toDouble(&ok);
    if(!ok)
      _total = 0.0;
  }

  return TRUE;
}



kppp'AccountingBase::getAccountingFile() (./kdenetwork/kppp/accounting.cpp:201)

QString AccountingBase::getAccountingFile(const QString &accountname) {
  QString f = "kppp/Rules/";
  f += accountname;
  QString d = locate("data", f);

  if(d.isNull())
    return "";
  else
    return d;
}


/////////////////////////////////////////////////////////////////////////////
//
// Accounting class for ruleset files
//
/////////////////////////////////////////////////////////////////////////////