Improvement to plugin system:

- made config page system more automatic, to allow addign config pages from plugins
- added (disabled) checkbox and function to allow all plugins for development
- added config page methods to RsPlugin class



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4957 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2012-02-18 14:55:50 +00:00
parent 13283b40ee
commit 5679a30e67
25 changed files with 220 additions and 300 deletions

View file

@ -21,6 +21,7 @@
#include <QMessageBox>
#include <retroshare/rsplugin.h>
#include "GeneralPage.h"
#include "DirectoriesPage.h"
#include "ServerPage.h"
@ -105,95 +106,58 @@ RSettingsWin::initStackedWidget()
stackedWidget->setCurrentIndex(-1);
stackedWidget->removeWidget(stackedWidget->widget(0));
stackedWidget->addWidget(new GeneralPage(0));
stackedWidget->addWidget(new ServerPage());
stackedWidget->addWidget(new TransferPage());
stackedWidget->addWidget(new RelayPage() );
stackedWidget->addWidget(new DirectoriesPage());
stackedWidget->addWidget(new PluginsPage() );
stackedWidget->addWidget(new NotifyPage());
stackedWidget->addWidget(new CryptoPage());
stackedWidget->addWidget(new MessagePage());
stackedWidget->addWidget(new ForumPage());
stackedWidget->addWidget(new ChatPage());
stackedWidget->addWidget(new AppearancePage());
stackedWidget->addWidget(new SoundPage() );
addPage(new GeneralPage(0));
addPage(new ServerPage());
addPage(new TransferPage());
addPage(new RelayPage() );
addPage(new DirectoriesPage());
addPage(new PluginsPage() );
addPage(new NotifyPage());
addPage(new CryptoPage());
addPage(new MessagePage());
addPage(new ForumPage());
addPage(new ChatPage());
addPage(new AppearancePage());
addPage(new SoundPage() );
// add widgets from plugins
for(int i=0;i<rsPlugins->nbPlugins();++i)
{
RsPlugin *pl = rsPlugins->plugin(i) ;
if(pl->qt_config_page() != NULL)
stackedWidget->addWidget(pl->qt_config_page()) ;
}
// make the first page the default.
setNewPage(General);
}
void RSettingsWin::addPage(ConfigPage *page)
{
stackedWidget->addWidget(page) ;
QListWidgetItem *item = new QListWidgetItem(QIcon(page->iconPixmap()),page->pageName()) ;
listWidget->addItem(item) ;
}
void
RSettingsWin::setNewPage(int page)
{
QString text;
ConfigPage *pagew = dynamic_cast<ConfigPage*>(stackedWidget->widget(page)) ;
switch (page)
{
case General:
text = tr("General");
pageicon->setPixmap(QPixmap(":/images/kcmsystem24.png"));
break;
case Directories:
text = tr("Directories");
pageicon->setPixmap(QPixmap(":/images/folder_doments.png"));
break;
case Server:
text = tr("Server");
pageicon->setPixmap(QPixmap(":/images/server_24x24.png"));
break;
case Transfer:
text = tr("Transfer");
pageicon->setPixmap(QPixmap(":/images/ktorrent32.png"));
break;
case Relay:
text = tr("Relay");
pageicon->setPixmap(QPixmap(":/images/server_24x24.png"));
break;
case Notify:
text = tr("Notify");
pageicon->setPixmap(QPixmap(":/images/status_unknown.png"));
break;
case Security:
text = tr("Security");
pageicon->setPixmap(QPixmap(":/images/encrypted32.png"));
break;
case Message:
text = tr("Message");
pageicon->setPixmap(QPixmap(":/images/evolution.png"));
break;
case Forum:
text = tr("Forum");
pageicon->setPixmap(QPixmap(":/images/konversation.png"));
break;
case Plugins:
text = tr("Plugins");
pageicon->setPixmap(QPixmap(":/images/extension_32.png"));
break;
case Chat:
text = tr("Chat");
pageicon->setPixmap(QPixmap(":/images/chat_24.png"));
break;
case Appearance:
text = tr("Appearance");
pageicon->setPixmap(QPixmap(":/images/looknfeel.png"));
break;
/*// #ifndef RS_RELEASE_VERSION
case Fileassociations:
text = tr("File Associations");
pageicon->setPixmap(QPixmap(":/images/filetype-association.png"));
break;*/
case Sound:
text = tr("Sound");
pageicon->setPixmap(QPixmap(":/images/sound.png"));
break;
// #endif
default:
text = tr("UnknownPage");// impossible case
}
if(pagew == NULL)
{
std::cerr << "Error in RSettingsWin::setNewPage(): widget is not a ConfigPage!" << std::endl;
return ;
}
pageName->setText(pagew->pageName());
pageicon->setPixmap(pagew->iconPixmap()) ;
pageName->setText(text);
stackedWidget->setCurrentIndex(page);
listWidget->setCurrentRow(page);
stackedWidget->setCurrentIndex(page);
listWidget->setCurrentRow(page);
}
/** Saves changes made to settings. */