libkdepim Library API Documentation

core.cpp

00001 // -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
00023 #include "core.h"
00024 #include "editor.h"
00025 
00026 #include <ksettings/dialog.h>
00027 #include <kparts/partmanager.h>
00028 #include <kparts/part.h>
00029 #include <kparts/componentfactory.h>
00030 #include <kapplication.h>
00031 #include <kconfig.h>
00032 #include <ktrader.h>
00033 #include <klibloader.h>
00034 #include <kstdaction.h>
00035 #include <klistbox.h>
00036 #include <kiconloader.h>
00037 #include <kstandarddirs.h>
00038 #include <kshortcut.h>
00039 #include <kparts/componentfactory.h>
00040 #include <klocale.h>
00041 #include <kstatusbar.h>
00042 #include <kguiitem.h>
00043 #include <kpopupmenu.h>
00044 #include <kshortcut.h>
00045 #include <kcmultidialog.h>
00046 #include <kdebug.h>
00047 
00048 #include <qwidgetstack.h>
00049 #include <qhbox.h>
00050 #include <qwidget.h>
00051 
00052 using namespace Komposer;
00053 
00054 Core::Core( QWidget *parent, const char *name )
00055   : KParts::MainWindow( parent, name ), m_currentEditor( 0 )
00056 {
00057   //m_editors.setAutoDelete( true );
00058   statusBar()->show();
00059 
00060   initWidgets();
00061 
00062   // prepare the part manager
00063   m_partManager = new KParts::PartManager( this );
00064   connect( m_partManager, SIGNAL(activePartChanged(KParts::Part*) ),
00065            this, SLOT(slotActivePartChanged(KParts::Part*)) );
00066 
00067   loadEditors();
00068 
00069   setXMLFile( "komposerui.rc" );
00070 
00071   createGUI( 0 );
00072 
00073   resize( 600, 400 ); // initial size
00074   setAutoSaveSettings();
00075 
00076   loadSettings();
00077 }
00078 
00079 Core::~Core()
00080 {
00081   saveSettings();
00082 
00083   QPtrList<KParts::Part> parts = *m_partManager->parts();
00084   parts.setAutoDelete( true );
00085   parts.clear();
00086 
00087   //Prefs::self()->writeConfig();
00088 }
00089 
00090 void
00091 Core::loadEditors()
00092 {
00093   //m_pluginManager->loadEditors();
00094 }
00095 
00096 void
00097 Core::unloadEditors()
00098 {
00099 }
00100 
00101 void
00102 Core::addEditor( Komposer::Editor *editor )
00103 {
00104   kdDebug(5600) << "Added editor" << endl;
00105 
00106   // merge the editors GUI into the main window
00107   insertChildClient( editor );
00108 }
00109 
00110 void
00111 Core::addPart( KParts::Part* part )
00112 {
00113   kdDebug()<<"Part = "<< part << " widget = "<< part->widget() <<endl;
00114   if ( part->widget() )
00115     m_stack->addWidget( part->widget(), 0 );
00116 
00117   m_partManager->addPart( part, false );
00118 }
00119 
00120 void
00121 Core::slotActivePartChanged( KParts::Part* part )
00122 {
00123   if ( !part ) {
00124     createGUI( 0 );
00125     return;
00126   }
00127 
00128   kdDebug() << "Part activated: " << part << " with stack id. "
00129             << m_stack->id( part->widget() )<< endl;
00130 
00131   createGUI( part );
00132 }
00133 /*
00134 void
00135 Core::selectEditor( Komposer::Editor *editor )
00136 {
00137   if ( !editor )
00138     return;
00139 
00140   KParts::Part *part = editor->part();
00141 
00142   editor->select();
00143 
00144   QPtrList<KParts::Part> *partList = const_cast<QPtrList<KParts::Part>*>( m_partManager->parts() );
00145   if ( partList->find( part ) == -1 )
00146     addPart( part );
00147 
00148   m_partManager->setActivePart( part );
00149   QWidget *view = part->widget();
00150   Q_ASSERT( view );
00151 
00152   kdDebug()<<"Raising view "<<view<<endl;
00153   if ( view )
00154   {
00155     m_stack->raiseWidget( view );
00156     view->show();
00157     view->setFocus();
00158     m_currentEditor = editor;
00159   }
00160 }
00161 
00162 void
00163 Core::selectEditor( const QString &editorName )
00164 {
00165 
00166 }*/
00167 
00168 void
00169 Core::loadSettings()
00170 {
00171   //kdDebug()<<"Trying to select "<< Prefs::self()->m_activeEditor <<endl;
00172   //selectEditor( Prefs::self()->m_activeEditor );
00173 
00174   //m_activeEditors = Prefs::self()->m_activeEditors;
00175 }
00176 
00177 void
00178 Core::saveSettings()
00179 {
00180   //if ( m_currentEditor )
00181     //Prefs::self()->m_activeEditor = m_currentEditor->identifier();
00182 }
00183 
00184 void
00185 Core::slotQuit()
00186 {
00187   close();
00188 }
00189 
00190 void
00191 Core::slotPreferences()
00192 {
00193   if ( m_dlg == 0 )
00194     m_dlg = new KSettings::Dialog( this );
00195   m_dlg->show();
00196 }
00197 
00198 KParts::ReadWritePart*
00199 Core::createPart( const char *libname )
00200 {
00201   kdDebug() << "Core:createPart(): " << libname << endl;
00202 
00203   QMap<QCString,KParts::ReadWritePart *>::ConstIterator it;
00204 
00205   it = m_parts.find( libname );
00206 
00207   if ( it != m_parts.end() )
00208     return it.data();
00209 
00210   kdDebug() << "Creating new KPart" << endl;
00211 
00212   KParts::ReadWritePart *part =
00213     KParts::ComponentFactory::
00214       createPartInstanceFromLibrary<KParts::ReadWritePart>
00215         ( libname, this, 0, this, "komposer" );
00216 
00217   if ( part )
00218     m_parts.insert( libname, part );
00219 
00220   return part;
00221 }
00222 
00223 void
00224 Core::initWidgets()
00225 {
00226   QHBox *topWidget = new QHBox( this );
00227   setCentralWidget( topWidget );
00228   m_stack = new QWidgetStack( topWidget );
00229 }
00230 
00231 #include "core.moc"
KDE Logo
This file is part of the documentation for libkdepim Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Mon Apr 4 04:46:32 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003