void CIMObjectPath::set( const String& host, const CIMNamespaceName& nameSpace, const CIMName& className, const Array<CIMKeyBinding>& keyBindings) { setHost(host); setNameSpace(nameSpace); setClassName(className); setKeyBindings(keyBindings); }
void TermWidgetImpl::propertiesChanged() { setColorScheme(Properties::Instance()->colorScheme); setTerminalFont(Properties::Instance()->font); setMotionAfterPasting(Properties::Instance()->m_motionAfterPaste); if (Properties::Instance()->historyLimited) { setHistorySize(Properties::Instance()->historyLimitedTo); } else { // Unlimited history setHistorySize(-1); } setKeyBindings(Properties::Instance()->emulation); setTerminalOpacity(1.0 - Properties::Instance()->termTransparency/100.0); /* be consequent with qtermwidget.h here */ switch(Properties::Instance()->scrollBarPos) { case 0: setScrollBarPosition(QTermWidget::NoScrollBar); break; case 1: setScrollBarPosition(QTermWidget::ScrollBarLeft); break; case 2: default: setScrollBarPosition(QTermWidget::ScrollBarRight); break; } switch(Properties::Instance()->keyboardCursorShape) { case 1: setKeyboardCursorShape(QTermWidget::UnderlineCursor); break; case 2: setKeyboardCursorShape(QTermWidget::IBeamCursor); break; default: case 0: setKeyboardCursorShape(QTermWidget::BlockCursor); break; } update(); }
void TermWidgetImpl::propertiesChanged() { setColorScheme(Properties::Instance()->colorScheme); setTerminalFont(Properties::Instance()->font); setMotionAfterPasting(Properties::Instance()->m_motionAfterPaste); if (Properties::Instance()->historyLimited) { setHistorySize(Properties::Instance()->historyLimitedTo); } else { // Unlimited history setHistorySize(-1); } qDebug() << "TermWidgetImpl::propertiesChanged" << this << "emulation:" << Properties::Instance()->emulation; setKeyBindings(Properties::Instance()->emulation); setTerminalOpacity(Properties::Instance()->termOpacity/100.0); /* be consequent with qtermwidget.h here */ switch(Properties::Instance()->scrollBarPos) { case 0: setScrollBarPosition(QTermWidget::NoScrollBar); break; case 1: setScrollBarPosition(QTermWidget::ScrollBarLeft); break; case 2: default: setScrollBarPosition(QTermWidget::ScrollBarRight); break; } updateShortcuts(); update(); }
SettingsWidget::SettingsWidget(int page, const QString &moduleName, QWidget *videoEq) : videoEq(videoEq), videoEqOriginalParent(videoEq->parentWidget()), wasShow(false), moduleIndex(0) { setWindowFlags(Qt::Window); setWindowTitle(tr("Settings")); setAttribute(Qt::WA_DeleteOnClose); Settings &QMPSettings = QMPlay2Core.getSettings(); tabW = new QTabWidget; QPushButton *applyB = new QPushButton; applyB->setText(tr("Apply")); connect(applyB, SIGNAL(clicked()), this, SLOT(apply())); QPushButton *closeB = new QPushButton; closeB->setText(tr("Close")); closeB->setShortcut(QKeySequence("Escape")); connect(closeB, SIGNAL(clicked()), this, SLOT(close())); QGridLayout *layout = new QGridLayout(this); layout->addWidget(tabW, 0, 0, 1, 3); layout->addWidget(applyB, 1, 1, 1, 1); layout->addWidget(closeB, 1, 2, 1, 1); layout->setMargin(2); /* Page 1 */ { QWidget *page1Widget = new QWidget; page1 = new Ui::GeneralSettings; page1->setupUi(page1Widget); appendColon(page1->langL); appendColon(page1->styleL); appendColon(page1->encodingL); appendColon(page1->audioLangL); appendColon(page1->subsLangL); appendColon(page1->screenshotL); appendColon(page1->profileL); tabW->addTab(page1Widget, tr("General settings")); int idx; page1->langBox->addItem("English", "en"); page1->langBox->setCurrentIndex(0); const QStringList langs = QMPlay2Core.getLanguages(); for (int i = 0; i < langs.count(); i++) { page1->langBox->addItem(QMPlay2Core.getLongFromShortLanguage(langs[i]), langs[i]); if (QMPlay2Core.getLanguage() == langs[i]) page1->langBox->setCurrentIndex(i + 1); } page1->styleBox->addItems(QStyleFactory::keys()); idx = page1->styleBox->findText(QApplication::style()->objectName(), Qt::MatchFixedString); if (idx > -1 && idx < page1->styleBox->count()) page1->styleBox->setCurrentIndex(idx); connect(page1->styleBox, SIGNAL(currentIndexChanged(int)), this, SLOT(chStyle())); QStringList encodings; for (const QByteArray &item : QTextCodec::availableCodecs()) encodings += QTextCodec::codecForName(item)->name(); encodings.removeDuplicates(); page1->encodingB->addItems(encodings); idx = page1->encodingB->findText(QMPSettings.getByteArray("FallbackSubtitlesEncoding")); if (idx > -1) page1->encodingB->setCurrentIndex(idx); const QString audioLang = QMPSettings.getString("AudioLanguage"); const QString subsLang = QMPSettings.getString("SubtitlesLanguage"); page1->audioLangB->addItem(tr("Default or first stream")); page1->subsLangB->addItem(tr("Default or first stream")); for (const QString &lang : QMPlay2Core.getLanguagesMap()) { page1->audioLangB->addItem(lang); page1->subsLangB->addItem(lang); if (lang == audioLang) page1->audioLangB->setCurrentIndex(page1->audioLangB->count() - 1); if (lang == subsLang) page1->subsLangB->setCurrentIndex(page1->subsLangB->count() - 1); } { const QString currentProfile = QSettings(QMPlay2Core.getSettingsDir() + "Profile.ini", QSettings::IniFormat).value("Profile").toString(); page1->profileB->addItem(tr("Default")); for (const QString &profile : QDir(QMPlay2Core.getSettingsDir() + "Profiles/").entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { page1->profileB->addItem(profile); if (profile == currentProfile) page1->profileB->setCurrentIndex(page1->profileB->count() - 1); } connect(page1->profileB, SIGNAL(currentIndexChanged(int)), this, SLOT(profileListIndexChanged(int))); page1->profileRemoveB->setIcon(QMPlay2Core.getIconFromTheme("list-remove")); page1->profileRemoveB->setEnabled(page1->profileB->currentIndex() != 0); connect(page1->profileRemoveB, SIGNAL(clicked()), this, SLOT(removeProfile())); } page1->screenshotE->setText(QMPSettings.getString("screenshotPth")); page1->screenshotFormatB->setCurrentIndex(page1->screenshotFormatB->findText(QMPSettings.getString("screenshotFormat"))); page1->screenshotB->setIcon(QMPlay2Core.getIconFromTheme("folder-open")); connect(page1->screenshotB, SIGNAL(clicked()), this, SLOT(chooseScreenshotDir())); connect(page1->setAppearanceB, SIGNAL(clicked()), this, SLOT(setAppearance())); connect(page1->setKeyBindingsB, SIGNAL(clicked()), this, SLOT(setKeyBindings())); #ifdef ICONS_FROM_THEME page1->iconsFromTheme->setChecked(QMPSettings.getBool("IconsFromTheme")); #else delete page1->iconsFromTheme; page1->iconsFromTheme = nullptr; #endif page1->showCoversGB->setChecked(QMPSettings.getBool("ShowCovers")); page1->blurCoversB->setChecked(QMPSettings.getBool("BlurCovers")); page1->showDirCoversB->setChecked(QMPSettings.getBool("ShowDirCovers")); page1->autoOpenVideoWindowB->setChecked(QMPSettings.getBool("AutoOpenVideoWindow")); page1->autoRestoreMainWindowOnVideoB->setChecked(QMPSettings.getBool("AutoRestoreMainWindowOnVideo")); page1->autoUpdatesB->setChecked(QMPSettings.getBool("AutoUpdates")); #ifndef UPDATER page1->autoUpdatesB->setText(tr("Automatically check for updates")); #endif if (Notifies::hasBoth()) page1->trayNotifiesDefault->setChecked(QMPSettings.getBool("TrayNotifiesDefault")); else { delete page1->trayNotifiesDefault; page1->trayNotifiesDefault = nullptr; } page1->autoDelNonGroupEntries->setChecked(QMPSettings.getBool("AutoDelNonGroupEntries")); page1->tabsNorths->setChecked(QMPSettings.getBool("MainWidget/TabPositionNorth")); #ifdef QMPLAY2_ALLOW_ONLY_ONE_INSTANCE page1->allowOnlyOneInstance->setChecked(QMPSettings.getBool("AllowOnlyOneInstance")); #else delete page1->allowOnlyOneInstance; page1->allowOnlyOneInstance = nullptr; #endif page1->hideArtistMetadata->setChecked(QMPSettings.getBool("HideArtistMetadata")); page1->displayOnlyFileName->setChecked(QMPSettings.getBool("DisplayOnlyFileName")); page1->restoreRepeatMode->setChecked(QMPSettings.getBool("RestoreRepeatMode")); page1->stillImages->setChecked(QMPSettings.getBool("StillImages")); page1->proxyB->setChecked(QMPSettings.getBool("Proxy/Use")); page1->proxyHostE->setText(QMPSettings.getString("Proxy/Host")); page1->proxyPortB->setValue(QMPSettings.getInt("Proxy/Port")); page1->proxyLoginB->setChecked(QMPSettings.getBool("Proxy/Login")); page1->proxyUserE->setText(QMPSettings.getString("Proxy/User")); page1->proxyPasswordE->setText(QByteArray::fromBase64(QMPSettings.getByteArray("Proxy/Password"))); const QIcon viewRefresh = QMPlay2Core.getIconFromTheme("view-refresh"); page1->clearCoversCache->setIcon(viewRefresh); connect(page1->clearCoversCache, SIGNAL(clicked()), this, SLOT(clearCoversCache())); page1->removeYtDlB->setIcon(QMPlay2Core.getIconFromTheme("list-remove")); connect(page1->removeYtDlB, SIGNAL(clicked()), this, SLOT(removeYouTubeDl())); page1->resetSettingsB->setIcon(viewRefresh); connect(page1->resetSettingsB, SIGNAL(clicked()), this, SLOT(resetSettings())); } /* Page 2 */ { QWidget *page2Widget = new QWidget; page2 = new Ui::PlaybackSettings; page2->setupUi(page2Widget); appendColon(page2->shortSeekL); appendColon(page2->longSeekL); appendColon(page2->bufferLocalL); appendColon(page2->bufferNetworkL); appendColon(page2->backwardBufferNetworkL); appendColon(page2->playIfBufferedL); appendColon(page2->maxVolL); appendColon(page2->forceSamplerate); appendColon(page2->forceChannels); page2->shortSeekB->setSuffix(" " + page2->shortSeekB->suffix()); page2->longSeekB->setSuffix(" " + page2->longSeekB->suffix()); page2->playIfBufferedB->setSuffix(" " + page2->playIfBufferedB->suffix()); page2->replayGainPreamp->setPrefix(page2->replayGainPreamp->prefix() + ": "); tabW->addTab(page2Widget, tr("Playback settings")); page2->shortSeekB->setValue(QMPSettings.getInt("ShortSeek")); page2->longSeekB->setValue(QMPSettings.getInt("LongSeek")); page2->bufferLocalB->setValue(QMPSettings.getInt("AVBufferLocal")); page2->bufferNetworkB->setValue(QMPSettings.getInt("AVBufferNetwork")); page2->backwardBufferNetworkB->setCurrentIndex(QMPSettings.getUInt("BackwardBuffer")); page2->playIfBufferedB->setValue(QMPSettings.getDouble("PlayIfBuffered")); page2->maxVolB->setValue(QMPSettings.getInt("MaxVol")); page2->forceSamplerate->setChecked(QMPSettings.getBool("ForceSamplerate")); page2->samplerateB->setValue(QMPSettings.getInt("Samplerate")); connect(page2->forceSamplerate, SIGNAL(toggled(bool)), page2->samplerateB, SLOT(setEnabled(bool))); page2->samplerateB->setEnabled(page2->forceSamplerate->isChecked()); page2->forceChannels->setChecked(QMPSettings.getBool("ForceChannels")); page2->channelsB->setValue(QMPSettings.getInt("Channels")); connect(page2->forceChannels, SIGNAL(toggled(bool)), page2->channelsB, SLOT(setEnabled(bool))); page2->channelsB->setEnabled(page2->forceChannels->isChecked()); page2->replayGain->setChecked(QMPSettings.getBool("ReplayGain/Enabled")); page2->replayGainAlbum->setChecked(QMPSettings.getBool("ReplayGain/Album")); page2->replayGainPreventClipping->setChecked(QMPSettings.getBool("ReplayGain/PreventClipping")); page2->replayGainPreamp->setValue(QMPSettings.getDouble("ReplayGain/Preamp")); page2->wheelActionB->setChecked(QMPSettings.getBool("WheelAction")); page2->wheelSeekB->setChecked(QMPSettings.getBool("WheelSeek")); page2->wheelVolumeB->setChecked(QMPSettings.getBool("WheelVolume")); page2->storeARatioAndZoomB->setChecked(QMPSettings.getBool("StoreARatioAndZoom")); connect(page2->storeARatioAndZoomB, &QCheckBox::toggled, this, [this](bool checked) { if (checked) { page2->keepZoom->setChecked(true); page2->keepARatio->setChecked(true); } }); page2->keepZoom->setChecked(QMPSettings.getBool("KeepZoom")); connect(page2->keepZoom, &QCheckBox::toggled, this, [this](bool checked) { if (!checked && !page2->keepARatio->isChecked()) { page2->storeARatioAndZoomB->setChecked(false); } }); page2->keepARatio->setChecked(QMPSettings.getBool("KeepARatio")); connect(page2->keepARatio, &QCheckBox::toggled, this, [this](bool checked) { if (!checked && !page2->keepZoom->isChecked()) { page2->storeARatioAndZoomB->setChecked(false); } }); page2->showBufferedTimeOnSlider->setChecked(QMPSettings.getBool("ShowBufferedTimeOnSlider")); page2->savePos->setChecked(QMPSettings.getBool("SavePos")); page2->keepSubtitlesDelay->setChecked(QMPSettings.getBool("KeepSubtitlesDelay")); page2->keepSubtitlesScale->setChecked(QMPSettings.getBool("KeepSubtitlesScale")); page2->keepVideoDelay->setChecked(QMPSettings.getBool("KeepVideoDelay")); page2->keepSpeed->setChecked(QMPSettings.getBool("KeepSpeed")); page2->syncVtoA->setChecked(QMPSettings.getBool("SyncVtoA")); page2->silence->setChecked(QMPSettings.getBool("Silence")); page2->restoreVideoEq->setChecked(QMPSettings.getBool("RestoreVideoEqualizer")); page2->ignorePlaybackError->setChecked(QMPSettings.getBool("IgnorePlaybackError")); page2->leftMouseTogglePlay->setCheckState((Qt::CheckState)qBound(0, QMPSettings.getInt("LeftMouseTogglePlay"), 2)); page2->accurateSeekB->setCheckState((Qt::CheckState)QMPSettings.getInt("AccurateSeek")); page2->accurateSeekB->setToolTip(tr("Slower, but more accurate seeking.\nPartially checked doesn't affect seeking on slider.")); page2->unpauseWhenSeekingB->setChecked(QMPSettings.getBool("UnpauseWhenSeeking")); const QString modulesListTitle[3] = { tr("Video output priority"), tr("Audio output priority"), tr("Decoders priority") }; for (int m = 0; m < 3; ++m) { QGroupBox *groupB = new QGroupBox(modulesListTitle[m]); Ui::ModulesList *ml = new Ui::ModulesList; ml->setupUi(groupB); connect(ml->list, SIGNAL(itemDoubleClicked (QListWidgetItem *)), this, SLOT(openModuleSettings(QListWidgetItem *))); connect(ml->moveUp, SIGNAL(clicked()), this, SLOT(moveModule())); connect(ml->moveDown, SIGNAL(clicked()), this, SLOT(moveModule())); ml->moveUp->setProperty("idx", m); ml->moveDown->setProperty("idx", m); page2->modulesListLayout->addWidget(groupB); page2ModulesList[m] = ml; } } /* Page 3 */ { page3 = new Page3; tabW->addTab(page3, tr("Modules")); page3->listW = new QListWidget; page3->listW->setIconSize({32, 32}); page3->listW->setMinimumSize(200, 0); page3->listW->setMaximumSize(200, 16777215); for (Module *module : QMPlay2Core.getPluginsInstance()) { QListWidgetItem *tWI = new QListWidgetItem(module->name()); tWI->setData(Qt::UserRole, qVariantFromValue((void *)module)); QString toolTip = "<html>" + tr("Contains") + ":"; for (const Module::Info &mod : module->getModulesInfo(true)) { const QPixmap moduleIcon = Functions::getPixmapFromIcon(mod.icon, QSize(22, 22), this); toolTip += "<p> "; bool hasIcon = false; if (!moduleIcon.isNull()) { QBuffer buffer; if (buffer.open(QBuffer::WriteOnly) && moduleIcon.save(&buffer, "PNG")) { toolTip += "<img width='22' height='22' src='data:image/png;base64, " + buffer.data().toBase64() + "'/> "; hasIcon = true; } } if (!hasIcon) toolTip += "- "; toolTip += mod.name + "</p>"; } toolTip += "</html>"; tWI->setToolTip(toolTip); tWI->setIcon(QMPlay2GUI.getIcon(module->icon())); page3->listW->addItem(tWI); if (page == 2 && !moduleName.isEmpty() && module->name() == moduleName) moduleIndex = page3->listW->count() - 1; } page3->scrollA = new QScrollArea; page3->scrollA->setWidgetResizable(true); page3->scrollA->setFrameShape(QFrame::NoFrame); QHBoxLayout *layout = new QHBoxLayout(page3); layout->setMargin(0); layout->setSpacing(1); layout->addWidget(page3->listW); layout->addWidget(page3->scrollA); connect(page3->listW, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(chModule(QListWidgetItem *))); } /* Page 4 */ { page4 = new Page4; tabW->addTab(page4, tr("Subtitles")); page4->colorsAndBordersB = new QCheckBox(tr("Colors and borders")); page4->colorsAndBordersB->setChecked(QMPSettings.getBool("ApplyToASS/ColorsAndBorders")); page4->marginsAndAlignmentB = new QCheckBox(tr("Margins and alignment")); page4->marginsAndAlignmentB->setChecked(QMPSettings.getBool("ApplyToASS/MarginsAndAlignment")); page4->fontsB = new QCheckBox(tr("Fonts and spacing")); page4->fontsB->setChecked(QMPSettings.getBool("ApplyToASS/FontsAndSpacing")); page4->overridePlayResB = new QCheckBox(tr("Use the same size")); page4->overridePlayResB->setChecked(QMPSettings.getBool("ApplyToASS/OverridePlayRes")); page4->toAssGB = new QGroupBox(tr("Apply for ASS/SSA subtitles")); page4->toAssGB->setCheckable(true); page4->toAssGB->setChecked(QMPSettings.getBool("ApplyToASS/ApplyToASS")); QGridLayout *page4ToAssLayout = new QGridLayout(page4->toAssGB); page4ToAssLayout->addWidget(page4->colorsAndBordersB, 0, 0, 1, 1); page4ToAssLayout->addWidget(page4->marginsAndAlignmentB, 1, 0, 1, 1); page4ToAssLayout->addWidget(page4->fontsB, 0, 1, 1, 1); page4ToAssLayout->addWidget(page4->overridePlayResB, 1, 1, 1, 1); page4->addWidget(page4->toAssGB); } /* Page 5 */ { page5 = new Page5; tabW->addTab(page5, tr("OSD")); page5->enabledB = new QCheckBox(tr("OSD enabled")); page5->enabledB->setChecked(QMPSettings.getBool("OSD/Enabled")); page5->addWidget(page5->enabledB); } /* Page 6 */ { page6 = new Page6; tabW->addTab(page6, tr("Video filters")); QWidget *widget = new QWidget; QGridLayout *layout = new QGridLayout(widget); layout->setMargin(0); page6->deintSettingsW = new DeintSettingsW; layout->addWidget(page6->deintSettingsW, 0, 0, 1, 2); page6->videoEqContainer = new QGroupBox(videoEq->objectName()); layout->addWidget(page6->videoEqContainer, 1, 0, 2, 1); page6->otherVFiltersW = new OtherVFiltersW(false); if (!page6->otherVFiltersW->count()) { delete page6->otherVFiltersW; page6->otherVFiltersW = nullptr; } else { QGroupBox *otherVFiltersContainer = new QGroupBox(tr("Software video filters")); QGridLayout *otherVFiltersLayout = new QGridLayout(otherVFiltersContainer); otherVFiltersLayout->addWidget(page6->otherVFiltersW); connect(page6->otherVFiltersW, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(openModuleSettings(QListWidgetItem *))); layout->addWidget(otherVFiltersContainer, 1, 1, 1, 1); } OtherVFiltersW *otherHWVFiltersW = new OtherVFiltersW(true); if (!otherHWVFiltersW->count()) delete otherHWVFiltersW; else { QGroupBox *otherHWVFiltersContainer = new QGroupBox(tr("Hardware accelerated video outputs")); QGridLayout *otherHWVFiltersLayout = new QGridLayout(otherHWVFiltersContainer); otherHWVFiltersLayout->addWidget(otherHWVFiltersW); connect(otherHWVFiltersW, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(openModuleSettings(QListWidgetItem *))); layout->addWidget(otherHWVFiltersContainer, 2, 1, 1, 1); } page6->setWidget(widget); } connect(tabW, SIGNAL(currentChanged(int)), this, SLOT(tabCh(int))); tabW->setCurrentIndex(page); show(); }