Subversion Repositories public

Rev

Rev 52 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/***************************************************************************
 *   Copyright (C) 2007 by Andreas Theofilu                                *
 *   andreas@TheoSys.at                                                    *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation version 3 of the License.                *
 *                                                                         *
 *   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 General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

#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);
        kListView_Table->setSortColumn(0);

        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;

              QListViewItem *element = new QListViewItem(kListView_Table, QString(datum), QString(prz), QString(rate), QString(rv), QString(ber));
              kListView_Table->insertItem(element);
           }

           zaf.close();
        }
}

ziaendWidget::~ziaendWidget()
{}

/*$SPECIALIZATION$*/
void ziaendWidget::tbSelectSlot(QListViewItem *item)
{
long datum;
int day, mon, year;
QString str;
QDate dt;

        if (!item)
           return;

        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.FixRate = (!strcmp(item->text(3).ascii(), "N")) ? 0 : 1;
           Zi.Rate = (!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;
        }
        
        datum.sprintf ("%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->setCurrentItem(kListView_Table->lastItem());
        kListView_Table->insertItem(element);
}

void ziaendWidget::pbCancelSlot()
{
        done(QDialog::Rejected);
}

void ziaendWidget::cbRateSlot()
{}

void ziaendWidget::cbKalkRateSlot()
{}

void ziaendWidget::numRateSlot()
{}

void ziaendWidget::numZinssatzSlot()
{}

void ziaendWidget::dtDatumSlot()
{}



#include "ziaendwidget.moc"