12 #include <tqlistview.h> 18 #include <tdeapplication.h> 19 #include <kurllabel.h> 21 #include "kdevplugin.h" 22 #include "projectmanager.h" 23 #include "plugincontroller.h" 24 #include "pluginselectdialog.h" 26 class 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; }
47 PluginSelectDialog::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, TQT_SIGNAL( selectionChanged( TQListViewItem * ) ),
this, TQT_SLOT( itemSelected( TQListViewItem * ) ) );
55 connect( urllabel, TQT_SIGNAL( leftClickedURL(
const TQString & ) ),
this, TQT_SLOT( openURL(
const TQString & ) ) );
60 PluginSelectDialog::~PluginSelectDialog()
64 void 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() );
87 void PluginSelectDialog::openURL(
const TQString & url )
89 kapp->invokeBrowser( url );
92 void 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() );
110 void 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 );
161 TQStringList 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"