Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

newtransaction.cpp

Go to the documentation of this file.
00001 #include "newtransaction.h"
00002 #include "calculator.h"
00003 #include "datepicker.h"
00004 #include "budget.h"
00005 
00006 #include <qmultilineedit.h>
00007 
00008 extern Budget *budget;
00009 extern Preferences *preferences;
00010 
00011 NewTransaction::NewTransaction ( QWidget* parent ) : QDialog ( parent, 0, TRUE )
00012   {
00013     transactiondescription = "";
00014     currentlineitem = -1;
00015     currentbudget = -1;
00016     dateedited = FALSE;
00017     setCaption( tr( "Transaction" ) );
00018 
00019     // START FIRST COLUMN
00020 
00021     namelabel = new QLabel ( "Transaction", this );
00022 
00023     transactionnamebox = new QHBox ( this );
00024     transactionname = new QComboBox ( transactionnamebox );
00025     transactionname->setEditable ( TRUE );
00026     descriptionbutton = new QPushButton ( transactionnamebox );
00027     descriptionbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/info.png" ) );
00028     connect ( descriptionbutton, SIGNAL ( released() ), this, SLOT ( addTransactionDescription() ) );
00029 
00030     amountlabel = new QLabel ( "Amount", this );
00031 
00032     transactionamountbox = new QHBox ( this );
00033     transactionamount = new QLineEdit ( transactionamountbox );
00034     transactionamount->setAlignment ( Qt::AlignRight );
00035     transactionamount->setText ( "0.00" );
00036     calculatorbutton = new QPushButton( transactionamountbox );
00037     calculatorbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) );
00038     connect ( calculatorbutton, SIGNAL ( released() ), this, SLOT ( showCalculator() ) );
00039 
00040     datelabel = new QLabel ( "Date", this );
00041 
00042     transactiondatebox = new QHBox ( this );
00043     transactiondate = new QLineEdit ( transactiondatebox );
00044     transactiondate->setAlignment ( Qt::AlignRight );
00045     transactiondate->setDisabled ( TRUE );
00046     datebutton = new QPushButton( transactiondatebox );
00047     datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) );
00048     connect ( datebutton, SIGNAL ( released() ), this, SLOT ( showCalendar() ) );
00049 
00050     clearedcheckbox = new QCheckBox ( "Cleared", this );
00051     depositbox = new QCheckBox ( "Credit", this );
00052 
00053     // START SECOND COLUMN
00054 
00055     numberlabel = new QLabel ( "Number", this );
00056     transactionnumber = new QLineEdit ( this );
00057 
00058     budgetlabel = new QLabel ( "Budget", this );
00059     budgetbox = new QComboBox ( FALSE, this );
00060 
00061     lineitemlabel = new QLabel ( "LineItem", this );
00062     lineitembox = new QComboBox ( FALSE, this );
00063 
00064     layout = new QGridLayout ( this, 7, 2, 2, 2 );
00065     layout->addWidget ( namelabel, 0, 0, Qt::AlignLeft );
00066     layout->addWidget ( transactionnamebox, 1, 0, Qt::AlignLeft );
00067     layout->addWidget ( amountlabel, 2, 0, Qt::AlignLeft );
00068     layout->addWidget ( transactionamountbox, 3, 0, Qt::AlignLeft );
00069     layout->addWidget ( datelabel, 4, 0, Qt::AlignLeft );
00070     layout->addWidget ( transactiondatebox, 5, 0, Qt::AlignLeft );
00071     layout->addWidget ( clearedcheckbox, 6, 0, Qt::AlignLeft );
00072     layout->addWidget ( numberlabel, 0, 1, Qt::AlignLeft );
00073     layout->addWidget ( transactionnumber, 1, 1, Qt::AlignLeft );
00074     layout->addWidget ( budgetlabel, 2, 1, Qt::AlignLeft );
00075     layout->addWidget ( budgetbox, 3, 1, Qt::AlignLeft );
00076     layout->addWidget ( lineitemlabel, 4, 1, Qt::AlignLeft );
00077     layout->addWidget ( lineitembox, 5, 1, Qt::AlignLeft );
00078     layout->addWidget ( depositbox, 6, 1, Qt::AlignLeft );
00079 
00080     if ( budget->getNumberOfBudgets() != 0 )
00081       {
00082         budgetnameslist = budget->getBudgetNames();
00083         budgetidslist = budget->getBudgetIDs();
00084         budgetbox->insertStringList ( *budgetnameslist );
00085         lineitemlabel->setEnabled ( FALSE );
00086         lineitembox->setEnabled ( FALSE );
00087         connect ( budgetbox, SIGNAL ( activated(int) ), this, SLOT ( setCurrentBudget(int) ) );
00088         connect ( lineitembox, SIGNAL ( activated(int) ), this, SLOT ( setCurrentLineItem(int) ) );
00089       }
00090     else
00091       {
00092         budgetlabel->setEnabled ( FALSE );
00093         budgetbox->setEnabled ( FALSE );
00094         lineitemlabel->setEnabled ( FALSE );
00095         lineitembox->setEnabled ( FALSE );
00096       }
00097 
00098 }
00099 
00100 NewTransaction::~NewTransaction ()
00101   {
00102   }
00103 
00104 void NewTransaction::showCalculator ()
00105 {
00106     Calculator *calculator = new Calculator ( this );
00107     calculator->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) );
00108     if ( calculator->exec () == QDialog::Accepted )
00109       transactionamount->setText ( calculator->display->text() );
00110 }
00111 
00112 void NewTransaction::showCalendar ()
00113   {
00114     QDate newDate = QDate::currentDate ();
00115     DatePicker *dp = new DatePicker ( newDate );
00116     dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) );
00117 
00118     int response = dp->exec();
00119     if ( response == QDialog::Accepted )
00120       {
00121         // Set date integers
00122         year = dp->getYear();
00123         month = dp->getMonth();
00124         day = dp->getDay();
00125 
00126         // Set dateedited to TRUE
00127         // This tells the transactiondisplay object that the user edited an transaction
00128         // and did change the date3
00129         dateedited = TRUE;
00130 
00131         // Display date with our selected format
00132         transactiondate->setText ( preferences->getDate ( year, month, day ) );
00133       }
00134   }
00135 
00136 bool NewTransaction::getDateEdited ()
00137   {
00138     return dateedited;
00139   }
00140 
00141 int NewTransaction::getDay ()
00142   {
00143     return day;
00144   }
00145 
00146 int NewTransaction::getMonth ()
00147   {
00148     return month;
00149   }
00150 
00151 int NewTransaction::getYear ()
00152   {
00153     return year;
00154   }
00155 
00156 QString NewTransaction::getDescription ()
00157   {
00158     return transactiondescription;
00159   }
00160 
00161 void NewTransaction::setDescription ( QString description )
00162   {
00163     transactiondescription = description;
00164   }
00165 
00166 void NewTransaction::addTransactionDescription ()
00167   {
00168     // Function for adding or editing an transaction description.
00169     QDialog *description = new QDialog ( this, "description", TRUE );
00170     description->setCaption ( "Notes" );
00171     QMultiLineEdit *enter = new QMultiLineEdit ( description );
00172     enter->setFixedSize ( ( int ) (this->width() * 0.75 ), ( int ) ( this->height() * 0.5 ) );
00173     enter->setWrapColumnOrWidth ( ( int ) (this->width() * 0.75 ) );
00174     enter->setWordWrap ( QMultiLineEdit::WidgetWidth );
00175     if ( transactiondescription != "(NULL)" )
00176       enter->setText ( transactiondescription );
00177     if ( description->exec () == QDialog::Accepted )
00178       transactiondescription = enter->text ();
00179   }
00180 
00181 int NewTransaction::getNameIndex ( QString name )
00182   {
00183     int counter;
00184     int items = transactionname->count();
00185     for ( counter = 0; ( items - 1 ); counter++ )
00186       {
00187         if ( name == transactionname->text ( counter ) )
00188           {
00189             return counter;
00190             break;
00191           }
00192       }
00193     return 0;
00194   }
00195 
00196 void NewTransaction::setCurrentBudget ( int index )
00197   {
00198     if ( index != 0 )
00199       {
00200         currentbudget = budgetidslist->operator[] ( index - 1 ).toInt();
00201         lineitemslist = budget->getLineItems ( currentbudget );
00202         lineitemidslist = budget->getLineItemIDs ( currentbudget );
00203         lineitemlabel->setEnabled ( TRUE );
00204         lineitembox->setEnabled ( TRUE );
00205         lineitembox->clear();
00206         lineitembox->insertStringList ( lineitemslist );
00207         setCurrentLineItem ( 0 );
00208       }
00209     else
00210       {
00211         lineitembox->clear();
00212         lineitemlabel->setEnabled ( FALSE );
00213         lineitembox->setEnabled ( FALSE );
00214         currentlineitem = -1;
00215         currentbudget = -1;
00216       }
00217   }
00218 
00219 void NewTransaction::setCurrentLineItem ( int index )
00220   {
00221     currentlineitem = ( lineitemidslist.operator[] ( index ).toInt() );
00222   }
00223 
00224 int NewTransaction::getCurrentBudget ()
00225   {
00226     return currentbudget;
00227   }
00228 
00229 int NewTransaction::getBudgetIndex ( int budgetid )
00230   {
00231     currentbudget = budgetid;
00232     const QString budget = QString::number ( budgetid );
00233     return budgetidslist->findIndex ( budget );
00234   }
00235 
00236 int NewTransaction::getLineItemIndex ( int lineitemid )
00237   {
00238     currentlineitem = lineitemid;
00239     const QString lineitem = QString::number ( lineitemid );
00240     return lineitemidslist.findIndex ( lineitem );
00241   }
00242 
00243 void NewTransaction::setLineItems ()
00244   {
00245     lineitemslist = budget->getLineItems ( currentbudget );
00246     lineitemidslist = budget->getLineItemIDs ( currentbudget );
00247     lineitemlabel->setEnabled ( TRUE );
00248     lineitembox->setEnabled ( TRUE );
00249     lineitembox->clear();
00250     lineitembox->insertStringList ( lineitemslist );
00251   }
00252 
00253 int NewTransaction::getCurrentLineItem ()
00254   {
00255     return currentlineitem;
00256   }
00257 
00258 void NewTransaction::setComboBoxes ( int budgetid, int lineitemid )
00259   {
00260     const QString budgetname = QString::number ( budgetid );
00261     budgetbox->setCurrentItem ( ( budgetidslist->findIndex ( budgetname ) ) );
00262     currentbudget = budgetidslist->operator[] ( budgetbox->currentItem() - 1 ).toInt();
00263 
00264     lineitemslist = budget->getLineItems ( currentbudget );
00265     lineitemidslist = budget->getLineItemIDs ( currentbudget );
00266     lineitemlabel->setEnabled ( TRUE );
00267     lineitembox->setEnabled ( TRUE );
00268     lineitembox->clear();
00269     lineitembox->insertStringList ( lineitemslist );
00270 
00271     const QString lineitem = QString::number ( lineitemid );
00272     lineitembox->setCurrentItem ( lineitemidslist.findIndex ( lineitem ) );
00273     currentlineitem = ( lineitemidslist.operator[] ( lineitembox->currentItem() ).toInt() );
00274   }

Generated on Sat Nov 5 16:18:11 2005 for OPIE by  doxygen 1.4.2