From b67b64ea00414bc021430fdbf2ed897cda4defe0 Mon Sep 17 00:00:00 2001 From: Federico Hernandez Date: Thu, 25 Jun 2009 03:03:08 +0200 Subject: [PATCH] task cal modifications --- src/report.cpp | 89 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 80 insertions(+), 9 deletions(-) diff --git a/src/report.cpp b/src/report.cpp index 643719ecf..d7172eb91 100644 --- a/src/report.cpp +++ b/src/report.cpp @@ -1530,30 +1530,101 @@ std::string handleReportCalendar () context.tdb.commit (); context.tdb.unlock (); + Date today; + bool getpendingdate = false; + int monthsToDisplay; + int mFrom; + int yFrom; + int mTo; + int yTo; + + // Determine what to do + int numberOfArgs = context.args.size(); + + if (numberOfArgs == 1 ) { + // task cal + printf("Case 1\n"); + monthsToDisplay = monthsPerLine; + mFrom = today.month(); + yFrom = today.year(); + } + else if (numberOfArgs == 2 ) { + if (context.args[1] == "y") { + // task cal y + printf("Case 2\n"); + monthsToDisplay = 12; + mFrom = today.month(); + yFrom = today.year(); + } + else if (context.args[1] == "due") { + // task cal due + printf("Case 3\n"); + monthsToDisplay = monthsPerLine; + getpendingdate = true; + } + else { + // task cal 2010 + printf("Case 5\n"); + monthsToDisplay = 12; + mFrom = 1; + yFrom = ::atoi( context.args[1].data()); + } + } + else if (numberOfArgs == 3 ) { + if (context.args[2] == "y") { + // task cal due y + printf("Case 4\n"); + monthsToDisplay = 12; + getpendingdate = true; + } + else { + // task cal 8 2010 + printf("Case 6\n"); + monthsToDisplay = monthsPerLine; + mFrom = ::atoi( context.args[1].data()); + yFrom = ::atoi( context.args[2].data()); + } + } + else if (numberOfArgs == 4 ) { + // task cal 8 2010 y + printf("Case 7\n"); + monthsToDisplay = 12; + mFrom = ::atoi( context.args[1].data()); + yFrom = ::atoi( context.args[2].data()); + } + // Find the oldest pending due date. Date oldest; - Date newest; + printf("Number of tasks %i\n",tasks.size()); foreach (task, tasks) { + printf("ID %i\n",task->id); if (task->getStatus () == Task::pending) { if (task->has ("due")) { Date d (::atoi (task->get ("due").c_str ())); - if (d < oldest) oldest = d; - if (d > newest) newest = d; } } } + if (getpendingdate == true) { + mFrom = oldest.month(); + yFrom = oldest.year(); + } - // Iterate from oldest due month, year to newest month, year. - Date today; - int mFrom = oldest.month (); - int yFrom = oldest.year (); + mTo = mFrom + monthsToDisplay - 1; + yTo = yFrom; + if (mTo > 12) { + mTo -=12; + yTo++; + } - int mTo = newest.month (); - int yTo = newest.year (); + printf("monthsToDisplay: %i\n",monthsToDisplay); + printf("mFrom: %i\n",mFrom); + printf("yFrom: %i\n",yFrom); + printf("mTo: %i\n",mTo); + printf("yTo: %i\n",yTo); std::stringstream out; out << std::endl;