Subversion Repositories public

Compare Revisions

Ignore whitespace Rev 49 → Rev 50

/tilgungsplan/trunk/src/ziaendwidget.cpp
20,30 → 20,216
 
#include <kmessagebox.h>
#include <klocale.h>
#include <klistview.h>
#include <kdatewidget.h>
#include <knuminput.h>
#include <qcheckbox.h>
#include <qstring.h>
#include <qfile.h>
#include <qdir.h>
#include <qlistview.h>
 
#include <iostream.h>
 
#include "ziaendwidget.h"
#include "tilgplan.h"
#include "helper.h"
 
ziaendWidget::ziaendWidget ( QWidget* parent, const char* name, bool modal, WFlags fl )
: ziaendWidgetBase ( parent,name, modal,fl )
{}
{
QString hdir = QDir::homeDirPath ();
QFile zaf;
ZIAEND Zi;
char datum[16], prz[24], rate[24], rv[2], ber[2];
int day, mon, year, fd;
 
kDateWidget_Datum->setDate(QDate::currentDate());
kListView_Table->setColumnWidth(0, 80);
kListView_Table->setColumnWidth(1, 90);
kListView_Table->setColumnAlignment(1, Qt::AlignRight);
kListView_Table->setColumnWidth(2, 100);
kListView_Table->setColumnAlignment(2, Qt::AlignRight);
kListView_Table->setColumnWidth(3, 60);
kListView_Table->setColumnAlignment(3, Qt::AlignCenter);
kListView_Table->setColumnWidth(4, 60);
kListView_Table->setColumnAlignment(4, Qt::AlignCenter);
 
hdir.append("/.zinsaend.dat");
zaf.setName(hdir);
 
if (zaf.open(IO_ReadOnly) != FALSE)
{
fd = zaf.handle();
 
while (read(fd, &Zi, sizeof(ZIAEND)) >= sizeof(ZIAEND))
{
date_int(&day, &mon, &year, Zi.Datum);
sprintf (datum, "%02d.%02d.%d", day, mon, year);
sprintf (prz, "%.3f", Zi.Zins);
sprintf (rate, "%.2f", Zi.NewRate);
rv[0] = (Zi.FixRate) ? 'F' : 'N';
ber[0] = (Zi.Rate) ? 'B' : 'N';
rv[1] = ber[1] = 0;
cout << datum << ", " << prz << ", " << rate << ", " << rv << ", " << ber << endl;
QListViewItem *element = new QListViewItem(kListView_Table, i18n(datum), i18n(prz), i18n(rate), i18n(rv), i18n(ber));
kListView_Table->insertItem(element);
}
 
zaf.close();
}
}
 
ziaendWidget::~ziaendWidget()
{}
 
/*$SPECIALIZATION$*/
void ziaendWidget::tbSelectSlot()
{}
void ziaendWidget::tbSelectSlot(QListViewItem *item)
{
//QListViewItem *item = kListView_Table->selectedItem();
long datum;
int day, mon, year;
QString str;
QDate dt;
 
datum = get_date((char *)item->text(0).ascii());
date_int (&day, &mon, &year, datum);
dt.setYMD(year, mon, day);
kDateWidget_Datum->setDate(dt);
kDoubleNumInput_Zinssatz->setValue(item->text(1).toDouble());
kDoubleNumInput_Rate->setValue(item->text(2).toDouble());
str = item->text(3);
 
if (!str.compare(i18n("N")))
checkBox_Rate->setChecked(FALSE);
else
checkBox_Rate->setChecked(TRUE);
 
str = item->text(4);
 
if (!str.compare(i18n("N")))
checkBox_KalkRate->setChecked(FALSE);
else
checkBox_KalkRate->setChecked(TRUE);
}
 
void ziaendWidget::pbSaveSlot()
{
QString hdir = QDir::homeDirPath ();
QString str;
QFile zaf;
QListViewItem *item;
int fd, men, i;
ZIAEND Zi;
 
hdir.append("/.zinsaend.dat");
zaf.setName(hdir);
 
if (zaf.open(IO_ReadWrite | IO_Truncate) == FALSE)
{
KMessageBox::error(0, QString("Could not open file for reading: %1").arg(zaf.errorString()));
done(QDialog::Rejected);
}
fd = zaf.handle();
// wegschreiben der Daten in der ListBox
men = kListView_Table->childCount();
item->firstChild();
 
for (i = 0; i < men; i++)
{
item = kListView_Table->itemAtIndex(i);
Zi.Datum = get_date ((char *)item->text(0).ascii());
Zi.Zins = item->text(1).toDouble();
Zi.NewRate = item->text(2).toDouble();
Zi.Rate = (!strcmp(item->text(3).ascii(), "N")) ? 0 : 1;
Zi.FixRate = (!strcmp(item->text(4).ascii(), "N")) ? 0 : 1;
 
write (fd, &Zi, sizeof(ZIAEND));
}
 
zaf.close ();
done(QDialog::Accepted);
}
 
void ziaendWidget::pbRemoveSlot()
{}
{
QListViewItem *item = kListView_Table->selectedItem();
long datum;
int day, mon, year;
QString str;
QDate dt;
 
datum = get_date((char *)item->text(0).ascii());
date_int (&day, &mon, &year, datum);
dt.setYMD(year, mon, day);
kDateWidget_Datum->setDate(dt);
kDoubleNumInput_Zinssatz->setValue(item->text(1).toDouble());
kDoubleNumInput_Rate->setValue(item->text(2).toDouble());
str = item->text(3);
 
if (!str.compare(i18n("N")))
checkBox_Rate->setChecked(FALSE);
else
checkBox_Rate->setChecked(TRUE);
 
str = item->text(4);
 
if (!str.compare(i18n("N")))
checkBox_KalkRate->setChecked(FALSE);
else
checkBox_KalkRate->setChecked(TRUE);
 
kListView_Table->takeItem(kListView_Table->currentItem());
}
 
void ziaendWidget::pbInsertSlot()
{}
{
QString datum, prz, rate, rv, ber;
QDate dt;
double dr, dp;
char hv0[128];
 
dt = kDateWidget_Datum->date();
 
if (dt <= QDate::currentDate())
{
KMessageBox::error(0, i18n("Das Datum muss größer als das aktuelle Datum sein!"));
return;
}
 
dp = kDoubleNumInput_Zinssatz->value();
dr = kDoubleNumInput_Rate->value();
 
if (dp <= 0.0 && !checkBox_Rate->isChecked())
{
KMessageBox::error(0, i18n("Der Zinssatz darf nicht Null sein!"));
return;
}
 
if (dp < 0.0 || dp > 100.0)
{
KMessageBox::error(0, i18n("Der Zinnsatz darf nicht kleiner als Null oder größer als 100 sein!"));
return;
}
 
if (checkBox_Rate->isChecked() && dr <= 0.0)
{
KMessageBox::error(0, i18n("Die Rate muss größer als Null sein!"));
return;
}
sprintf (hv0, "%02d.%02d.%d", dt.day(), dt.month(), dt.year());
datum = QString::fromUtf8(hv0);
prz = prz.setNum (dp, 'f', 3);
rate = rate.setNum (dr, 'f', 2);
rv = QString::fromUtf8(checkBox_Rate->isChecked() ? "F" : "N");
ber = QString::fromUtf8(checkBox_KalkRate->isChecked() ? "B" : "N");
QListViewItem *element = new QListViewItem(kListView_Table, datum, prz, rate, rv, ber);
kListView_Table->clearSelection();
kListView_Table->insertItem(element);
}
 
void ziaendWidget::pbCancelSlot()
{
done(QDialog::Rejected);