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
//
/////////////////////////////////////////////////////////////////////////////