diff --git a/src/model/User.cpp b/src/model/User.cpp
index ae95dec..12cd34a 100644
--- a/src/model/User.cpp
+++ b/src/model/User.cpp
@@ -97,7 +97,7 @@ int User::GetCategoryId(const QString& catName)
const QFont User::GetCategoryFont(int catId)
{
- QFont f;
+ DEFAULT_FONT(f);
Category cat;
for (unsigned int i=0; i<_categories.size(); i++)
diff --git a/src/view/AccountPanel.cpp b/src/view/AccountPanel.cpp
index 8d4ac58..3344342 100644
--- a/src/view/AccountPanel.cpp
+++ b/src/view/AccountPanel.cpp
@@ -17,9 +17,6 @@
along with KissCount. If not, see .
*/
-// #include "grid/wxGridCellBitmapRenderer.hpp"
-// #include "GenerateDialog.hpp"
-
#include
#include
#include
@@ -45,11 +42,10 @@ AccountPanel::AccountPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, pare
User* user = _kiss->GetUser();
std::vector::iterator accountIt;
std::vector::iterator categoryIt;
- DEFAULT_FONT(font);
int nbCategories;
setLayout(hbox);
-
+
_tree = new QTreeWidget(this);
_tree->headerItem()->setHidden(true);
_tree->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
@@ -65,7 +61,6 @@ AccountPanel::AccountPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, pare
_calendar->setFirstDayOfWeek(Qt::Monday);
_calendar->setNavigationBarVisible(false);
_calendar->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);
-
_calendar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
_accounts = new QString[user->GetAccountsNumber()];
@@ -215,7 +210,7 @@ void AccountPanel::InitStatsGrid(User* user)
{
int i;
int nb_categories = user->GetCategoriesNumber();
- QFont font;
+ DEFAULT_FONT(font);
if (!_statsGrid->rowCount())
{
@@ -228,11 +223,8 @@ void AccountPanel::InitStatsGrid(User* user)
}
_statsGrid->setRowCount(nb_categories+CATS_STATS+1); // Headers + blank + categories + non fix
- // _statsGrid->SetDefaultCellFont(font);
-
_statsGrid->setItem(TOTAL_CREDIT, 0, new QTableWidgetItem(_("Total Credit")));
_statsGrid->setItem(TOTAL_DEBIT, 0, new QTableWidgetItem(_("Total Debit")));
- font = _statsGrid->item(TOTAL_DEBIT, 0)->font();
for(i=0; i operations;
// _fixCosts = 0;
User* user = _kiss->GetUser();
- // DEFAULT_FONT(font);
// std::vector::iterator categoryIt;
std::map >::iterator monthIt;
QDate curDate = QDate::currentDate();
@@ -445,7 +436,9 @@ void AccountPanel::InitAccountsGrid(User* user, int month, int year)
int i, a;
QTableWidgetItem* item;
QString v;
- QFont font;
+ DEFAULT_FONT(font);
+
+ font.setBold(true);
if (_accountsGrid->rowCount())
_accountsGrid->clear();
@@ -458,8 +451,7 @@ void AccountPanel::InitAccountsGrid(User* user, int month, int year)
for(i=0; ihorizontalHeaderItem(i)->font();
- font.setBold(true);
+ _accountsGrid->horizontalHeaderItem(i)->font();
_accountsGrid->horizontalHeaderItem(i)->setFont(font);
}
@@ -487,11 +479,7 @@ void AccountPanel::InitAccountsGrid(User* user, int month, int year)
if (a != ACCOUNT_INIT)
item->setFlags(item->flags() & ~Qt::ItemIsEditable);
if (a == ACCOUNT_CUR)
- {
- font = item->font();
- font.setBold(true);
item->setFont(font);
- }
}
_accountsInitValues[it->id] = value;
_accountsGrid->item(curLine, ACCOUNT_INIT)->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
diff --git a/src/view/grid/DateDelegate.cpp b/src/view/grid/DateDelegate.cpp
index aa6222d..4f3469f 100644
--- a/src/view/grid/DateDelegate.cpp
+++ b/src/view/grid/DateDelegate.cpp
@@ -38,7 +38,7 @@ void DateDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
QComboBox *combo = qobject_cast(editor);
QString s ;
- s = s.sprintf("%02d/%02d/%04d", combo->currentIndex()+1, _month+1, _year);
+ s = s.sprintf("%02d/%02d/%04d", combo->currentIndex()+1, _month, _year);
model->setData(index, qVariantFromValue(s));
}
diff --git a/src/view/grid/GridAccount.cpp b/src/view/grid/GridAccount.cpp
index 66b0e17..67d2b45 100644
--- a/src/view/grid/GridAccount.cpp
+++ b/src/view/grid/GridAccount.cpp
@@ -53,8 +53,7 @@ GridAccount::GridAccount(KissCount* kiss, QWidget *parent,
_curMonth(0), _curYear(0), _treeSignalMapper(this), _checkSignalMapper(this),
_deleteSignalMapper(this), _inModification(false)
{
- //DEFAULT_FONT(font);
- QFont font;
+ DEFAULT_FONT(font);
int i;
User* user = _kiss->GetUser();
std::vector::iterator accountIt;
@@ -69,16 +68,15 @@ GridAccount::GridAccount(KissCount* kiss, QWidget *parent,
setShowGrid(false);
setColumnWidth (DESCRIPTION, columnWidth(DESCRIPTION)*3);
- //SetDefaultCellFont(font);
+ setFont(font);
+ font.setBold(true);
QString colsName[] = {"", _("Description"), _("Date"), _("Debit"), _("Credit"), _("Category"), _("Account"), "", ""};
for(i=0; isetText(colsName[i]);
item->setBackground(view::OWN_CYAN);
- font = item->font();
- font.setBold(true);
item->setFont(font);
SET_READ_ONLY(item);
item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
@@ -312,7 +310,7 @@ void GridAccount::InsertOperation(User* user, Operation& op, int line, bool fix,
QColor color;
QDate curDate = QDate::currentDate();
QString description, v;
- QFont font;
+ DEFAULT_FONT(font);
Category cat ;
Operation op2;
QTableWidgetItem* item;
@@ -473,6 +471,9 @@ void GridAccount::InsertIntoGrid(Operation& op)
User* user = _kiss->GetUser();
Operation parent;
+ if (op.parent)
+ parent = GetOperation(op.parent);
+
// No previous fix operations
if (op.fix_cost && !_displayedOperations[1].id)
i = 1;
@@ -503,7 +504,6 @@ void GridAccount::InsertIntoGrid(Operation& op)
if (op.parent)
{
- parent = GetOperation(op.parent);
if ((i-start) > (int)(parent.childs.size()))
i = start + parent.childs.size();
if (parent.day >= op.day)
@@ -783,37 +783,48 @@ void GridAccount::OnDeleteClicked(int id)
_kiss->DeleteOperation(*it);
_displayedOperations.erase(_displayedOperations.begin()+row);
- if (op.parent && op_tmp.childs.size() < 2)
+ if (op.parent)
{
- if (op.childs.size() == 1)
+ if (op_tmp.childs.size() < 2)
{
- op_tmp2 = GetOperation(op_tmp.childs[0]);
- op_tmp2.parent = 0;
- UpdateOperation(op_tmp2);
- row = GetDisplayedRow(op_tmp2.id);
- _displayedOperations[row] = op_tmp2;
- }
- row = GetDisplayedRow(op.parent);
- removeRow(row);
- DeleteOperation(op_tmp);
- if (_databaseSynchronization)
- _kiss->DeleteOperation(op_tmp);
- _displayedOperations.erase(_displayedOperations.begin()+row);
- if (op.fix_cost)
- _fixCosts--;
- setItem(row, DESCRIPTION, new QTableWidgetItem(op.description)); // Remove tabulation
- color = user->GetCategory(op.category).backcolor;
+ if (op_tmp.childs.size() == 1)
+ {
+ op_tmp2 = GetOperation(op_tmp.childs[0]);
+ op_tmp2.parent = 0;
+ UpdateOperation(op_tmp2);
+ row = GetDisplayedRow(op_tmp2.id);
+ _displayedOperations[row] = op_tmp2;
+ }
- if (op.checked)
+ row = GetDisplayedRow(op.parent);
+ removeRow(row);
+ DeleteOperation(op_tmp);
+ if (_databaseSynchronization)
+ _kiss->DeleteOperation(op_tmp);
+ _displayedOperations.erase(_displayedOperations.begin()+row);
+ if (op.fix_cost)
+ _fixCosts--;
+ setItem(row, DESCRIPTION, new QTableWidgetItem(op.description)); // Remove tabulation
+ color = user->GetCategory(op.category).backcolor;
+
+ if (op.checked)
+ {
+ r = ((color.red()*1.5) >= 0xFF) ? 0xFF : color.red()*1.5 ;
+ g = ((color.green()*1.5) >= 0xFF) ? 0xFF : color.green()*1.5 ;
+ b = ((color.blue()*1.5) >= 0xFF) ? 0xFF : color.blue()*1.5 ;
+ color.setRgb(r, g, b);
+ }
+
+ SET_ROW_COLOR(row, color, user->GetCategory(op.category).forecolor);
+ SET_ROW_FONT(row, user->GetCategoryFont(op.category));
+ }
+ else
{
- r = ((color.red()*1.5) >= 0xFF) ? 0xFF : color.red()*1.5 ;
- g = ((color.green()*1.5) >= 0xFF) ? 0xFF : color.green()*1.5 ;
- b = ((color.blue()*1.5) >= 0xFF) ? 0xFF : color.blue()*1.5 ;
- color.setRgb(r, g, b);
+ UpdateMeta(op_tmp);
+ row = GetDisplayedRow(op_tmp.id);
+ RemoveMeta(op_tmp, row, true, false);
+ InsertIntoGrid(op_tmp);
}
-
- SET_ROW_COLOR(row, color, user->GetCategory(op.category).forecolor);
- SET_ROW_FONT(row, user->GetCategoryFont(op.category));
}
if (op.fix_cost)
_fixCosts--;
@@ -839,6 +850,7 @@ void GridAccount::OnOperationModified(int row, int col)
double amount;
QFont font;
Category cat ;
+ bool fix_cost;
// Avoid recursives calls
if (_inModification || _loadOperations) return;
@@ -855,7 +867,7 @@ void GridAccount::OnOperationModified(int row, int col)
value = item(row, DESCRIPTION)->text();
if (value.length())
{
- new_op.description = value;
+ new_op.description = value.trimmed();
op_complete--;
}
@@ -910,7 +922,6 @@ void GridAccount::OnOperationModified(int row, int col)
new_op.amount *= -1.0;
setItem(row, DEBIT, new QTableWidgetItem(value.sprintf("%.2lf", new_op.amount)));
}
- if (new_op.amount != 0.0) new_op.amount *= -1.0;
op_complete--;
new_op.formula = _displayedOperations[row].formula;
}
@@ -937,7 +948,7 @@ void GridAccount::OnOperationModified(int row, int col)
color = user->GetCategory(new_op.category).backcolor;
- if (col == CATEGORY && new_op.checked)
+ if (new_op.checked)
{
r = ((color.red()*1.5) >= 0xFF) ? 0xFF : color.red()*1.5 ;
g = ((color.green()*1.5) >= 0xFF) ? 0xFF : color.green()*1.5 ;
@@ -948,11 +959,15 @@ void GridAccount::OnOperationModified(int row, int col)
SET_ROW_COLOR(row, color, user->GetCategory(new_op.category).forecolor);
SET_ROW_FONT(row, user->GetCategoryFont(new_op.category));
- // Modify a fix operation
- if (row < _fixCosts || !_canAddOperation)
+ fix_cost = (row <= _fixCosts);
+
+ // Modify an operation
+ if (!_canAddOperation || (row < _fixCosts ||
+ (row > _fixCosts &&
+ row < (int)(_displayedOperations.size()-1))))
{
new_op.id = cur_op.id;
- new_op.fix_cost = true;
+ new_op.fix_cost = fix_cost;
new_op.transfert = cur_op.transfert;
new_op.meta = cur_op.meta;
new_op.parent = cur_op.parent;
@@ -965,62 +980,13 @@ void GridAccount::OnOperationModified(int row, int col)
removeRow(row);
DeleteOperation(cur_op);
_displayedOperations.erase(_displayedOperations.begin()+row);
- _fixCosts--;
+ if (fix_cost)
+ _fixCosts--;
}
else
- {
- UpdateOperation(new_op);
(_displayedOperations)[row] = new_op;
- }
- }
- // Add a fixCost
- else if (row == _fixCosts)
- {
- if (op_complete) {
- _inModification = false ;
- return ;
- }
- need_insertion = true;
- new_op.fix_cost = true;
- new_op.meta = false;
- new_op._virtual = false;
- for(i=0; iAddOperation(new_op);
- }
- // Modify an operation
- else if (row < (int)(_displayedOperations.size()-1))
- {
- new_op.id = cur_op.id;
- new_op.fix_cost = false;
- new_op.transfert = cur_op.transfert;
- new_op.meta = cur_op.meta;
- new_op.parent = cur_op.parent;
- new_op.childs = cur_op.childs;
- new_op._virtual = cur_op._virtual;
-
- if (cur_op.day != new_op.day)
- {
- need_insertion = true;
- removeRow(row);
- DeleteOperation(cur_op);
- _displayedOperations.erase(_displayedOperations.begin()+row);
- }
- else
- {
- UpdateOperation(new_op);
- (_displayedOperations)[row] = new_op;
- }
+ UpdateOperation(new_op);
}
// Add an operation
else
@@ -1030,38 +996,59 @@ void GridAccount::OnOperationModified(int row, int col)
return ;
}
need_insertion = true;
- new_op.fix_cost = false;
+ new_op.fix_cost = fix_cost;
new_op.meta = false;
new_op._virtual = false;
+ new_op.parent = 0;
for(i=0; iAddOperation(new_op);
}
- if (user->GetAccount(new_op.account).blocked && new_op.amount < 0)
+ if (!new_op.meta && user->GetAccount(new_op.account).blocked && new_op.amount < 0)
QMessageBox::warning(0, _("Warning"), _("You made a debit on a blocked account"));
if (need_insertion)
- {
- InsertIntoGrid(new_op);
- UpdateOperation(new_op);
- }
+ InsertIntoGrid(new_op);
if (new_op.parent)
{
row = GetDisplayedRow(new_op.parent);
+ last_day = new_op.day;
new_op = _displayedOperations[row];
+ it = std::find(new_op.childs.begin(), new_op.childs.end(), cur_op.id);
+ new_op.childs.erase(it);
+
+ i = 0;
+ for(it = new_op.childs.begin(); it != new_op.childs.end(); it++)
+ {
+ op2 = GetOperation(*it);
+ if (op2.day > last_day) break;
+ i++;
+ }
+
+ new_op.childs.insert(new_op.childs.begin()+i, cur_op.id);
+
last_day = new_op.day;
UpdateMeta(new_op);
@@ -1075,7 +1062,7 @@ void GridAccount::OnOperationModified(int row, int col)
else
color = view::OWN_GREEN;
- QCheckBox* checkBox = qobject_cast (_checkSignalMapper.mapping(op.parent));
+ QCheckBox* checkBox = qobject_cast (_checkSignalMapper.mapping(new_op.id));
if (new_op.checked)
{
r = ((color.red()*1.5) >= 0xFF) ? 0xFF : color.red()*1.5 ;
@@ -1087,15 +1074,6 @@ void GridAccount::OnOperationModified(int row, int col)
else
checkBox->setCheckState(Qt::Unchecked);
-
- SET_ROW_COLOR(row, color, cat.forecolor);
-
- if (new_op.category && cat.font.length())
- {
- font = user->GetCategoryFont(cat.id);
- SET_ROW_FONT(row, font);
- }
-
setItem(row, OP_DATE, new QTableWidgetItem(v.sprintf("%02d/%02d/%d", new_op.day+1, _curMonth+1, _curYear)));
if (!_displayedOperations[row].amount)
@@ -1119,6 +1097,17 @@ void GridAccount::OnOperationModified(int row, int col)
}
}
+ this->item(row, OP_DATE)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
+ this->item(row, DEBIT)->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
+ this->item(row, CREDIT)->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
+
+ SET_ROW_COLOR(row, color, cat.forecolor);
+
+ if (new_op.category && cat.font.length())
+ {
+ SET_ROW_FONT(row, user->GetCategoryFont(cat.id));
+ }
+
// Move updated meta
if ((int)new_op.day != last_day)
{
@@ -1156,6 +1145,11 @@ void GridAccount::UpdateMeta(Operation& meta)
meta.checked = true;
meta.amount = 0;
+ op = GetOperation(meta.childs[0]);
+ meta.year = op.year;
+ meta.month = op.month;
+ meta.day = op.day;
+
for(it=meta.childs.begin(); it!=meta.childs.end(); it++)
{
op = GetOperation(*it);
diff --git a/src/view/wxUI.hpp b/src/view/wxUI.hpp
index 0ba9a7d..41c9e2e 100644
--- a/src/view/wxUI.hpp
+++ b/src/view/wxUI.hpp
@@ -32,6 +32,8 @@ class ImportEngine;
#include
+#include "view.hpp"
+
#include
#include
@@ -101,7 +103,11 @@ public:
_kiss(kiss),
_wxUI(parent),
_KissButton(0)
- {hide();}
+ {
+ DEFAULT_FONT(font);
+ hide();
+ setFont(font);
+ }
virtual void OnShow()=0;
virtual KissPanel* CreatePanel()=0;