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
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
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
00122 year = dp->getYear();
00123 month = dp->getMonth();
00124 day = dp->getDay();
00125
00126
00127
00128
00129 dateedited = TRUE;
00130
00131
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
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 }