korganizer Library API Documentation

kodialogmanager.cpp

00001 /* 00002 This file is part of KOrganizer. 00003 00004 Copyright (c) 2001 00005 Cornelius Schumacher <schumacher@kde.org> 00006 00007 This program is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation; either version 2 of the License, or 00010 (at your option) any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software 00019 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00020 */ 00021 00022 #include <kcmultidialog.h> 00023 #include <ksettings/dialog.h> 00024 00025 #include <libkdepim/categoryeditdialog.h> 00026 00027 #include "calendarview.h" 00028 #include "incomingdialog.h" 00029 #include "outgoingdialog.h" 00030 #include "koprefsdialog.h" 00031 #include "koeventeditor.h" 00032 #include "koprefs.h" 00033 #include "kotodoeditor.h" 00034 #include "searchdialog.h" 00035 #include "filtereditdialog.h" 00036 #ifndef KORG_NOPLUGINS 00037 #include "plugindialog.h" 00038 #endif 00039 #ifndef KORG_NOARCHIVE 00040 #include "archivedialog.h" 00041 #endif 00042 #include "koviewmanager.h" 00043 #include "koagendaview.h" 00044 00045 #include "kodialogmanager.h" 00046 #include "kodialogmanager.moc" 00047 00048 KODialogManager::KODialogManager( CalendarView *mainView ) : 00049 QObject(), mMainView( mainView ) 00050 { 00051 mOutgoingDialog = 0; 00052 mIncomingDialog = 0; 00053 mOptionsDialog = 0; 00054 mSearchDialog = 0; 00055 mArchiveDialog = 0; 00056 mFilterEditDialog = 0; 00057 mPluginDialog = 0; 00058 00059 mCategoryEditDialog = new KPIM::CategoryEditDialog(KOPrefs::instance(),mMainView); 00060 KOGlobals::fitDialogToScreen( mCategoryEditDialog ); 00061 } 00062 00063 KODialogManager::~KODialogManager() 00064 { 00065 delete mOutgoingDialog; 00066 delete mIncomingDialog; 00067 delete mOptionsDialog; 00068 delete mSearchDialog; 00069 #ifndef KORG_NOARCHIVE 00070 delete mArchiveDialog; 00071 #endif 00072 delete mFilterEditDialog; 00073 #ifndef KORG_NOPLUGINS 00074 delete mPluginDialog; 00075 #endif 00076 } 00077 00078 void KODialogManager::errorSaveEvent( QWidget *parent ) 00079 { 00080 KMessageBox::sorry( parent, i18n("Unable to save event.") ); 00081 } 00082 00083 void KODialogManager::errorSaveTodo( QWidget *parent ) 00084 { 00085 KMessageBox::sorry( parent, i18n("Unable to save todo item.") ); 00086 } 00087 00088 void KODialogManager::errorSaveJournal( QWidget *parent ) 00089 { 00090 KMessageBox::sorry( parent, i18n("Unable to save journal entry.") ); 00091 } 00092 00093 OutgoingDialog *KODialogManager::outgoingDialog() 00094 { 00095 createOutgoingDialog(); 00096 return mOutgoingDialog; 00097 } 00098 00099 void KODialogManager::createOutgoingDialog() 00100 { 00101 if (!mOutgoingDialog) { 00102 mOutgoingDialog = new OutgoingDialog(mMainView->calendar(),mMainView); 00103 if (mIncomingDialog) mIncomingDialog->setOutgoingDialog(mOutgoingDialog); 00104 connect(mOutgoingDialog,SIGNAL(numMessagesChanged(int)), 00105 mMainView,SIGNAL(numOutgoingChanged(int))); 00106 } 00107 } 00108 00109 void KODialogManager::showOptionsDialog() 00110 { 00111 if (!mOptionsDialog) { 00112 #if 0 00113 mOptionsDialog = new KConfigureDialog(); 00114 // mOptionsDialog = new KConfigureDialog( KConfigureDialog::Configurable ); 00115 // mOptionsDialog = new KConfigureDialog( mMainView ); 00116 connect( mOptionsDialog->dialog(), 00117 SIGNAL( configCommitted( const QCString & ) ), 00118 mMainView, SLOT( updateConfig() ) ); 00119 #else 00120 mOptionsDialog = new KCMultiDialog( mMainView, "KorganizerPreferences" ); 00121 connect( mOptionsDialog, SIGNAL( configCommitted( const QCString & ) ), 00122 mMainView, SLOT( updateConfig() ) ); 00123 #if 0 00124 connect( mOptionsDialog, SIGNAL( applyClicked() ), 00125 mMainView, SLOT( updateConfig() ) ); 00126 connect( mOptionsDialog, SIGNAL( okClicked() ), 00127 mMainView, SLOT( updateConfig() ) ); 00128 // TODO Find a way to do this with KCMultiDialog 00129 connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()), 00130 mOptionsDialog,SLOT(updateCategories())); 00131 #endif 00132 00133 QStringList modules; 00134 00135 modules.append( "configmain.desktop" ); 00136 modules.append( "configtime.desktop" ); 00137 modules.append( "configviews.desktop" ); 00138 modules.append( "configfonts.desktop" ); 00139 modules.append( "configcolors.desktop" ); 00140 modules.append( "configprinting.desktop" ); 00141 modules.append( "configgroupscheduling.desktop" ); 00142 modules.append( "configgroupautomation.desktop" ); 00143 // TODO: Remove this check 00144 if( KOPrefs::instance()->mUseGroupwareCommunication ) 00145 modules.append( "configfreebusy.desktop" ); 00146 00147 // add them all 00148 QStringList::iterator mit; 00149 for ( mit = modules.begin(); mit != modules.end(); ++mit ) 00150 mOptionsDialog->addModule( *mit ); 00151 #endif 00152 } 00153 00154 mOptionsDialog->show(); 00155 mOptionsDialog->raise(); 00156 } 00157 00158 void KODialogManager::showOutgoingDialog() 00159 { 00160 createOutgoingDialog(); 00161 mOutgoingDialog->show(); 00162 mOutgoingDialog->raise(); 00163 } 00164 00165 IncomingDialog *KODialogManager::incomingDialog() 00166 { 00167 createIncomingDialog(); 00168 return mIncomingDialog; 00169 } 00170 00171 void KODialogManager::createIncomingDialog() 00172 { 00173 createOutgoingDialog(); 00174 if (!mIncomingDialog) { 00175 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView); 00176 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)), 00177 mMainView,SIGNAL(numIncomingChanged(int))); 00178 connect(mIncomingDialog,SIGNAL(calendarUpdated()), 00179 mMainView,SLOT(updateView())); 00180 } 00181 } 00182 00183 void KODialogManager::showIncomingDialog() 00184 { 00185 createIncomingDialog(); 00186 mIncomingDialog->show(); 00187 mIncomingDialog->raise(); 00188 } 00189 00190 void KODialogManager::showCategoryEditDialog() 00191 { 00192 mCategoryEditDialog->show(); 00193 } 00194 00195 void KODialogManager::showSearchDialog() 00196 { 00197 if (!mSearchDialog) { 00198 mSearchDialog = new SearchDialog(mMainView->calendar(),mMainView); 00199 connect(mSearchDialog,SIGNAL(showIncidenceSignal(Incidence *)), 00200 mMainView,SLOT(showIncidence(Incidence *))); 00201 connect(mSearchDialog,SIGNAL(editIncidenceSignal(Incidence *)), 00202 mMainView,SLOT(editIncidence(Incidence *))); 00203 connect(mSearchDialog,SIGNAL(deleteIncidenceSignal(Incidence *)), 00204 mMainView, SLOT(deleteIncidence(Incidence *))); 00205 connect(mMainView,SIGNAL(closingDown()),mSearchDialog,SLOT(reject())); 00206 } 00207 // make sure the widget is on top again 00208 mSearchDialog->show(); 00209 mSearchDialog->raise(); 00210 } 00211 00212 void KODialogManager::showArchiveDialog() 00213 { 00214 #ifndef KORG_NOARCHIVE 00215 if (!mArchiveDialog) { 00216 mArchiveDialog = new ArchiveDialog(mMainView->calendar(),mMainView); 00217 connect(mArchiveDialog,SIGNAL(eventsDeleted()), 00218 mMainView,SLOT(updateView())); 00219 } 00220 mArchiveDialog->show(); 00221 mArchiveDialog->raise(); 00222 00223 // Workaround. 00224 QApplication::restoreOverrideCursor(); 00225 #endif 00226 } 00227 00228 void KODialogManager::showFilterEditDialog( QPtrList<CalFilter> *filters ) 00229 { 00230 if ( !mFilterEditDialog ) { 00231 mFilterEditDialog = new FilterEditDialog( filters, mMainView ); 00232 connect( mFilterEditDialog, SIGNAL( filterChanged() ), 00233 mMainView, SLOT( filterEdited() ) ); 00234 connect( mFilterEditDialog, SIGNAL( editCategories() ), 00235 mCategoryEditDialog, SLOT( show() ) ); 00236 connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ), 00237 mFilterEditDialog, SLOT( updateCategoryConfig() ) ); 00238 } 00239 mFilterEditDialog->show(); 00240 mFilterEditDialog->raise(); 00241 } 00242 00243 void KODialogManager::showPluginDialog() 00244 { 00245 #ifndef KORG_NOPLUGINS 00246 if (!mPluginDialog) { 00247 mPluginDialog = new PluginDialog(mMainView); 00248 connect(mPluginDialog,SIGNAL(configChanged()), 00249 mMainView,SLOT(updateConfig())); 00250 } 00251 mPluginDialog->show(); 00252 mPluginDialog->raise(); 00253 #endif 00254 } 00255 00256 KOEventEditor *KODialogManager::getEventEditor() 00257 { 00258 KOEventEditor *eventEditor = new KOEventEditor( mMainView->calendar(), 00259 mMainView ); 00260 00261 connect( eventEditor, SIGNAL( eventAdded( Event * ) ), 00262 mMainView, SLOT( eventAdded( Event * ) ) ); 00263 connect( eventEditor, SIGNAL( eventChanged( Event *, Event * ) ), 00264 mMainView, SLOT( eventChanged( Event *, Event * ) ) ); 00265 connect( eventEditor, SIGNAL( eventDeleted( Event * ) ), 00266 mMainView, SLOT( eventDeleted( Event * ) ) ); 00267 connect( eventEditor, SIGNAL( deleteAttendee( Incidence * ) ), 00268 mMainView, SLOT( schedule_cancel( Incidence * ) ) ); 00269 connect( eventEditor, SIGNAL( editCanceled( Incidence * ) ), 00270 mMainView, SLOT( editCanceled( Incidence * ) ) ); 00271 00272 connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ), 00273 eventEditor, SLOT( updateCategoryConfig() ) ); 00274 connect( eventEditor, SIGNAL( editCategories() ), 00275 mCategoryEditDialog, SLOT( show() ) ); 00276 connect( eventEditor, SIGNAL( dialogClose( Incidence * ) ), 00277 mMainView, SLOT( dialogClosing( Incidence * ) ) ); 00278 00279 connect( mMainView, SIGNAL( closingDown() ), eventEditor, SLOT( reject() ) ); 00280 00281 return eventEditor; 00282 } 00283 00284 void KODialogManager::connectTypeAhead( KOEventEditor *editor, 00285 KOAgendaView *agenda ) 00286 { 00287 if ( editor && agenda ) { 00288 agenda->setTypeAheadReceiver( editor->typeAheadReceiver() ); 00289 connect( editor, SIGNAL( focusReceivedSignal() ), 00290 agenda, SLOT( finishTypeAhead() ) ); 00291 } 00292 } 00293 00294 KOTodoEditor *KODialogManager::getTodoEditor() 00295 { 00296 KOTodoEditor *todoEditor = new KOTodoEditor( mMainView->calendar(), 00297 mMainView ); 00298 00299 connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ), 00300 todoEditor, SLOT( updateCategoryConfig() ) ); 00301 connect( todoEditor, SIGNAL( editCategories() ), 00302 mCategoryEditDialog, SLOT( show() ) ); 00303 00304 connect( todoEditor, SIGNAL( todoAdded( Todo * ) ), 00305 mMainView, SLOT( todoAdded( Todo * ) ) ); 00306 connect( todoEditor, SIGNAL( todoChanged( Todo *, Todo * ) ), 00307 mMainView, SLOT( todoChanged( Todo *, Todo * ) ) ); 00308 connect( todoEditor, SIGNAL( todoDeleted() ), 00309 mMainView, SLOT( updateTodoViews() ) ); 00310 connect( todoEditor, SIGNAL( dialogClose( Incidence * ) ), 00311 mMainView, SLOT( dialogClosing( Incidence * ) ) ); 00312 connect( todoEditor, SIGNAL( editCanceled( Incidence * ) ), 00313 mMainView, SLOT( editCanceled( Incidence * ) ) ); 00314 00315 connect( mMainView, SIGNAL( closingDown() ), todoEditor, SLOT( reject() ) ); 00316 00317 return todoEditor; 00318 } 00319 00320 void KODialogManager::updateSearchDialog() 00321 { 00322 if (mSearchDialog) mSearchDialog->updateView(); 00323 } 00324 00325 void KODialogManager::setDocumentId( const QString &id ) 00326 { 00327 if (mOutgoingDialog) mOutgoingDialog->setDocumentId( id ); 00328 }
KDE Logo
This file is part of the documentation for korganizer Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jul 28 23:58:13 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003