From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- karm/timekard.h | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 karm/timekard.h (limited to 'karm/timekard.h') diff --git a/karm/timekard.h b/karm/timekard.h new file mode 100644 index 00000000..f47129fd --- /dev/null +++ b/karm/timekard.h @@ -0,0 +1,129 @@ +/* + * This file only: + * Copyright (C) 2003 Mark Bucciarelli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA. + * + */ + +#ifndef KARM_TIMEKARD_H +#define KARM_TIMEKARD_H + +#undef Color // X11 headers +#undef GrayScale // X11 headers +#include +//#include + +#include "karmstorage.h" + +class QString; +class QDate; + +class TaskView; + + +/** + * Seven consecutive days. + * + * The timecard report prints out one table for each week of data. The first + * day of the week should be read from the KControlPanel. Currently, it is + * hardcoded to Sunday. + */ +class Week +{ + public: + /** Need an empty constructor to use in a QValueList. */ + Week(); + Week(QDate from); + QDate start() const; + QDate end() const; + QValueList days() const; + + /** + * Returns a list of weeks for the given date range. + * + * The first day of the week is picked up from the settings in the + * KontrolPanel. + * + * The list is inclusive; for example, if you pass in a date range of two + * days, one being a Sunday and the other being a Monday, you will get two + * weeks back in the list. + */ + static QValueList weeksFromDateRange(const QDate& from, + const QDate& to); + + /** + * Return the name of the week. + * + * Uses whatever the user has set up for the long date format in + * KControlPanel, prefixed by "Week of". + */ + QString name() const; + + + private: + QDate _start; +}; + +/** + * Routines to output timecard data. + */ +class TimeKard +{ + public: + TimeKard() {}; + + enum WhichTime { TotalTime, SessionTime }; + + /** + * Generates ascii text of task totals, for current task on down. + * + * Formatted for pasting into clipboard. + * + * @param taskview The view whose tasks need to be formatted. + * + * @param justThisTask Only useful when user has picked a root task. We + * use this parameter to distinguish between when a user just wants to + * print the task subtree for a root task and when they want to print + * all tasks. + */ + QString totalsAsText(TaskView* taskview, bool justThisTask, WhichTime which); + + /** + * Generates ascii text of weekly task history, for current task on down. + * + * Formatted for pasting into clipboard. + */ + QString historyAsText(TaskView* taskview, const QDate& from, + const QDate& to, bool justThisTask, bool perWeek, bool totalsOnly); + +private: + void printTask(Task *t, QString &s, int level, WhichTime which); + + void printTaskHistory(const Task *t, const QMap& datamap, + QMap& daytotals, + const QDate& from, const QDate& to, + const int level, QString& retval, bool totalsOnly); + + QString sectionHistoryAsText(TaskView* taskview, + const QDate& sectionFrom, const QDate& sectionTo, + const QDate& from, const QDate& to, + const QString& name, + bool justThisTask, bool totalsOnly); + + }; +#endif // KARM_TIMEKARD_H -- cgit v1.2.3