PluginItem::PluginItem(const QString& pluginVersion, int id, const QString& pluginTitle,const QString& pluginDescription,const QString& status, const QString& file_name, const QString& file_hash, const QString& error_string, const QIcon& icon) :QWidget(NULL) { setupUi(this) ; _id = id ; _statusLabel->setText(status) ; _statusLabel->setToolTip(error_string); _hashLabel->setText(file_hash) ; _name_LE->setText(file_name) ; _pluginIcon->setIcon(icon) ; _pluginIcon->setText(QString()) ; msgLabel->setText(pluginDescription) ; subjectLabel->setText(pluginTitle + " "+ pluginVersion) ; infoLabel->setText(pluginTitle + " " + tr("will be enabled after your restart RetroShare.")) ; infoLabel->hide(); QObject::connect(_configure_PB,SIGNAL(clicked()),this,SLOT(configurePlugin())) ; QObject::connect(_about_PB,SIGNAL(clicked()),this,SLOT(aboutPlugin())) ; QObject::connect(enableButton,SIGNAL(clicked()),this,SLOT(enablePlugin())) ; QObject::connect(disableButton,SIGNAL(clicked()),this,SLOT(disablePlugin())) ; expandFrame->hide(); }
PluginItem::PluginItem(int id, const QString& pluginTitle,const QString& pluginDescription,const QString& status, const QString& file_name, const QString& file_hash, const QString& /*error_string*/, const QIcon& icon) :QWidget(NULL) { setupUi(this) ; _id = id ; _statusLabel->setText(status) ; _hashLabel->setText(file_hash) ; _name_LE->setText(file_name) ; _pluginIcon->setIcon(icon) ; _pluginIcon->setText(QString()) ; msgLabel->setText(pluginDescription) ; subjectLabel->setText(pluginTitle) ; QObject::connect(_enabled_CB,SIGNAL(toggled(bool)),this,SLOT(togglePlugin(bool))) ; QObject::connect(_configure_PB,SIGNAL(clicked()),this,SLOT(configurePlugin())) ; }
DesktopScene::DesktopScene(QObject * parent) : QGraphicsScene(parent), m_wheelDesktopSwitch(false), m_menu(0), m_activePlugin(0) { m_power = new PowerManager(this); m_screenSaver = new ScreenSaver(this); DesktopConfig::instance()->config->beginGroup("razor"); QStringList plugins = DesktopConfig::instance()->config->value("plugins").toStringList(); m_menuFile = DesktopConfig::instance()->config->value("menu_file", "").toString(); m_wheelDesktopSwitch = DesktopConfig::instance()->config->value("mouse_wheel_desktop_switch", false).toBool(); DesktopConfig::instance()->config->endGroup(); if (m_menuFile.isEmpty()) m_menuFile = XdgMenu::getMenuFileName(); m_xdgMenu.setEnvironments(QStringList() << "X-RAZOR" << "Razor"); bool res = m_xdgMenu.read(m_menuFile); connect(&m_xdgMenu, SIGNAL(changed()), this, SLOT(buildMenu())); if (res) { QTimer::singleShot(1000, this, SLOT(buildMenu())); } else { QMessageBox::warning(0, "Menu Parse error", m_xdgMenu.errorString()); return; } m_actArrangeWidgets = new QAction(tr("Unlock Desktop..."), this); m_actArrangeWidgets->setIcon(XdgIcon::fromTheme("object-locked")); m_actArrangeWidgets->setCheckable(true); connect(m_actArrangeWidgets, SIGNAL(toggled(bool)), this, SLOT(arrangeWidgets(bool))); m_actAddNewPlugin = new QAction(tr("Add New Desktop Widget..."), this); connect(m_actAddNewPlugin, SIGNAL(triggered()), this, SLOT(showAddPluginDialog())); m_actRemovePlugin = new QAction(tr("Remove Plugin..."), this); connect(m_actRemovePlugin, SIGNAL(triggered()), this, SLOT(removePlugin())); m_actConfigurePlugin = new QAction(tr("Configure Plugin..."), this); connect(m_actConfigurePlugin, SIGNAL(triggered()), this, SLOT(configurePlugin())); m_actSetbackground = new QAction(tr("Set Desktop Background..."), this); m_actSetbackground->setIcon(XdgIcon::fromTheme("preferences-desktop-wallpaper")); connect(m_actSetbackground, SIGNAL(triggered()), this, SLOT(setDesktopBackground())); m_actAbout = new QAction(tr("About Razor..."), this); m_actAbout->setIcon(XdgIcon::fromTheme("help-browser")); connect(m_actAbout, SIGNAL(triggered()), this, SLOT(about())); // load plugins QStringList desktopDirs = pluginDesktopDirs(); foreach (QString configId, plugins) { DesktopConfig::instance()->config->beginGroup(configId); QString libName(DesktopConfig::instance()->config->value("plugin", "").toString()); qreal x = DesktopConfig::instance()->config->value("x", 10.0).toReal(); qreal y = DesktopConfig::instance()->config->value("y", 10.0).toReal(); qreal w = DesktopConfig::instance()->config->value("w", 10.0).toReal(); qreal h = DesktopConfig::instance()->config->value("h", 10.0).toReal(); QPointF position(x, y); QSizeF size(w, h); DesktopConfig::instance()->config->endGroup(); RazorPluginInfoList list = RazorPluginInfo::search(desktopDirs, "RazorDesktop/Plugin", QString("%1.desktop").arg(libName)); if( !list.count()) { qWarning() << QString("Plugin \"%1\" not found.").arg(libName); continue; } QLibrary* lib = loadPluginLib(list.first()); if (!lib) { qWarning() << "RazorWorkSpace::setConfig() Library" << libName << "is not loaded"; continue; } DesktopWidgetPlugin * item = m_plugins[configId]; if (!item) { item = loadPlugin(lib, configId); m_plugins.insert(configId, item); } item->setSizeAndPosition(position, size); }
OptionsDetailed::OptionsDetailed( Config* _config, QWidget* parent ) : QWidget( parent ), config( _config ) { const int fontHeight = QFontMetrics(QApplication::font()).boundingRect("M").size().height(); int gridRow = 0; grid = new QGridLayout( this ); QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lFormat = new QLabel( i18n("Format:"), this ); topBox->addWidget( lFormat ); cFormat = new KComboBox( this ); topBox->addWidget( cFormat ); cFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)) ); connect( cFormat, SIGNAL(activated(const QString&)), this, SLOT(formatChanged(const QString&)) ); // connect( cFormat, SIGNAL(activated(const QString&)), this, SLOT(somethingChanged()) ); topBox->addStretch(); lPlugin = new QLabel( i18n("Use Plugin:"), this ); topBox->addWidget( lPlugin ); cPlugin = new KComboBox( this ); topBox->addWidget( cPlugin ); cPlugin->setSizeAdjustPolicy( QComboBox::AdjustToContents ); connect( cPlugin, SIGNAL(activated(const QString&)), this, SLOT(encoderChanged(const QString&)) ); connect( cPlugin, SIGNAL(activated(const QString&)), this, SLOT(somethingChanged()) ); pConfigurePlugin = new KPushButton( KIcon("configure"), "", this ); pConfigurePlugin->setFixedSize( cPlugin->sizeHint().height(), cPlugin->sizeHint().height() ); pConfigurePlugin->setFlat( true ); topBox->addWidget( pConfigurePlugin ); topBox->setStretchFactor( pConfigurePlugin, 1 ); connect( pConfigurePlugin, SIGNAL(clicked()), this, SLOT(configurePlugin()) ); // draw a horizontal line QFrame *lineFrame = new QFrame( this ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); lineFrame->setFixedHeight( fontHeight ); grid->addWidget( lineFrame, 1, 0 ); // prepare the plugin widget wPlugin = 0; grid->setRowStretch( 2, 1 ); grid->setRowMinimumHeight( 2, 20 ); gridRow = 3; // draw a horizontal line lineFrame = new QFrame( this ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); lineFrame->setFixedHeight( fontHeight ); grid->addWidget( lineFrame, gridRow++, 0 ); int filterCount = 0; foreach( const QString& pluginName, config->data.backends.enabledFilters ) { FilterPlugin *plugin = qobject_cast<FilterPlugin*>(config->pluginLoader()->backendPluginByName(pluginName)); if( !plugin ) continue; FilterWidget *widget = plugin->newFilterWidget(); if( !widget ) continue; wFilter.insert( widget, plugin ); connect( widget, SIGNAL(optionsChanged()), this, SLOT(somethingChanged()) ); grid->addWidget( widget, gridRow++, 0 ); widget->show(); filterCount++; } if( filterCount > 0 ) { // draw a horizontal line lineFrame = new QFrame( this ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); lineFrame->setFixedHeight( fontHeight ); grid->addWidget( lineFrame, gridRow++, 0 ); } // the output directory QHBoxLayout *middleBox = new QHBoxLayout( ); grid->addLayout( middleBox, gridRow++, 0 ); QLabel *lOutput = new QLabel( i18n("Destination:"), this ); middleBox->addWidget( lOutput ); outputDirectory = new OutputDirectory( config, this ); middleBox->addWidget( outputDirectory ); QHBoxLayout *bottomBox = new QHBoxLayout(); grid->addLayout( bottomBox, gridRow++, 0 ); cReplayGain = new QCheckBox( i18n("Calculate Replay Gain tags"), this ); bottomBox->addWidget( cReplayGain ); //connect( cReplayGain, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); bottomBox->addStretch(); lEstimSize = new QLabel( QString(QChar(8776))+"? B / min." ); lEstimSize->hide(); // hide for now because most plugins report inaccurate data bottomBox->addWidget( lEstimSize ); pProfileSave = new KPushButton( KIcon("document-save"), "", this ); bottomBox->addWidget( pProfileSave ); pProfileSave->setFixedWidth( pProfileSave->height() ); pProfileSave->setToolTip( i18n("Save current options as a profile") ); connect( pProfileSave, SIGNAL(clicked()), this, SLOT(saveCustomProfile()) ); pProfileLoad = new QToolButton( this ); bottomBox->addWidget( pProfileLoad ); pProfileLoad->setIcon( KIcon("document-open") ); pProfileLoad->setPopupMode( QToolButton::InstantPopup ); pProfileLoad->setFixedWidth( pProfileLoad->height() ); pProfileLoad->setToolTip( i18n("Load saved profiles") ); }