/* * kPPP: A pppd front end for the KDE project * * $Id$ * * Copyright (C) 1997 Bernd Johannes Wuebben * wuebben@math.cornell.edu * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include "conwindow.h" #include "pppdata.h" ConWindow::ConWindow(PPPData *pd, QWidget *parent, const char *name, QDialog *mainwidget ) : QWidget(parent, name, 0), minutes(0), seconds(0), hours(0), days(0), tl1(0), _pppdata(pd) { info1 = new QLabel(QObject::tr("Connected at:"), this); info2 = new QLabel("", this); timelabel1 = new QLabel(QObject::tr("Time connected:"), this); timelabel2 = new QLabel("000:00:00", this); vollabel = new QLabel(QObject::tr("Volume:"), this); volinfo = new QLabel("", this); // now the stuff for accounting session_bill_l = new QLabel(QObject::tr("Session Bill:"), this); session_bill = new QLabel("", this); total_bill_l = new QLabel(QObject::tr("Total Bill:"), this); total_bill = new QLabel("", this); this->setCaption("kppp"); cancelbutton = new QPushButton(this); cancelbutton->setText(QObject::tr("Disconnect")); connect(cancelbutton, SIGNAL(clicked()), mainwidget, SLOT(disconnect())); // statsbutton = new QPushButton(this); // statsbutton->setText(QObject::tr("Details")); // statsbutton->setFocus(); // connect(statsbutton, SIGNAL(clicked()), mainwidget, SLOT(showStats())); clocktimer = new QTimer(this); connect(clocktimer, SIGNAL(timeout()), SLOT(timeclick())); // read window position from config file // int p_x, p_y; // PPPData::data()->winPosConWin(p_x, p_y); // setGeometry(p_x, p_y, 320, 110); } ConWindow::~ConWindow() { stopClock(); } // save window position when window was closed bool ConWindow::event(QEvent *e) { if (e->type() == QEvent::Hide) { // PPPData::data()->setWinPosConWin(x(), y()); return true; } else return QWidget::event(e); } QString ConWindow::prettyPrintVolume(unsigned int n) { int idx = 0; const QString quant[] = {QObject::tr("Byte"), QObject::tr("KB"), QObject::tr("MB"), QObject::tr("GB"), QString::null}; float n1 = n; while(n >= 1024 && quant[idx] != QString::null) { idx++; n /= 1024; } int i = idx; while(i--) n1 = n1 / 1024.0; QString s = QString::number( n1, 'f', idx==0 ? 0 : 1 ); //KGlobal::locale()->formatNumber( n1, idx==0 ? 0 : 1 ); s += " " + quant[idx]; return s; } // void ConWindow::accounting(bool on) { // // cache accounting settings // accountingEnabled = on; // // volumeAccountingEnabled = PPPData::data()->VolAcctEnabled(); // // delete old layout // if(tl1 != 0) // delete tl1; // // add layout now // tl1 = new QVBoxLayout(this, 10, 10); // tl1->addSpacing(5); // QHBoxLayout *tl = new QHBoxLayout; // tl1->addLayout(tl); // tl->addSpacing(20); // QGridLayout *l1; // int vol_lines = 0; // // if(_pppdata->VolAcctEnabled()) // // vol_lines = 1; // if(accountingEnabled) // l1 = new QGridLayout(4 + vol_lines, 2, 5); // else // l1 = new QGridLayout(2 + vol_lines, 2, 5); // tl->addLayout(l1); // l1->setColStretch(0, 0); // l1->setColStretch(1, 1); // info2->setAlignment(AlignRight|AlignVCenter); // timelabel2->setAlignment(AlignRight|AlignVCenter); // session_bill->setAlignment(AlignRight|AlignVCenter); // total_bill->setAlignment(AlignRight|AlignVCenter); // volinfo->setAlignment(AlignRight|AlignVCenter); // // make sure that there's enough space for the bills // QString s1 = session_bill->text(); // QString s2 = total_bill->text(); // QString s3 = volinfo->text(); // session_bill->setText("888888.88 XXX"); // total_bill->setText("888888.88 XXX"); // volinfo->setText("8888.8 MB"); // session_bill->setFixedSize(session_bill->sizeHint()); // total_bill->setFixedSize(total_bill->sizeHint()); // volinfo->setFixedSize(volinfo->sizeHint()); // session_bill->setText(s1); // total_bill->setText(s2); // volinfo->setText(s3); // l1->addWidget(info1, 0, 0); // l1->addWidget(info2, 0, 1); // l1->addWidget(timelabel1, 1, 0); // l1->addWidget(timelabel2, 1, 1); // if(accountingEnabled) { // session_bill_l->show(); // session_bill->show(); // total_bill_l->show(); // total_bill->show(); // l1->addWidget(session_bill_l, 2, 0); // l1->addWidget(session_bill, 2, 1); // l1->addWidget(total_bill_l, 3, 0); // l1->addWidget(total_bill, 3, 1); // if(volumeAccountingEnabled) { // vollabel->show(); // volinfo->show(); // l1->addWidget(vollabel, 4, 0); // l1->addWidget(volinfo, 4, 1); // } else { // vollabel->hide(); // volinfo->hide(); // } // } else { // session_bill_l->hide(); // session_bill->hide(); // total_bill_l->hide(); // total_bill->hide(); // if(volumeAccountingEnabled) { // vollabel->show(); // volinfo->show(); // l1->addWidget(vollabel, 2, 0); // l1->addWidget(volinfo, 2, 1); // } else { // vollabel->hide(); // volinfo->hide(); // } // } // tl->addSpacing(10); // QVBoxLayout *l2 = new QVBoxLayout(5); // tl->addLayout(l2); // l2->addStretch(1); // // l2->addWidget(statsbutton); // l2->addWidget(cancelbutton); // l2->addStretch(1); // tl1->addSpacing(5); // setFixedSize(sizeHint()); // /* // do not overwrite position read from config // setGeometry((QApplication::desktop()->width() - width()) / 2, // (QApplication::desktop()->height() - height())/2, // width(), // height()); // */ // } // void ConWindow::dock() { // // DockWidget::dock_widget->show(); // this->hide(); // } void ConWindow::startClock() { minutes = 0; seconds = 0; hours = 0; QString title ; title = _pppdata->accname(); if(_pppdata->get_show_clock_on_caption()){ title += " 00:00" ; } this->setCaption(title); timelabel2->setText("00:00:00"); clocktimer->start(1000); } void ConWindow::setConnectionSpeed(const QString &speed) { info2->setText(speed); } void ConWindow::stopClock() { clocktimer->stop(); } void ConWindow::timeclick() { // QString tooltip = QObject::tr("Connection: %1\n" // "Connected at: %2\n" // "Time connected: %3") // .arg(_pppdata->accname()).arg(info2->text()) // .arg(time_string2); // if(accountingEnabled) // tooltip += QObject::tr("\nSession Bill: %1\nTotal Bill: %2") // .arg(session_bill->text()).arg(total_bill->text()); // // volume accounting // if(volumeAccountingEnabled) { // volinfo->setEnabled(TRUE); // int bytes = _pppdata->totalBytes(); // volinfo->setText(prettyPrintVolume(bytes)); // } // seconds++; // if(seconds >= 60 ) { // minutes ++; // seconds = 0; // } // if (minutes >= 60){ // minutes = 0; // hours ++; // } // if( hours >= 24){ // days ++; // hours = 0; // } // time_string.sprintf("%02d:%02d",hours,minutes); // time_string2 = ""; // if (days) // time_string2.sprintf("%d d %02d:%02d:%02d", // days,hours,minutes,seconds); // else // time_string2.sprintf("%02d:%02d:%02d",hours,minutes,seconds); // caption_string = _pppdata->accname(); // caption_string += " "; // caption_string += time_string; // timelabel2->setText(time_string2); // if(_pppdata->get_show_clock_on_caption() && (seconds == 1)){ // // we update the Caption only once per minute not every second // // otherwise I get a flickering icon // this->setCaption(caption_string); // } // QToolTip::add(DockWidget::dock_widget, tooltip); } void ConWindow::closeEvent( QCloseEvent *e ){ // we don't want to lose the // conwindow since this is our last connection kppp. // if we lost it we could only kill the program by hand to get on with life. e->ignore(); // if(_pppdata->get_dock_into_panel()) // dock(); } void ConWindow::slotAccounting(QString total, QString session) { total_bill->setText(total); session_bill->setText(session); }