• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

korganizer

  • sources
  • kde-4.14
  • kdepim
  • korganizer
kodialogmanager.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KOrganizer.
3 
4  Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5  Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License along
18  with this program; if not, write to the Free Software Foundation, Inc.,
19  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 
21  As a special exception, permission is given to link this program
22  with any edition of Qt, and distribute the resulting executable,
23  without including the source code for Qt in the source distribution.
24 */
25 
26 #include "kodialogmanager.h"
27 #include "calendarview.h"
28 #include "dialog/filtereditdialog.h"
29 #include "prefs/koprefs.h"
30 #include "dialog/searchdialog.h"
31 
32 #include <calendarsupport/archivedialog.h>
33 #include <calendarsupport/categoryconfig.h>
34 #include <calendarsupport/utils.h>
35 
36 #include <incidenceeditor-ng/categoryeditdialog.h>
37 #include <incidenceeditor-ng/incidencedialog.h>
38 #include <incidenceeditor-ng/incidencedialogfactory.h>
39 
40 #include <Akonadi/Item>
41 #include <Akonadi/TagManagementDialog>
42 
43 #include <KCalCore/Visitor>
44 
45 #include <KCMultiDialog>
46 
47 using namespace KOrg;
48 
49 // FIXME: Handle KOEventViewerDialogs in dialog manager.
50 
51 class KODialogManager::DialogManagerVisitor : public KCalCore::Visitor
52 {
53  public:
54  DialogManagerVisitor() : mDialogManager( 0 ) {}
55 
56  bool act( KCalCore::IncidenceBase::Ptr incidence, KODialogManager *manager )
57  {
58  mDialogManager = manager;
59  return incidence->accept( *this, incidence );
60  }
61 
62  protected:
63  KODialogManager *mDialogManager;
64 };
65 
66 KODialogManager::KODialogManager( CalendarView *mainView )
67  : QObject(), mMainView( mainView )
68 {
69  mOptionsDialog = 0;
70  mSearchDialog = 0;
71  mArchiveDialog = 0;
72  mFilterEditDialog = 0;
73  mCategoryEditDialog = 0;
74 }
75 
76 KODialogManager::~KODialogManager()
77 {
78  delete mOptionsDialog;
79  delete mSearchDialog;
80  delete mArchiveDialog;
81  delete mFilterEditDialog;
82  delete mCategoryEditDialog;
83 }
84 
85 void KODialogManager::showOptionsDialog()
86 {
87  if ( !mOptionsDialog ) {
88  mOptionsDialog = new KCMultiDialog( mMainView );
89  connect( mOptionsDialog, SIGNAL(configCommitted(QByteArray)),
90  mMainView, SLOT(updateConfig(QByteArray)) );
91  QStringList modules;
92 
93  modules.append( QLatin1String("korganizer_configmain.desktop") );
94  modules.append( QLatin1String("korganizer_configtime.desktop") );
95  modules.append( QLatin1String("korganizer_configviews.desktop") );
96  modules.append( QLatin1String("korganizer_configcolorsandfonts.desktop") );
97  modules.append( QLatin1String("korganizer_configgroupscheduling.desktop") );
98  modules.append( QLatin1String("korganizer_configfreebusy.desktop") );
99  modules.append( QLatin1String("korganizer_configplugins.desktop") );
100  modules.append( QLatin1String("korganizer_configdesignerfields.desktop") );
101 
102  // add them all
103  QStringList::iterator mit;
104  for ( mit = modules.begin(); mit != modules.end(); ++mit ) {
105  mOptionsDialog->addModule( *mit );
106  }
107  }
108 
109  mOptionsDialog->show();
110  mOptionsDialog->raise();
111 }
112 
113 void KODialogManager::showCategoryEditDialog()
114 {
115  createCategoryEditor();
116  mCategoryEditDialog->exec();
117 }
118 
119 void KODialogManager::showSearchDialog()
120 {
121  if ( !mSearchDialog ) {
122  mSearchDialog = new SearchDialog( mMainView );
123  //mSearchDialog->setCalendar( mMainView->calendar() );
124  connect( mSearchDialog, SIGNAL(showIncidenceSignal(Akonadi::Item)),
125  mMainView, SLOT(showIncidence(Akonadi::Item)) );
126  connect( mSearchDialog, SIGNAL(editIncidenceSignal(Akonadi::Item)),
127  mMainView, SLOT(editIncidence(Akonadi::Item)) );
128  connect( mSearchDialog, SIGNAL(deleteIncidenceSignal(Akonadi::Item)),
129  mMainView, SLOT(deleteIncidence(Akonadi::Item)) );
130  }
131  // make sure the widget is on top again
132  mSearchDialog->show();
133  mSearchDialog->raise();
134 }
135 
136 void KODialogManager::showArchiveDialog()
137 {
138  if ( !mArchiveDialog ) {
139  mArchiveDialog =
140  new CalendarSupport::ArchiveDialog( mMainView->calendar(), mMainView->incidenceChanger() );
141  connect( mArchiveDialog, SIGNAL(eventsDeleted()),
142  mMainView, SLOT(updateView()) );
143  connect( mArchiveDialog, SIGNAL(autoArchivingSettingsModified()),
144  mMainView, SLOT(slotAutoArchivingSettingsModified()) );
145  }
146  mArchiveDialog->show();
147  mArchiveDialog->raise();
148 
149  // Workaround.
150  QApplication::restoreOverrideCursor();
151 }
152 
153 void KODialogManager::showFilterEditDialog( QList<KCalCore::CalFilter*> *filters )
154 {
155  createCategoryEditor();
156  if ( !mFilterEditDialog ) {
157  mFilterEditDialog = new FilterEditDialog( filters, mMainView );
158  connect( mFilterEditDialog, SIGNAL(filterChanged()),
159  mMainView, SLOT(updateFilter()) );
160  connect( mFilterEditDialog, SIGNAL(editCategories()),
161  mCategoryEditDialog, SLOT(show()) );
162 #if 0
163  connect( mCategoryEditDialog, SIGNAL(categoryConfigChanged()),
164  mFilterEditDialog, SLOT(updateCategoryConfig()) );
165 #endif
166  }
167  mFilterEditDialog->show();
168  mFilterEditDialog->raise();
169 }
170 
171 IncidenceEditorNG::IncidenceDialog *KODialogManager::createDialog( const Akonadi::Item &item )
172 {
173  const KCalCore::Incidence::Ptr incidence = CalendarSupport::incidence( item );
174  if ( !incidence ) {
175  return 0;
176  }
177 
178  IncidenceEditorNG::IncidenceDialog *dialog =
179  IncidenceEditorNG::IncidenceDialogFactory::create(
180  /*needs initial saving=*/false,
181  incidence->type(), mMainView->incidenceChanger(), mMainView );
182 
183  return dialog;
184 }
185 
186 void KODialogManager::connectTypeAhead( IncidenceEditorNG::IncidenceDialog *dialog,
187  KOEventView *view )
188 {
189  if ( dialog && view ) {
190  view->setTypeAheadReceiver( dialog->typeAheadReceiver() );
191  }
192 }
193 
194 void KODialogManager::connectEditor( IncidenceEditorNG::IncidenceDialog *editor )
195 {
196  createCategoryEditor();
197  connect( editor, SIGNAL(deleteIncidenceSignal(Akonadi::Item)),
198  mMainView, SLOT(deleteIncidence(Akonadi::Item)) );
199 
200  connect( editor, SIGNAL(dialogClose(Akonadi::Item)),
201  mMainView, SLOT(dialogClosing(Akonadi::Item)) );
202  connect( editor, SIGNAL(deleteAttendee(Akonadi::Item)),
203  mMainView, SIGNAL(cancelAttendees(Akonadi::Item)) );
204 }
205 
206 void KODialogManager::updateSearchDialog()
207 {
208  if ( mSearchDialog ) {
209  mSearchDialog->updateView();
210  }
211 }
212 
213 void KODialogManager::createCategoryEditor()
214 {
215  if ( mCategoryEditDialog == 0 ) {
216  mCategoryEditDialog = new Akonadi::TagManagementDialog(mMainView);
217 
218  mCategoryEditDialog->setModal( true );
219  mCategoryEditDialog->setHelp( QLatin1String("categories-view"), QLatin1String("korganizer") );
220  }
221 }
222 
KODialogManager::connectTypeAhead
void connectTypeAhead(IncidenceEditorNG::IncidenceDialog *editor, KOEventView *view)
Definition: kodialogmanager.cpp:186
CalendarView::incidenceChanger
virtual Akonadi::IncidenceChanger * incidenceChanger() const
Definition: calendarview.h:145
KOEventView::setTypeAheadReceiver
virtual void setTypeAheadReceiver(QObject *o)
Definition: koeventview.cpp:219
FilterEditDialog
This is the class to add/edit a calendar filter.
Definition: filtereditdialog.h:50
QByteArray
filtereditdialog.h
KODialogManager::createDialog
IncidenceEditorNG::IncidenceDialog * createDialog(const Akonadi::Item &item)
Definition: kodialogmanager.cpp:171
searchdialog.h
KOEventView
KOEventView is the abstract base class from which all other calendar views for event data are derived...
Definition: koeventview.h:54
KODialogManager::showFilterEditDialog
void showFilterEditDialog(QList< KCalCore::CalFilter * > *filters)
Definition: kodialogmanager.cpp:153
KODialogManager::showCategoryEditDialog
void showCategoryEditDialog()
Definition: kodialogmanager.cpp:113
QList::append
void append(const T &value)
CalendarView
This is the main calendar widget.
Definition: calendarview.h:99
CalendarView::calendar
Akonadi::ETMCalendar::Ptr calendar() const
Definition: calendarview.cpp:319
KODialogManager::showSearchDialog
void showSearchDialog()
Definition: kodialogmanager.cpp:119
koprefs.h
QObject
KODialogManager::KODialogManager
KODialogManager(CalendarView *)
Definition: kodialogmanager.cpp:66
QApplication::restoreOverrideCursor
void restoreOverrideCursor()
KODialogManager::showArchiveDialog
void showArchiveDialog()
Definition: kodialogmanager.cpp:136
QList< KCalCore::CalFilter * >
QList::iterator
QStringList
QList::end
iterator end()
SearchDialog::updateView
void updateView()
Definition: searchdialog.cpp:137
KODialogManager::updateSearchDialog
void updateSearchDialog()
Definition: kodialogmanager.cpp:206
KODialogManager::showOptionsDialog
void showOptionsDialog()
Definition: kodialogmanager.cpp:85
KODialogManager::~KODialogManager
virtual ~KODialogManager()
Definition: kodialogmanager.cpp:76
QLatin1String
KODialogManager::connectEditor
void connectEditor(IncidenceEditorNG::IncidenceDialog *editor)
Definition: kodialogmanager.cpp:194
kodialogmanager.h
calendarview.h
SearchDialog
Definition: searchdialog.h:50
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QList::begin
iterator begin()
KODialogManager
This class manages the dialogs used by the calendar view.
Definition: kodialogmanager.h:54
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:32:59 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

korganizer

Skip menu "korganizer"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer
  • pimprint

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal