00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <kcmultidialog.h>
00026 #include <ksettings/dialog.h>
00027
00028 #include <libkdepim/categoryeditdialog.h>
00029
00030 #include "calendarview.h"
00031 #include "incomingdialog.h"
00032 #include "outgoingdialog.h"
00033 #include "koprefsdialog.h"
00034 #include "koprefs.h"
00035 #include "koeventeditor.h"
00036 #include "kotodoeditor.h"
00037 #include "kojournaleditor.h"
00038 #include "searchdialog.h"
00039 #include "filtereditdialog.h"
00040 #ifndef KORG_NOPLUGINS
00041 #include "plugindialog.h"
00042 #endif
00043 #ifndef KORG_NOARCHIVE
00044 #include "archivedialog.h"
00045 #endif
00046 #include "koviewmanager.h"
00047 #include "koagendaview.h"
00048 #include "koglobals.h"
00049
00050 #include "kodialogmanager.h"
00051 #include "kodialogmanager.moc"
00052
00053
00054
00055
00056
00057 KODialogManager::KODialogManager( CalendarView *mainView ) :
00058 QObject(), mMainView( mainView )
00059 {
00060 mOutgoingDialog = 0;
00061 mIncomingDialog = 0;
00062 mOptionsDialog = 0;
00063 mSearchDialog = 0;
00064 mArchiveDialog = 0;
00065 mFilterEditDialog = 0;
00066 mPluginDialog = 0;
00067
00068 mCategoryEditDialog = new KPIM::CategoryEditDialog( KOPrefs::instance(), mMainView );
00069 connect( mainView, SIGNAL( categoriesChanged() ),
00070 mCategoryEditDialog, SLOT( reload() ) );
00071 KOGlobals::fitDialogToScreen( mCategoryEditDialog );
00072 }
00073
00074 KODialogManager::~KODialogManager()
00075 {
00076 delete mOutgoingDialog;
00077 delete mIncomingDialog;
00078 delete mOptionsDialog;
00079 delete mSearchDialog;
00080 #ifndef KORG_NOARCHIVE
00081 delete mArchiveDialog;
00082 #endif
00083 delete mFilterEditDialog;
00084 #ifndef KORG_NOPLUGINS
00085 delete mPluginDialog;
00086 #endif
00087 }
00088
00089 void KODialogManager::errorSaveEvent( QWidget *parent )
00090 {
00091 KMessageBox::sorry( parent, i18n("Unable to save event.") );
00092 }
00093
00094 void KODialogManager::errorSaveTodo( QWidget *parent )
00095 {
00096 KMessageBox::sorry( parent, i18n("Unable to save todo item.") );
00097 }
00098
00099 void KODialogManager::errorSaveJournal( QWidget *parent )
00100 {
00101 KMessageBox::sorry( parent, i18n("Unable to save journal entry.") );
00102 }
00103
00104 OutgoingDialog *KODialogManager::outgoingDialog()
00105 {
00106 createOutgoingDialog();
00107 return mOutgoingDialog;
00108 }
00109
00110 void KODialogManager::createOutgoingDialog()
00111 {
00112 if (!mOutgoingDialog) {
00113 mOutgoingDialog = new OutgoingDialog(mMainView->calendar(),mMainView);
00114 if (mIncomingDialog) mIncomingDialog->setOutgoingDialog(mOutgoingDialog);
00115 connect(mOutgoingDialog,SIGNAL(numMessagesChanged(int)),
00116 mMainView,SIGNAL(numOutgoingChanged(int)));
00117 }
00118 }
00119
00120 void KODialogManager::showOptionsDialog()
00121 {
00122 if (!mOptionsDialog) {
00123 #if 0
00124 mOptionsDialog = new KConfigureDialog();
00125
00126
00127 connect( mOptionsDialog->dialog(),
00128 SIGNAL( configCommitted( const QCString & ) ),
00129 mMainView, SLOT( updateConfig() ) );
00130 #else
00131 mOptionsDialog = new KCMultiDialog( mMainView, "KorganizerPreferences" );
00132 connect( mOptionsDialog, SIGNAL( configCommitted( const QCString & ) ),
00133 mMainView, SLOT( updateConfig() ) );
00134 #if 0
00135 connect( mOptionsDialog, SIGNAL( applyClicked() ),
00136 mMainView, SLOT( updateConfig() ) );
00137 connect( mOptionsDialog, SIGNAL( okClicked() ),
00138 mMainView, SLOT( updateConfig() ) );
00139
00140 connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()),
00141 mOptionsDialog,SLOT(updateCategories()));
00142 #endif
00143
00144 QStringList modules;
00145
00146 modules.append( "korganizer_configmain.desktop" );
00147 modules.append( "korganizer_configtime.desktop" );
00148 modules.append( "korganizer_configviews.desktop" );
00149 modules.append( "korganizer_configfonts.desktop" );
00150 modules.append( "korganizer_configcolors.desktop" );
00151 modules.append( "korganizer_configprinting.desktop" );
00152 modules.append( "korganizer_configgroupscheduling.desktop" );
00153 modules.append( "korganizer_configgroupautomation.desktop" );
00154 modules.append( "korganizer_configfreebusy.desktop" );
00155
00156
00157 QStringList::iterator mit;
00158 for ( mit = modules.begin(); mit != modules.end(); ++mit )
00159 mOptionsDialog->addModule( *mit );
00160 #endif
00161 }
00162
00163 mOptionsDialog->show();
00164 mOptionsDialog->raise();
00165 }
00166
00167 void KODialogManager::showOutgoingDialog()
00168 {
00169 createOutgoingDialog();
00170 mOutgoingDialog->show();
00171 mOutgoingDialog->raise();
00172 }
00173
00174 IncomingDialog *KODialogManager::incomingDialog()
00175 {
00176 createIncomingDialog();
00177 return mIncomingDialog;
00178 }
00179
00180 void KODialogManager::createIncomingDialog()
00181 {
00182 createOutgoingDialog();
00183 if (!mIncomingDialog) {
00184 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView);
00185 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)),
00186 mMainView,SIGNAL(numIncomingChanged(int)));
00187 connect(mIncomingDialog,SIGNAL(calendarUpdated()),
00188 mMainView,SLOT(updateView()));
00189 }
00190 }
00191
00192 void KODialogManager::showIncomingDialog()
00193 {
00194 createIncomingDialog();
00195 mIncomingDialog->show();
00196 mIncomingDialog->raise();
00197 }
00198
00199 void KODialogManager::showCategoryEditDialog()
00200 {
00201 mCategoryEditDialog->show();
00202 }
00203
00204 void KODialogManager::showSearchDialog()
00205 {
00206 if (!mSearchDialog) {
00207 mSearchDialog = new SearchDialog(mMainView->calendar(),mMainView);
00208 connect(mSearchDialog,SIGNAL(showIncidenceSignal(Incidence *)),
00209 mMainView,SLOT(showIncidence(Incidence *)));
00210 connect(mSearchDialog,SIGNAL(editIncidenceSignal(Incidence *)),
00211 mMainView,SLOT(editIncidence(Incidence *)));
00212 connect(mSearchDialog,SIGNAL(deleteIncidenceSignal(Incidence *)),
00213 mMainView, SLOT(deleteIncidence(Incidence *)));
00214 connect(mMainView,SIGNAL(closingDown()),mSearchDialog,SLOT(reject()));
00215 }
00216
00217 mSearchDialog->show();
00218 mSearchDialog->raise();
00219 }
00220
00221 void KODialogManager::showArchiveDialog()
00222 {
00223 #ifndef KORG_NOARCHIVE
00224 if (!mArchiveDialog) {
00225 mArchiveDialog = new ArchiveDialog(mMainView->calendar(),mMainView);
00226 connect(mArchiveDialog,SIGNAL(eventsDeleted()),
00227 mMainView,SLOT(updateView()));
00228 connect(mArchiveDialog,SIGNAL(autoArchivingSettingsModified()),
00229 mMainView,SLOT(slotAutoArchivingSettingsModified()));
00230 }
00231 mArchiveDialog->show();
00232 mArchiveDialog->raise();
00233
00234
00235 QApplication::restoreOverrideCursor();
00236 #endif
00237 }
00238
00239 void KODialogManager::showFilterEditDialog( QPtrList<CalFilter> *filters )
00240 {
00241 if ( !mFilterEditDialog ) {
00242 mFilterEditDialog = new FilterEditDialog( filters, mMainView );
00243 connect( mFilterEditDialog, SIGNAL( filterChanged() ),
00244 mMainView, SLOT( filterEdited() ) );
00245 connect( mFilterEditDialog, SIGNAL( editCategories() ),
00246 mCategoryEditDialog, SLOT( show() ) );
00247 connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ),
00248 mFilterEditDialog, SLOT( updateCategoryConfig() ) );
00249 }
00250 mFilterEditDialog->show();
00251 mFilterEditDialog->raise();
00252 }
00253
00254 void KODialogManager::showPluginDialog()
00255 {
00256 #ifndef KORG_NOPLUGINS
00257 if (!mPluginDialog) {
00258 mPluginDialog = new PluginDialog(mMainView);
00259 connect(mPluginDialog,SIGNAL(configChanged()),
00260 mMainView,SLOT(updateConfig()));
00261 }
00262 mPluginDialog->show();
00263 mPluginDialog->raise();
00264 #endif
00265 }
00266
00267 KOEventEditor *KODialogManager::getEventEditor()
00268 {
00269 KOEventEditor *eventEditor = new KOEventEditor( mMainView->calendar(),
00270 mMainView );
00271 connectEditor( eventEditor );
00272 return eventEditor;
00273 }
00274
00275 void KODialogManager::connectTypeAhead( KOEventEditor *editor,
00276 KOAgendaView *agenda )
00277 {
00278 if ( editor && agenda ) {
00279 agenda->setTypeAheadReceiver( editor->typeAheadReceiver() );
00280 connect( editor, SIGNAL( focusReceivedSignal() ),
00281 agenda, SLOT( finishTypeAhead() ) );
00282 }
00283 }
00284
00285 void KODialogManager::connectEditor( KOIncidenceEditor*editor )
00286 {
00287 connect( editor, SIGNAL( incidenceAdded( Incidence * ) ),
00288 mMainView, SLOT( incidenceAdded( Incidence * ) ) );
00289 connect( editor, SIGNAL( incidenceChanged( Incidence *, Incidence * ) ),
00290 mMainView, SLOT( incidenceChanged( Incidence *, Incidence * ) ) );
00291 connect( editor, SIGNAL( incidenceToBeDeleted( Incidence * ) ),
00292 mMainView, SLOT( incidenceToBeDeleted( Incidence * ) ) );
00293 connect( editor, SIGNAL( incidenceDeleted( Incidence * ) ),
00294 mMainView, SLOT( incidenceDeleted( Incidence * ) ) );
00295
00296 connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ),
00297 editor, SLOT( updateCategoryConfig() ) );
00298 connect( editor, SIGNAL( editCategories() ),
00299 mCategoryEditDialog, SLOT( show() ) );
00300
00301 connect( editor, SIGNAL( dialogClose( Incidence * ) ),
00302 mMainView, SLOT( dialogClosing( Incidence * ) ) );
00303 connect( editor, SIGNAL( editCanceled( Incidence * ) ),
00304 mMainView, SLOT( editCanceled( Incidence * ) ) );
00305 connect( mMainView, SIGNAL( closingDown() ), editor, SLOT( reject() ) );
00306
00307 connect( editor, SIGNAL( deleteAttendee( Incidence * ) ),
00308 mMainView, SLOT( deleteAttendee( Incidence * ) ) );
00309 }
00310
00311 KOTodoEditor *KODialogManager::getTodoEditor()
00312 {
00313 KOTodoEditor *todoEditor = new KOTodoEditor( mMainView->calendar(), mMainView );
00314 connectEditor( todoEditor );
00315 connect( todoEditor, SIGNAL( todoCompleted( Todo * ) ),
00316 mMainView, SLOT( recurTodo( Todo *) ) ) ;
00317 return todoEditor;
00318 }
00319
00320 KOJournalEditor *KODialogManager::getJournalEditor()
00321 {
00322 KOJournalEditor *journalEditor = new KOJournalEditor( mMainView->calendar(), mMainView );
00323 connectEditor( journalEditor );
00324 return journalEditor;
00325 }
00326
00327 void KODialogManager::updateSearchDialog()
00328 {
00329 if (mSearchDialog) mSearchDialog->updateView();
00330 }
00331
00332 void KODialogManager::setDocumentId( const QString &id )
00333 {
00334 if (mOutgoingDialog) mOutgoingDialog->setDocumentId( id );
00335 }