summaryrefslogtreecommitdiffstats
path: root/libtdepim/komposer/core/core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libtdepim/komposer/core/core.cpp')
-rw-r--r--libtdepim/komposer/core/core.cpp357
1 files changed, 357 insertions, 0 deletions
diff --git a/libtdepim/komposer/core/core.cpp b/libtdepim/komposer/core/core.cpp
new file mode 100644
index 000000000..f93e59cc9
--- /dev/null
+++ b/libtdepim/komposer/core/core.cpp
@@ -0,0 +1,357 @@
+// -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
+/**
+ * core.cpp
+ *
+ * Copyright (C) 2003 Zack Rusin <zack@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#include "core.h"
+
+#include "pluginmanager.h"
+#include "editor.h"
+#include "plugin.h"
+
+#include <ksettings/dialog.h>
+#include <kplugininfo.h>
+#include <kapplication.h>
+#include <kconfig.h>
+#include <ktrader.h>
+#include <klibloader.h>
+#include <kstdaction.h>
+#include <klistbox.h>
+#include <kiconloader.h>
+#include <kstandarddirs.h>
+#include <kshortcut.h>
+#include <klocale.h>
+#include <kstatusbar.h>
+#include <kguiitem.h>
+#include <kpopupmenu.h>
+#include <kshortcut.h>
+#include <kcmultidialog.h>
+#include <kaction.h>
+#include <kstdaccel.h>
+#include <kdebug.h>
+
+#include <tqwidgetstack.h>
+#include <tqhbox.h>
+#include <tqwidget.h>
+
+using namespace Komposer;
+
+Core::Core( TQWidget *parent, const char *name )
+ : KomposerIface( "KomposerIface" ),
+ KMainWindow( parent, name ), m_currentEditor( 0 )
+{
+ initWidgets();
+ initCore();
+ initConnections();
+ setInstance( new KInstance( "komposer" ) );
+
+ createActions();
+ setXMLFile( "komposerui.rc" );
+
+ createGUI( 0 );
+
+ resize( 600, 400 ); // initial size
+ setAutoSaveSettings();
+
+ loadSettings();
+}
+
+Core::~Core()
+{
+ saveSettings();
+
+ //Prefs::self()->writeConfig();
+}
+
+void
+Core::addEditor( Komposer::Editor *editor )
+{
+ if ( editor->widget() ) {
+ m_stack->addWidget( editor->widget() );
+ m_stack->raiseWidget( editor->widget() );
+ editor->widget()->show();
+ m_currentEditor = editor;
+ }
+
+ // merge the editors GUI into the main window
+ //insertChildClient( editor );
+ guiFactory()->addClient( editor );
+}
+
+void
+Core::addPlugin( Komposer::Plugin *plugin )
+{
+ //insertChildClient( plugin );
+ guiFactory()->addClient( plugin );
+}
+
+void
+Core::slotPluginLoaded( Plugin *plugin )
+{
+ kdDebug() << "Plugin loaded "<<endl;
+
+ Editor *editor = dynamic_cast<Editor*>( plugin );
+ if ( editor ) {
+ addEditor( editor );
+ } else {
+ addPlugin( plugin );
+ }
+}
+
+void
+Core::slotAllPluginsLoaded()
+{
+ TQValueList<KPluginInfo*> plugins = m_pluginManager->availablePlugins();
+ kdDebug()<<"Number of available plugins is "<< plugins.count() <<endl;
+ for ( TQValueList<KPluginInfo*>::iterator it = plugins.begin(); it != plugins.end(); ++it ) {
+ KPluginInfo *i = ( *it );
+ kdDebug()<<"\tAvailable plugin "<< i->pluginName()
+ <<", comment = "<< i->comment() <<endl;
+ }
+
+ if ( !m_stack->visibleWidget() ) {
+ m_pluginManager->loadPlugin( "komposer_defaulteditor", PluginManager::LoadAsync );
+ }
+}
+
+#if 0
+void
+Core::slotActivePartChanged( KParts::Part *part )
+{
+ if ( !part ) {
+ createGUI( 0 );
+ return;
+ }
+
+ kdDebug() << "Part activated: " << part << " with stack id. "
+ << m_stack->id( part->widget() )<< endl;
+
+ createGUI( part );
+}
+
+void
+Core::selectEditor( Komposer::Editor *editor )
+{
+ if ( !editor )
+ return;
+
+ KParts::Part *part = editor->part();
+
+ editor->select();
+
+ TQPtrList<KParts::Part> *partList = const_cast<TQPtrList<KParts::Part>*>(
+ m_partManager->parts() );
+ if ( partList->find( part ) == -1 )
+ addPart( part );
+
+ m_partManager->setActivePart( part );
+ TQWidget *view = part->widget();
+ Q_ASSERT( view );
+
+ kdDebug()<<"Raising view "<<view<<endl;
+ if ( view )
+ {
+ m_stack->raiseWidget( view );
+ view->show();
+ view->setFocus();
+ m_currentEditor = editor;
+ }
+}
+
+void
+Core::selectEditor( const TQString &editorName )
+{
+
+}
+#endif
+
+void
+Core::loadSettings()
+{
+ //kdDebug()<<"Trying to select "<< Prefs::self()->m_activeEditor <<endl;
+ //selectEditor( Prefs::self()->m_activeEditor );
+
+ //m_activeEditors = Prefs::self()->m_activeEditors;
+}
+
+void
+Core::saveSettings()
+{
+ //if ( m_currentEditor )
+ //Prefs::self()->m_activeEditor = m_currentEditor->identifier();
+}
+
+void
+Core::slotQuit()
+{
+ kdDebug()<<"exit"<<endl;
+ m_pluginManager->shutdown();
+}
+
+void
+Core::slotPreferences()
+{
+ if ( m_dlg == 0 )
+ m_dlg = new KSettings::Dialog( this );
+ m_dlg->show();
+}
+
+void
+Core::initWidgets()
+{
+ statusBar()->show();
+ TQHBox *topWidget = new TQHBox( this );
+ setCentralWidget( topWidget );
+ m_stack = new TQWidgetStack( topWidget );
+}
+
+void
+Core::initCore()
+{
+ m_pluginManager = new PluginManager( this );
+ connect( m_pluginManager, TQT_SIGNAL(pluginLoaded(Plugin*)),
+ TQT_SLOT(slotPluginLoaded(Plugin*)) );
+ connect( m_pluginManager, TQT_SIGNAL(allPluginsLoaded()),
+ TQT_SLOT(slotAllPluginsLoaded()) );
+
+
+ m_pluginManager->loadAllPlugins();
+ kdDebug()<<"Loading"<<endl;
+}
+
+void
+Core::initConnections()
+{
+ connect( kapp, TQT_SIGNAL(shutDown()),
+ TQT_SLOT(slotQuit()) );
+}
+
+void
+Core::createActions()
+{
+ KStdAction::close( this, TQT_SLOT(slotClose()), actionCollection() );
+
+ (void) new KAction( i18n( "&Send" ), "mail_send", CTRL+Key_Return,
+ this, TQT_SLOT(slotSendNow()), actionCollection(),
+ "send_default" );
+
+ (void) new KAction( i18n( "&Queue" ), "queue", 0,
+ this, TQT_SLOT(slotSendLater()),
+ actionCollection(), "send_alternative" );
+
+ (void) new KAction( i18n( "Save in &Drafts Folder" ), "filesave", 0,
+ this, TQT_SLOT(slotSaveDraft()),
+ actionCollection(), "save_in_drafts" );
+ (void) new KAction( i18n( "&Insert File..." ), "fileopen", 0,
+ this, TQT_SLOT(slotInsertFile()),
+ actionCollection(), "insert_file" );
+ (void) new KAction( i18n( "&Address Book" ), "contents",0,
+ this, TQT_SLOT(slotAddrBook()),
+ actionCollection(), "addressbook" );
+ (void) new KAction( i18n( "&New Composer" ), "mail_new",
+ KStdAccel::shortcut( KStdAccel::New ),
+ this, TQT_SLOT(slotNewComposer()),
+ actionCollection(), "new_composer" );
+
+ (void) new KAction( i18n( "&Attach File..." ), "attach",
+ 0, this, TQT_SLOT(slotAttachFile()),
+ actionCollection(), "attach_file" );
+}
+
+void
+Core::slotClose()
+{
+ close( false );
+}
+
+void
+Core::slotSendNow()
+{
+
+}
+
+void
+Core::slotSendLater()
+{
+
+}
+
+void
+Core::slotSaveDraft()
+{
+
+}
+
+void
+Core::slotInsertFile()
+{
+
+}
+
+void
+Core::slotAddrBook()
+{
+
+}
+
+void
+Core::slotNewComposer()
+{
+
+}
+
+void
+Core::slotAttachFile()
+{
+
+}
+
+void
+Core::send( int how )
+{
+
+}
+
+void
+Core::addAttachment( const KURL &url, const TQString &comment )
+{
+
+}
+
+void
+Core::setBody( const TQString &body )
+{
+ m_currentEditor->setText( body );
+}
+
+void
+Core::addAttachment( const TQString &name,
+ const TQCString &cte,
+ const TQByteArray &data,
+ const TQCString &type,
+ const TQCString &subType,
+ const TQCString &paramAttr,
+ const TQString &paramValue,
+ const TQCString &contDisp )
+{
+
+}
+
+#include "core.moc"