summaryrefslogtreecommitdiffstats
path: root/konsolekalendar/konsolekalendar.h
blob: f41ed4ccb2599ee35e0d260fff76a8415d887fc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*******************************************************************************
 * konsolekalendar.h                                                           *
 *                                                                             *
 * KonsoleKalendar is a command line interface to KDE calendars                *
 * Copyright (C) 2002-2004  Tuukka Pasanen <illuusio@mailcity.com>             *
 * Copyright (C) 2003-2005  Allen Winter <winter@kde.org>                      *
 *                                                                             *
 * 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. *
 *                                                                             *
 * As a special exception, permission is given to link this program            *
 * with any edition of Qt, and distribute the resulting executable,            *
 * without including the source code for Qt in the source distribution.        *
 *                                                                             *
 ******************************************************************************/

#ifndef _KONSOLEKALENDAR_H
#define _KONSOLEKALENDAR_H

#include <qdatetime.h>

#include <kapplication.h>

#include <libkcal/calendarlocal.h>
#include <libkcal/resourcecalendar.h>
#include <libkcal/event.h>

#include "konsolekalendarvariables.h"

/**
 * @file konsolekalendar.h
 * Provides the KonsoleKalendar class definition.
 */

namespace KCal
{
/**
 * The base class of the project.
 * @author Tuukka Pasanen
 */
  class KonsoleKalendar
  {
  public:
    /**
     * Constructs a KonsoleKalendar object from command line arguments.
     */
    KonsoleKalendar( KonsoleKalendarVariables *variables );
    /**
     * Destructor
     */
    ~KonsoleKalendar();

    /**
     * Visualize what we need.
     */
    bool showInstance();

    /**
     * Imports calendar file
     */
    bool importCalendar();

    /**
     * Add event to calendar
     */
    bool addEvent();

    /**
     * Change event
     */
    bool changeEvent();

    /**
     * Delete event
     */
    bool deleteEvent();

    /**
     * Detect if event already exists
     *
     * @param  startdate Starting date
     * @param  enddate   Ending date
     * @param  summary   Which summary event should have have
     */
    bool isEvent( QDateTime startdate, QDateTime enddate, QString summary );

    /**
     * Creates calendar file (If it doesn't exists)
     */
    bool createCalendar();

  private:

    /**
     * Print event specs for dryrun and verbose options
     */
    void printSpecs();

    /**
     * Prints event list in many formats
     *
     * @param eventlist which event we should print
     * @param dt is the date to use when printing the event for recurring events
     */
    bool printEventList( QTextStream *ts, Event::List *eventList, QDate dt );

    /**
     * Prints a single event in many formats
     *
     * @param event which we should print
     * @param dt is the date to use when printing the event for recurring events
     */
    bool printEvent( QTextStream *ts, Event *event, QDate dt );

    /**
     * Variables that changes stuff in programm
     */
    KonsoleKalendarVariables *m_variables;

    /**
     * Calendar file itself
     */
    ResourceCalendar *m_Calendar;

    /**
     * This is usefull if we like to have same day events to same system
     */
    QDate m_saveDate;

  };

}
#endif