summaryrefslogtreecommitdiffabout
path: root/korganizer/koviewmanager.h
blob: 2e6aaedd9c4ce7509d57e6673915dccb07066358 (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
/*
  This file is part of KOrganizer.
  Copyright (c) 2001
  Cornelius Schumacher <schumacher@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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, 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 KOVIEWMANAGER_H
#define KOVIEWMANAGER_H

#include <qobject.h>

#include <korganizer/baseview.h>

class CalendarView;

class KOListView;
class KOAgendaView;
class KOMonthView;
class KOTimeSpanView;
class KOTodoView;
class KOWhatsNextView;
class KOJournalView;

using namespace KCal;

/**
  This class manages the views of the calendar. It owns the objects and handles
  creation and selection.
*/
class KOViewManager : public QObject
{
    Q_OBJECT
  public:
    KOViewManager( CalendarView * );
    virtual ~KOViewManager();

    /** changes the view to be the currently selected view */
    void showView(KOrg::BaseView *, bool fullScreen = false );
    void updateWNview();
    void readSettings(KConfig *config);
    void writeSettings(KConfig *config);
    bool showsNextDays(); 
    /** Read which view was shown last from config file */
    void readCurrentView(KConfig *);
    /** Write which view is currently shown to config file */
    void writeCurrentView(KConfig *);

    KOrg::BaseView *currentView();

    void setDocumentId( const QString & );

    void updateView( const QDate &start, const QDate &end );
    void clearAllViews();

    void raiseCurrentView( bool fullScreen = false , bool updateView = false);

    void addView(KOrg::BaseView *);

    Incidence *currentSelection();
    QDate currentSelectionDate();

    KOAgendaView *agendaView() const { return mAgendaView; }
    KOJournalView *journalView() const { return mJournalView; }

 signals:
    void printWNV();
    void signalFullScreen( bool );
    void signalAgendaView( bool );
  public slots: 
    void setDefaultCalendar(int);
    void slotprintWNV();
    void showNextView();
    void showMonth( const QDate & );
    void showDateView( int, QDate );
    void updateView();
    void showWhatsNextView();
    void showListView();
    void showAgendaView( bool fullScreen = false );
    void showDayView();
    void showWorkWeekView();
    void showWeekView();
    void showNextXView();
    void showMonthView();
    void showMonthViewWeek();
    void showTodoView();
    void showJournalView();
    void showTimeSpanView();

  private:
    void resetDateSilent( QDate date , int days );
    int flagResetViewChangeDate;
    QDate currentViewChangeDate;
    void createMonthView();
    CalendarView *mMainView;

    int             mCurrentAgendaView;
    KOAgendaView    *mAgendaView;
    KOListView      *mListView;
    KOMonthView     *mMonthView; 
    KOTodoView      *mTodoView;
    KOWhatsNextView *mWhatsNextView;
    KOJournalView   *mJournalView;
    KOTimeSpanView  *mTimeSpanView;
  
    KOrg::BaseView     *mCurrentView;  // currently active event view
    
    int mAgendaViewMode;
    bool mFlagShowNextxDays;
  
};

#endif