12#include <tqlistview.h>
18#include <tdeapplication.h>
21#include "kdevplugin.h"
22#include "projectmanager.h"
23#include "plugincontroller.h"
24#include "pluginselectdialog.h"
26class PluginItem :
public TQCheckListItem
30 PluginItem( TQListView * parent, TQString
const & name, TQString
const & label,
31 TQString
const & info, TQString
const url = TQString() )
32 : TQCheckListItem( parent, label, TQCheckListItem::CheckBox),
33 _name( name ), _info( info ), _url( url )
36 TQString info() {
return _info; }
37 TQString name() {
return _name; }
38 TQString url() {
return _url; }
47PluginSelectDialog::PluginSelectDialog(TQWidget* parent,
const char* name,
bool modal, WFlags fl )
48 : PluginSelectDialogBase( parent,name, modal,fl )
50 plugin_list->setResizeMode( TQListView::LastColumn );
51 plugin_list->addColumn(
"");
52 plugin_list->header()->hide();
54 connect( plugin_list, TQ_SIGNAL( selectionChanged( TQListViewItem * ) ),
this, TQ_SLOT( itemSelected( TQListViewItem * ) ) );
55 connect( urllabel, TQ_SIGNAL( leftClickedURL(
const TQString & ) ),
this, TQ_SLOT( openURL(
const TQString & ) ) );
60PluginSelectDialog::~PluginSelectDialog()
64void PluginSelectDialog::saveAsDefault()
66 kdDebug(9000) << k_funcinfo << endl;
68 ProfileEngine & engine = PluginController::getInstance()->engine();
69 Profile * profile = engine.findProfile( PluginController::getInstance()->currentProfile() );
71 profile->clearList( Profile::ExplicitDisable );
73 TQListViewItemIterator it( plugin_list );
74 while ( it.current() )
76 PluginItem * item =
static_cast<PluginItem*
>( it.current() );
79 profile->addEntry( Profile::ExplicitDisable, item->name() );
87void PluginSelectDialog::openURL(
const TQString & url )
89 kapp->invokeBrowser( url );
92void PluginSelectDialog::itemSelected( TQListViewItem * item )
96 PluginItem * pitem =
static_cast<PluginItem*
>( item );
97 plugin_description_label->setText( pitem->info() );
99 if ( pitem->url().isEmpty() )
105 urllabel->setURL( pitem->url() );
106 urllabel->setText( pitem->url() );
110void PluginSelectDialog::init( )
112 const TQValueList<KDevPlugin*> loadedPlugins = PluginController::getInstance()->loadedPlugins();
113 TQStringList loadedPluginDesktopNames;
114 TQValueList<KDevPlugin*>::ConstIterator it = loadedPlugins.begin();
115 while( it != loadedPlugins.end() )
117 loadedPluginDesktopNames << (*it)->instance()->instanceName();
121 kdDebug(9000) <<
" *** loadedPluginDesktopNames: " << loadedPluginDesktopNames << endl;
123 TDETrader::OfferList localOffers;
124 if ( ProjectManager::getInstance()->projectLoaded() )
126 localOffers = PluginController::getInstance()->engine().offers(
127 PluginController::getInstance()->currentProfile(), ProfileEngine::Project );
130 TDETrader::OfferList globalOffers = PluginController::getInstance()->engine().offers(
131 PluginController::getInstance()->currentProfile(), ProfileEngine::Global);
133 TDETrader::OfferList offers = localOffers + globalOffers;
134 for (TDETrader::OfferList::ConstIterator it = offers.begin(); it != offers.end(); ++it)
137 TQString Comment = (*it)->comment();
138 TQRegExp re(
"\\bhttp://[\\S]*");
139 re.search( Comment );
140 Comment.replace( re,
"" );
148 PluginItem *item =
new PluginItem( plugin_list, (*it)->desktopEntryName(), (*it)->genericName(), Comment, url );
149 item->setOn( loadedPluginDesktopNames.contains( (*it)->desktopEntryName() ) );
151 kdDebug(9000) << (*it)->desktopEntryName() <<
" : " << (loadedPluginDesktopNames.contains( (*it)->desktopEntryName() ) ?
"YES" :
"NO" ) << endl;
154 TQListViewItem * first = plugin_list->firstChild();
157 plugin_list->setSelected( first,
true );
161TQStringList PluginSelectDialog::unselectedPluginNames( )
163 TQStringList unselectedPlugins;
164 TQListViewItem * item = plugin_list->firstChild();
167 PluginItem * pluginItem =
static_cast<PluginItem*
>( item );
168 if ( !pluginItem->isOn() )
170 unselectedPlugins << pluginItem->name();
172 item = item->nextSibling();
174 return unselectedPlugins;
179#include "pluginselectdialog.moc"