Generate & delete month/year OK

This commit is contained in:
2010-06-24 21:02:42 +02:00
parent 271b3ef1e7
commit e72e36f27d
6 changed files with 133 additions and 11 deletions

View File

@@ -854,37 +854,52 @@ void AccountPanel::OnTreeChange(wxTreeEvent& event)
inModification = false;
}
void AccountPanel::OnMenuGenerate(wxCommandEvent& event)
void AccountPanel::GetTreeSelection(int* month, int* year)
{
wxString monthString;
int month, year, i;
int i;
month = year = -1;
*month = -1; *year = -1;
monthString = _tree.GetItemText(_tree.GetSelection());
for (i=0; i<12; i++)
if (monthString == months[i])
{
month = i;
*month = i;
break;
}
if (month == -1)
if (*month == -1)
{
year = wxAtoi(monthString);
*year = wxAtoi(monthString);
// Error
if (year == 0)
{
*month = -1;
*year = -1;
return;
}
}
else
{
year = wxAtoi(_tree.GetItemText(_tree.GetItemParent(_tree.GetSelection())));
*year = wxAtoi(_tree.GetItemText(_tree.GetItemParent(_tree.GetSelection())));
// Error
if (year == 0)
{
*month = -1;
*year = -1;
return;
}
}
}
void AccountPanel::OnMenuGenerate(wxCommandEvent& event)
{
int month, year;
GetTreeSelection(&month, &year);
GenerateDialog g(_kiss, _wxUI, month, year);
g.ShowModal();
@@ -892,7 +907,49 @@ void AccountPanel::OnMenuGenerate(wxCommandEvent& event)
void AccountPanel::OnMenuDelete(wxCommandEvent& event)
{
int month, year;
wxString message;
wxTreeItemId curNode, node ;
std::map<int, std::vector<int> > ops ;
GetTreeSelection(&month, &year);
message = _("Are you sure want to delete ");
if (month != -1)
message += months[month] + _(" ");
message += wxString::Format(_("%d"), year);
message += _(" operations ?");
wxMessageDialog dialog(_wxUI, message, _("KissCount"), wxYES_NO);
if (dialog.ShowModal() == wxID_NO)
return;
curNode = _tree.GetSelection();
ops = _kiss->GetAllOperations();
if (ops[year].size() == 1 && month != -1)
curNode = _tree.GetItemParent(curNode);
_kiss->DeleteOperations(month, year);
node = _tree.GetNextSibling(curNode);
if (!node.IsOk())
node = _tree.GetPrevSibling(curNode);
_tree.Delete(curNode);
if (!node.IsOk())
ChangeUser();
else
{
_tree.SelectItem(node);
GetTreeSelection(&month, &year);
if (month == -1)
month = ops[year][0];
ShowMonth(month, year);
}
}
void AccountPanel::GenerateMonth(int month, int year)
@@ -936,7 +993,13 @@ void AccountPanel::GenerateMonth(int month, int year)
}
if (!years.IsOk())
years = _tree.PrependItem(root, yearString);
{
years = _tree.GetFirstChild(root, cookie);
if (wxAtoi(_tree.GetItemText(years)) > year)
years = _tree.PrependItem(root, yearString);
else
years = _tree.AppendItem(root, yearString);
}
if (!_tree.GetChildrenCount(years, true))
node = _tree.AppendItem(years, monthString);

View File

@@ -65,6 +65,7 @@ private:
void InitAccountsGrid(User* user, int month, int year);
void UpdateStats();
void InsertOperation(User* user, operation* op, int line, bool fix);
void GetTreeSelection(int* month, int* year);
DECLARE_EVENT_TABLE();
};