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

korganizer

  • sources
  • kde-4.12
  • 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 "filtereditdialog.h"
29 #include "koprefs.h"
30 #include "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 
42 #include <KCalCore/Visitor>
43 
44 #include <KCMultiDialog>
45 
46 using namespace KOrg;
47 
48 // FIXME: Handle KOEventViewerDialogs in dialog manager.
49 
50 class KODialogManager::DialogManagerVisitor : public KCalCore::Visitor
51 {
52  public:
53  DialogManagerVisitor() : mDialogManager( 0 ) {}
54 
55  bool act( KCalCore::IncidenceBase::Ptr incidence, KODialogManager *manager )
56  {
57  mDialogManager = manager;
58  return incidence->accept( *this, incidence );
59  }
60 
61  protected:
62  KODialogManager *mDialogManager;
63 };
64 
65 KODialogManager::KODialogManager( CalendarView *mainView )
66  : QObject(), mMainView( mainView )
67 {
68  mOptionsDialog = 0;
69  mSearchDialog = 0;
70  mArchiveDialog = 0;
71  mFilterEditDialog = 0;
72  mCategoryEditDialog = 0;
73 }
74 
75 KODialogManager::~KODialogManager()
76 {
77  delete mOptionsDialog;
78  delete mSearchDialog;
79  delete mArchiveDialog;
80  delete mFilterEditDialog;
81  delete mCategoryEditDialog;
82 }
83 
84 void KODialogManager::showOptionsDialog()
85 {
86  if ( !mOptionsDialog ) {
87  mOptionsDialog = new KCMultiDialog( mMainView );
88  connect( mOptionsDialog, SIGNAL(configCommitted(QByteArray)),
89  mMainView, SLOT(updateConfig(QByteArray)) );
90  QStringList modules;
91 
92  modules.append( QLatin1String("korganizer_configmain.desktop") );
93  modules.append( QLatin1String("korganizer_configtime.desktop") );
94  modules.append( QLatin1String("korganizer_configviews.desktop") );
95  modules.append( QLatin1String("korganizer_configcolorsandfonts.desktop") );
96  modules.append( QLatin1String("korganizer_configgroupscheduling.desktop") );
97  modules.append( QLatin1String("korganizer_configfreebusy.desktop") );
98  modules.append( QLatin1String("korganizer_configplugins.desktop") );
99  modules.append( QLatin1String("korganizer_configdesignerfields.desktop") );
100 
101  // add them all
102  QStringList::iterator mit;
103  for ( mit = modules.begin(); mit != modules.end(); ++mit ) {
104  mOptionsDialog->addModule( *mit );
105  }
106  }
107 
108  mOptionsDialog->show();
109  mOptionsDialog->raise();
110 }
111 
112 void KODialogManager::showCategoryEditDialog()
113 {
114  createCategoryEditor();
115  mCategoryEditDialog->exec();
116 }
117 
118 void KODialogManager::showSearchDialog()
119 {
120  if ( !mSearchDialog ) {
121  mSearchDialog = new SearchDialog( mMainView );
122  //mSearchDialog->setCalendar( mMainView->calendar() );
123  connect( mSearchDialog, SIGNAL(showIncidenceSignal(Akonadi::Item)),
124  mMainView, SLOT(showIncidence(Akonadi::Item)) );
125  connect( mSearchDialog, SIGNAL(editIncidenceSignal(Akonadi::Item)),
126  mMainView, SLOT(editIncidence(Akonadi::Item)) );
127  connect( mSearchDialog, SIGNAL(deleteIncidenceSignal(Akonadi::Item)),
128  mMainView, SLOT(deleteIncidence(Akonadi::Item)) );
129  }
130  // make sure the widget is on top again
131  mSearchDialog->show();
132  mSearchDialog->raise();
133 }
134 
135 void KODialogManager::showArchiveDialog()
136 {
137  if ( !mArchiveDialog ) {
138  mArchiveDialog =
139  new CalendarSupport::ArchiveDialog( mMainView->calendar(), mMainView->incidenceChanger() );
140  connect( mArchiveDialog, SIGNAL(eventsDeleted()),
141  mMainView, SLOT(updateView()) );
142  connect( mArchiveDialog, SIGNAL(autoArchivingSettingsModified()),
143  mMainView, SLOT(slotAutoArchivingSettingsModified()) );
144  }
145  mArchiveDialog->show();
146  mArchiveDialog->raise();
147 
148  // Workaround.
149  QApplication::restoreOverrideCursor();
150 }
151 
152 void KODialogManager::showFilterEditDialog( QList<KCalCore::CalFilter*> *filters )
153 {
154  createCategoryEditor();
155  if ( !mFilterEditDialog ) {
156  mFilterEditDialog = new FilterEditDialog( filters, mMainView );
157  connect( mFilterEditDialog, SIGNAL(filterChanged()),
158  mMainView, SLOT(updateFilter()) );
159  connect( mFilterEditDialog, SIGNAL(editCategories()),
160  mCategoryEditDialog, SLOT(show()) );
161  connect( mCategoryEditDialog, SIGNAL(categoryConfigChanged()),
162  mFilterEditDialog, SLOT(updateCategoryConfig()) );
163  }
164  mFilterEditDialog->show();
165  mFilterEditDialog->raise();
166 }
167 
168 IncidenceEditorNG::IncidenceDialog *KODialogManager::createDialog( const Akonadi::Item &item )
169 {
170  const KCalCore::Incidence::Ptr incidence = CalendarSupport::incidence( item );
171  if ( !incidence ) {
172  return 0;
173  }
174 
175  IncidenceEditorNG::IncidenceDialog *dialog =
176  IncidenceEditorNG::IncidenceDialogFactory::create(
177  /*needs initial saving=*/false,
178  incidence->type(), mMainView->incidenceChanger(), mMainView );
179 
180  return dialog;
181 }
182 
183 void KODialogManager::connectTypeAhead( IncidenceEditorNG::IncidenceDialog *dialog,
184  KOEventView *view )
185 {
186  if ( dialog && view ) {
187  view->setTypeAheadReceiver( dialog->typeAheadReceiver() );
188  }
189 }
190 
191 void KODialogManager::connectEditor( IncidenceEditorNG::IncidenceDialog *editor )
192 {
193  createCategoryEditor();
194  connect( editor, SIGNAL(deleteIncidenceSignal(Akonadi::Item)),
195  mMainView, SLOT(deleteIncidence(Akonadi::Item)) );
196 
197  connect( mCategoryEditDialog, SIGNAL(categoryConfigChanged()),
198  editor, SIGNAL(updateCategoryConfig()) );
199  connect( editor, SIGNAL(editCategories()),
200  mCategoryEditDialog, SLOT(show()) );
201  connect( editor, SIGNAL(dialogClose(Akonadi::Item)),
202  mMainView, SLOT(dialogClosing(Akonadi::Item)) );
203  connect( editor, SIGNAL(deleteAttendee(Akonadi::Item)),
204  mMainView, SIGNAL(cancelAttendees(Akonadi::Item)) );
205 }
206 
207 void KODialogManager::updateSearchDialog()
208 {
209  if ( mSearchDialog ) {
210  mSearchDialog->updateView();
211  }
212 }
213 
214 void KODialogManager::createCategoryEditor()
215 {
216  if ( mCategoryEditDialog == 0 ) {
217  CalendarSupport::CategoryConfig *cc =
218  new CalendarSupport::CategoryConfig( KOPrefs::instance(), this );
219 
220  mCategoryEditDialog =
221  new IncidenceEditorNG::CategoryEditDialog( cc, mMainView );
222 
223  mCategoryEditDialog->setModal( true );
224  mCategoryEditDialog->setHelp( QLatin1String("categories-view"), QLatin1String("korganizer") );
225 
226  connect( mMainView, SIGNAL(categoriesChanged()),
227  mCategoryEditDialog, SLOT(reload()) );
228  connect( mCategoryEditDialog, SIGNAL(categoryConfigChanged()),
229  mMainView, SIGNAL(categoryConfigChanged()) );
230  }
231 }
232 
233 #include "kodialogmanager.moc"
KODialogManager::connectTypeAhead
void connectTypeAhead(IncidenceEditorNG::IncidenceDialog *editor, KOEventView *view)
Definition: kodialogmanager.cpp:183
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
filtereditdialog.h
KODialogManager::createDialog
IncidenceEditorNG::IncidenceDialog * createDialog(const Akonadi::Item &item)
Definition: kodialogmanager.cpp:168
searchdialog.h
QObject
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:152
KODialogManager::showCategoryEditDialog
void showCategoryEditDialog()
Definition: kodialogmanager.cpp:112
CalendarView
This is the main calendar widget.
Definition: calendarview.h:99
CalendarView::calendar
Akonadi::ETMCalendar::Ptr calendar() const
Definition: calendarview.cpp:313
KODialogManager::showSearchDialog
void showSearchDialog()
Definition: kodialogmanager.cpp:118
koprefs.h
KODialogManager::KODialogManager
KODialogManager(CalendarView *)
Definition: kodialogmanager.cpp:65
KODialogManager::showArchiveDialog
void showArchiveDialog()
Definition: kodialogmanager.cpp:135
SearchDialog::updateView
void updateView()
Definition: searchdialog.cpp:137
KODialogManager::updateSearchDialog
void updateSearchDialog()
Definition: kodialogmanager.cpp:207
KODialogManager::showOptionsDialog
void showOptionsDialog()
Definition: kodialogmanager.cpp:84
KODialogManager::~KODialogManager
virtual ~KODialogManager()
Definition: kodialogmanager.cpp:75
KODialogManager::connectEditor
void connectEditor(IncidenceEditorNG::IncidenceDialog *editor)
Definition: kodialogmanager.cpp:191
kodialogmanager.h
KOPrefs::instance
static KOPrefs * instance()
Get instance of KOPrefs.
Definition: koprefs.cpp:68
calendarview.h
SearchDialog
Definition: searchdialog.h:50
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-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:19 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

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