1
#include "opt_plugins.h"
3
#include "iconwidget.h"
4
#include "pluginmanager.h"
5
#include "psioptions.h"
7
#include <qwhatsthis.h>
10
#include <qbuttongroup.h>
11
#include <qradiobutton.h>
13
#include "ui_opt_plugins.h"
15
class OptPluginsUI : public QWidget, public Ui::OptPlugins
18
OptPluginsUI() : QWidget() { setupUi(this); }
21
//----------------------------------------------------------------------------
23
//----------------------------------------------------------------------------
25
OptionsTabPlugins::OptionsTabPlugins(QObject *parent)
26
: OptionsTab(parent, "plugins", "", tr("Plugins"), tr("Options for Psi plugins"), "psi/advanced")
31
OptionsTabPlugins::~OptionsTabPlugins()
35
QWidget *OptionsTabPlugins::widget()
40
w = new OptPluginsUI();
41
OptPluginsUI *d = (OptPluginsUI *)w;
46
/*QWhatsThis::add(d->ck_messageevents,
47
tr("Enables the sending and requesting of message events such as "
48
"'Contact is Typing', ..."));*/
50
connect(d->cb_plugins,SIGNAL(currentIndexChanged(int)),SLOT(pluginSelected(int)));
51
connect(d->cb_loadPlugin,SIGNAL(stateChanged(int)),SLOT(loadToggled(int)));
56
void OptionsTabPlugins::applyOptions(Options *opt)
61
OptPluginsUI *d = (OptPluginsUI *)w;
66
void OptionsTabPlugins::restoreOptions(const Options *opt)
71
OptPluginsUI *d = (OptPluginsUI *)w;
76
void OptionsTabPlugins::listPlugins()
81
OptPluginsUI *d = (OptPluginsUI *)w;
83
d->cb_plugins->clear();
85
PluginManager *pm=PluginManager::instance();
87
QStringList plugins=pm->availablePlugins();
88
foreach (QString plugin, plugins){
89
d->cb_plugins->addItem(plugin);
94
void OptionsTabPlugins::loadToggled(int state)
100
OptPluginsUI *d = (OptPluginsUI *)w;
102
QString option=QString("%1.%2")
103
.arg(PluginManager::loadOptionPrefix)
104
.arg(PluginManager::instance()->shortName(d->cb_plugins->currentText()));
105
bool value=d->cb_loadPlugin->isChecked();
106
PsiOptions::instance()->setOption(option, value);
109
void OptionsTabPlugins::pluginSelected(int index)
115
OptPluginsUI *d = (OptPluginsUI *)w;
116
d->le_location->setText(tr("No plugin selected."));
117
d->cb_loadPlugin->setEnabled(false);
118
delete d->pluginOptions;
119
d->pluginOptions = new QLabel(tr("This plugin has no user configurable options"));
121
if ( d->cb_plugins->count() > 0 ) {
122
QString pluginName=d->cb_plugins->currentText();
123
d->le_location->setText(PluginManager::instance()->pathToPlugin( pluginName ));
124
d->cb_loadPlugin->setEnabled(true);
125
QWidget* pluginOptions = PluginManager::instance()->getOptionsWidget( pluginName );
126
d->cb_plugins->setEnabled(true);
128
QString option=QString("%1.%2")
129
.arg(PluginManager::loadOptionPrefix)
130
.arg(PluginManager::instance()->shortName(pluginName));
131
int value=PsiOptions::instance()->getOption(option).toBool();
136
d->cb_loadPlugin->setChecked(value);
138
d->vboxLayout1->remove(d->pluginOptions);
139
delete d->pluginOptions;
140
d->pluginOptions=NULL;
143
d->pluginOptions = pluginOptions;
144
d->pluginOptions->setParent(d);
145
qWarning("Showing Plugin options");
149
d->pluginOptions = new QLabel(tr("This plugin has no user configurable options"),d);
150
qWarning("Plugin has no options");
153
d->vboxLayout1->addWidget(d->pluginOptions);
154
//d->pluginOptions->show();
155
//d->updateGeometry();