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 Sat May 1 11:38:28 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003