summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmpluginsettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kpovmodeler/pmpluginsettings.cpp')
-rw-r--r--kpovmodeler/pmpluginsettings.cpp150
1 files changed, 150 insertions, 0 deletions
diff --git a/kpovmodeler/pmpluginsettings.cpp b/kpovmodeler/pmpluginsettings.cpp
new file mode 100644
index 00000000..6b6611f2
--- /dev/null
+++ b/kpovmodeler/pmpluginsettings.cpp
@@ -0,0 +1,150 @@
+/*
+**************************************************************************
+ description
+ --------------------
+ copyright : (C) 2003 by Andreas Zehender
+ email : zehender@kde.org
+**************************************************************************
+
+**************************************************************************
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+**************************************************************************/
+
+#include "pmpluginsettings.h"
+
+#include "pmpluginmanager.h"
+
+#include <qlayout.h>
+#include <qgroupbox.h>
+#include <qlistview.h>
+#include <qpushbutton.h>
+#include <klocale.h>
+
+class PMPluginListViewItem : public QListViewItem
+{
+public:
+ PMPluginListViewItem( QListView* parent, PMPluginInfo* info )
+ : QListViewItem( parent, info->name( ), info->description( ) )
+ {
+ m_info = info;
+ m_enabled = info->enabled( );
+ setStatus( );
+ }
+ void toggleStatus( )
+ {
+ m_enabled = !m_enabled;
+ setStatus( );
+ }
+ void setStatus( )
+ {
+ if( m_enabled )
+ setText( 2, i18n( "loaded" ) );
+ else
+ setText( 2, i18n( "deactivated" ) );
+ }
+ PMPluginInfo* m_info;
+ bool m_enabled;
+};
+
+PMPluginSettings::PMPluginSettings( QWidget* parent, const char* name )
+ : PMSettingsDialogPage( parent, name )
+{
+ QVBoxLayout* vlayout = new QVBoxLayout( this, 0, KDialog::spacingHint( ) );
+
+ QGroupBox* gb = new QGroupBox( i18n( "Installed Plugins" ), this );
+ vlayout->addWidget( gb );
+
+ QVBoxLayout* gvl = new QVBoxLayout( gb, KDialog::marginHint( ), KDialog::spacingHint( ) );
+ gvl->addSpacing( 10 );
+
+ m_pPluginsList = new QListView( gb );
+ connect( m_pPluginsList, SIGNAL( selectionChanged( ) ),
+ SLOT( slotSelectionChanged( ) ) );
+ m_pPluginsList->addColumn( i18n( "Name" ) );
+ m_pPluginsList->addColumn( i18n( "Description" ) );
+ m_pPluginsList->addColumn( i18n( "Status" ) );
+ gvl->addWidget( m_pPluginsList, 1 );
+
+ QHBoxLayout* hl = new QHBoxLayout( gvl );
+ m_pToggle = new QPushButton( i18n( "Load" ), gb );
+ m_pToggle->setEnabled( false );
+ connect( m_pToggle, SIGNAL( clicked( ) ), SLOT( slotToggle( ) ) );
+ hl->addWidget( m_pToggle );
+ hl->addStretch( 1 );
+
+ vlayout->addStretch( 1 );
+}
+
+void PMPluginSettings::displaySettings( )
+{
+ QPtrList<PMPluginInfo> plugins = PMPluginManager::theManager( )->plugins( );
+ QPtrListIterator<PMPluginInfo> it( plugins );
+
+ m_pPluginsList->clear( );
+ for( ; *it; ++it )
+ new PMPluginListViewItem( m_pPluginsList, *it );
+}
+
+void PMPluginSettings::applySettings( )
+{
+ bool changes = false;
+ PMPluginListViewItem* item =
+ ( PMPluginListViewItem* ) m_pPluginsList->firstChild( );
+ for( ; item; item = ( PMPluginListViewItem* ) item->nextSibling( ) )
+ {
+ if( item->m_enabled != item->m_info->enabled( ) )
+ {
+ item->m_info->enable( item->m_enabled );
+ changes = true;
+ }
+ }
+ if( changes )
+ PMPluginManager::theManager( )->updatePlugins( );
+}
+
+bool PMPluginSettings::validateData( )
+{
+ return true;
+}
+
+void PMPluginSettings::displayDefaults( )
+{
+}
+
+void PMPluginSettings::slotToggle( )
+{
+ PMPluginListViewItem* item =
+ ( PMPluginListViewItem* ) m_pPluginsList->currentItem( );
+ if( item )
+ {
+ item->toggleStatus( );
+
+ if( item->m_enabled )
+ m_pToggle->setText( i18n( "Deactivate" ) );
+ else
+ m_pToggle->setText( i18n( "Load" ) );
+ }
+}
+
+void PMPluginSettings::slotSelectionChanged( )
+{
+ PMPluginListViewItem* item =
+ ( PMPluginListViewItem* ) m_pPluginsList->currentItem( );
+ if( item )
+ {
+ m_pToggle->setEnabled( true );
+ if( item->m_enabled )
+ m_pToggle->setText( i18n( "Deactivate" ) );
+ else
+ m_pToggle->setText( i18n( "Load" ) );
+ }
+ else
+ m_pToggle->setEnabled( false );
+}
+
+#include "pmpluginsettings.moc"