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( schedule_cancel( 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 }