void MainWindow::styleSelected(const QString &stylename) { QStyle *style = 0; if (stylename == desktopThemeName) { setModified(true); } else { style = QStyleFactory::create(stylename); if (!style) return; setStyleHelper(ui->previewFrame, style); delete previewstyle; previewstyle = style; setModified(true); } updateStyleLayout(); }
MainWindow::MainWindow() : ui(new Ui::MainWindow), editPalette(palette()), previewPalette(palette()), previewstyle(0) { ui->setupUi(this); statusBar(); // signals and slots connections connect(ui->fontPathLineEdit, SIGNAL(returnPressed()), SLOT(addFontpath())); connect(ui->addFontPathButton, SIGNAL(clicked()), SLOT(addFontpath())); connect(ui->addSubstitutionButton, SIGNAL(clicked()), SLOT(addSubstitute())); connect(ui->browseFontPathButton, SIGNAL(clicked()), SLOT(browseFontpath())); connect(ui->fontStyleCombo, SIGNAL(activated(int)), SLOT(buildFont())); connect(ui->pointSizeCombo, SIGNAL(activated(int)), SLOT(buildFont())); connect(ui->downFontpathButton, SIGNAL(clicked()), SLOT(downFontpath())); connect(ui->downSubstitutionButton, SIGNAL(clicked()), SLOT(downSubstitute())); connect(ui->fontFamilyCombo, SIGNAL(activated(QString)), SLOT(familySelected(QString))); connect(ui->fileExitAction, SIGNAL(triggered()), SLOT(fileExit())); connect(ui->fileSaveAction, SIGNAL(triggered()), SLOT(fileSave())); connect(ui->helpAboutAction, SIGNAL(triggered()), SLOT(helpAbout())); connect(ui->helpAboutQtAction, SIGNAL(triggered()), SLOT(helpAboutQt())); connect(ui->mainTabWidget, SIGNAL(currentChanged(int)), SLOT(pageChanged(int))); connect(ui->paletteCombo, SIGNAL(activated(int)), SLOT(paletteSelected(int))); connect(ui->removeFontpathButton, SIGNAL(clicked()), SLOT(removeFontpath())); connect(ui->removeSubstitutionButton, SIGNAL(clicked()), SLOT(removeSubstitute())); connect(ui->toolBoxEffectCombo, SIGNAL(activated(int)), SLOT(somethingModified())); connect(ui->doubleClickIntervalSpinBox, SIGNAL(valueChanged(int)), SLOT(somethingModified())); connect(ui->cursorFlashTimeSpinBox, SIGNAL(valueChanged(int)), SLOT(somethingModified())); connect(ui->wheelScrollLinesSpinBox, SIGNAL(valueChanged(int)), SLOT(somethingModified())); connect(ui->menuEffectCombo, SIGNAL(activated(int)), SLOT(somethingModified())); connect(ui->comboEffectCombo, SIGNAL(activated(int)), SLOT(somethingModified())); connect(ui->toolTipEffectCombo, SIGNAL(activated(int)), SLOT(somethingModified())); connect(ui->strutWidthSpinBox, SIGNAL(valueChanged(int)), SLOT(somethingModified())); connect(ui->strutHeightSpinBox, SIGNAL(valueChanged(int)), SLOT(somethingModified())); connect(ui->effectsCheckBox, SIGNAL(toggled(bool)), SLOT(somethingModified())); connect(ui->resolveLinksCheckBox, SIGNAL(toggled(bool)), SLOT(somethingModified())); connect(ui->fontEmbeddingCheckBox, SIGNAL(clicked()), SLOT(somethingModified())); connect(ui->rtlExtensionsCheckBox, SIGNAL(toggled(bool)), SLOT(somethingModified())); connect(ui->inputStyleCombo, SIGNAL(activated(int)), SLOT(somethingModified())); connect(ui->inputMethodCombo, SIGNAL(activated(int)), SLOT(somethingModified())); connect(ui->guiStyleCombo, SIGNAL(activated(QString)), SLOT(styleSelected(QString))); connect(ui->familySubstitutionCombo, SIGNAL(activated(QString)), SLOT(substituteSelected(QString))); connect(ui->tunePaletteButton, SIGNAL(clicked()), SLOT(tunePalette())); connect(ui->upFontpathButton, SIGNAL(clicked()), SLOT(upFontpath())); connect(ui->upSubstitutionButton, SIGNAL(clicked()), SLOT(upSubstitute())); modified = true; desktopThemeName = tr("Desktop Settings (Default)"); setWindowIcon(QPixmap(":/qt-project.org/qtconfig/images/appicon.png")); QStringList gstyles = QStyleFactory::keys(); gstyles.sort(); ui->guiStyleCombo->addItem(desktopThemeName); ui->guiStyleCombo->setItemData(ui->guiStyleCombo->findText(desktopThemeName), tr("Choose style and palette based on your desktop settings."), Qt::ToolTipRole); ui->guiStyleCombo->addItems(gstyles); QSettings settings(QLatin1String("QtProject")); settings.beginGroup(QLatin1String("Qt")); QString currentstyle = settings.value(QLatin1String("style")).toString(); if (currentstyle.isEmpty()) { ui->guiStyleCombo->setCurrentIndex(ui->guiStyleCombo->findText(desktopThemeName)); currentstyle = QApplication::style()->objectName(); } else { int index = ui->guiStyleCombo->findText(currentstyle, Qt::MatchFixedString); if (index != -1) { ui->guiStyleCombo->setCurrentIndex(index); } else { // we give up ui->guiStyleCombo->addItem(tr("Unknown")); ui->guiStyleCombo->setCurrentIndex(ui->guiStyleCombo->count() - 1); } } ui->buttonMainColor->setColor(palette().color(QPalette::Active, QPalette::Button)); ui->buttonWindowColor->setColor(palette().color(QPalette::Active, QPalette::Window)); connect(ui->buttonMainColor, SIGNAL(colorChanged(QColor)), SLOT(buildPalette())); connect(ui->buttonWindowColor, SIGNAL(colorChanged(QColor)), SLOT(buildPalette())); #ifdef Q_WS_X11 if (X11->desktopEnvironment == DE_KDE) ui->colorConfig->hide(); else ui->kdeNoteLabel->hide(); #else ui->colorConfig->hide(); ui->kdeNoteLabel->hide(); #endif QFontDatabase db; QStringList families = db.families(); ui->fontFamilyCombo->addItems(families); QStringList fs = families; QStringList fs2 = QFont::substitutions(); QStringList::Iterator fsit = fs2.begin(); while (fsit != fs2.end()) { if (!fs.contains(*fsit)) fs += *fsit; fsit++; } fs.sort(); ui->familySubstitutionCombo->addItems(fs); ui->chooseSubstitutionCombo->addItems(families); QList<int> sizes = db.standardSizes(); foreach(int i, sizes) ui->pointSizeCombo->addItem(QString::number(i)); ui->doubleClickIntervalSpinBox->setValue(QApplication::doubleClickInterval()); ui->cursorFlashTimeSpinBox->setValue(QApplication::cursorFlashTime()); ui->wheelScrollLinesSpinBox->setValue(QApplication::wheelScrollLines()); // ############# // resolveLinksCheckBox->setChecked(qt_resolve_symlinks); ui->effectsCheckBox->setChecked(QApplication::isEffectEnabled(Qt::UI_General)); ui->effectsFrame->setEnabled(ui->effectsCheckBox->isChecked()); if (QApplication::isEffectEnabled(Qt::UI_FadeMenu)) ui->menuEffectCombo->setCurrentIndex(2); else if (QApplication::isEffectEnabled(Qt::UI_AnimateMenu)) ui->menuEffectCombo->setCurrentIndex(1); if (QApplication::isEffectEnabled(Qt::UI_AnimateCombo)) ui->comboEffectCombo->setCurrentIndex(1); if (QApplication::isEffectEnabled(Qt::UI_FadeTooltip)) ui->toolTipEffectCombo->setCurrentIndex(2); else if (QApplication::isEffectEnabled(Qt::UI_AnimateTooltip)) ui->toolTipEffectCombo->setCurrentIndex(1); if (QApplication::isEffectEnabled(Qt::UI_AnimateToolBox)) ui->toolBoxEffectCombo->setCurrentIndex(1); QSize globalStrut = QApplication::globalStrut(); ui->strutWidthSpinBox->setValue(globalStrut.width()); ui->strutHeightSpinBox->setValue(globalStrut.height()); // find the default family QStringList::Iterator sit = families.begin(); int i = 0, possible = -1; while (sit != families.end()) { if (*sit == QApplication::font().family()) break; if ((*sit).contains(QApplication::font().family())) possible = i; i++; sit++; } if (sit == families.end()) i = possible; if (i == -1) // no clue about the current font i = 0; ui->fontFamilyCombo->setCurrentIndex(i); QStringList styles = db.styles(ui->fontFamilyCombo->currentText()); ui->fontStyleCombo->addItems(styles); QString stylestring = db.styleString(QApplication::font()); sit = styles.begin(); i = 0; possible = -1; while (sit != styles.end()) { if (*sit == stylestring) break; if ((*sit).contains(stylestring)) possible = i; i++; sit++; } if (sit == styles.end()) i = possible; if (i == -1) // no clue about the current font i = 0; ui->fontStyleCombo->setCurrentIndex(i); i = 0; for (int psize = QApplication::font().pointSize(); i < ui->pointSizeCombo->count(); ++i) { const int sz = ui->pointSizeCombo->itemText(i).toInt(); if (sz == psize) { ui->pointSizeCombo->setCurrentIndex(i); break; } else if(sz > psize) { ui->pointSizeCombo->insertItem(i, QString::number(psize)); ui->pointSizeCombo->setCurrentIndex(i); break; } } QStringList subs = QFont::substitutes(ui->familySubstitutionCombo->currentText()); ui->substitutionsListBox->clear(); ui->substitutionsListBox->insertItems(0, subs); ui->rtlExtensionsCheckBox->setChecked(settings.value(QLatin1String("useRtlExtensions"), false) .toBool()); #ifdef Q_WS_X11 QString settingsInputStyle = settings.value(QLatin1String("XIMInputStyle")).toString(); if (!settingsInputStyle.isEmpty()) ui->inputStyleCombo->setCurrentIndex(ui->inputStyleCombo->findText(settingsInputStyle)); #else ui->inputStyleCombo->hide(); ui->inputStyleLabel->hide(); #endif #if defined(Q_WS_X11) && !defined(QT_NO_XIM) QStringList inputMethodCombo = QInputContextFactory::keys(); int inputMethodComboIndex = -1; QString defaultInputMethod = settings.value(QLatin1String("DefaultInputMethod"), QLatin1String("xim")).toString(); for (int i = inputMethodCombo.size()-1; i >= 0; --i) { const QString &im = inputMethodCombo.at(i); if (im.contains(QLatin1String("imsw"))) { inputMethodCombo.removeAt(i); if (inputMethodComboIndex > i) --inputMethodComboIndex; } else if (im == defaultInputMethod) { inputMethodComboIndex = i; } } if (inputMethodComboIndex == -1 && !inputMethodCombo.isEmpty()) inputMethodComboIndex = 0; ui->inputMethodCombo->addItems(inputMethodCombo); ui->inputMethodCombo->setCurrentIndex(inputMethodComboIndex); #else ui->inputMethodCombo->hide(); ui->inputMethodLabel->hide(); #endif ui->fontEmbeddingCheckBox->setChecked(settings.value(QLatin1String("embedFonts"), true) .toBool()); fontpaths = settings.value(QLatin1String("fontPath")).toStringList(); ui->fontpathListBox->insertItems(0, fontpaths); settings.endGroup(); // Qt ui->helpView->setText(tr(appearance_text)); setModified(false); updateStyleLayout(); }
MainWindow::MainWindow() : MainWindowBase(0, "main window"), editPalette(palette()), previewPalette(palette()), previewstyle(0) { modified = true; desktopThemeName = tr("Desktop Settings (Default)"); setIcon(QPixmap(":/trolltech/qtconfig/images/appicon.png")); QStringList gstyles = QStyleFactory::keys(); gstyles.sort(); gstylecombo->addItem(desktopThemeName); gstylecombo->setItemData(gstylecombo->findText(desktopThemeName), tr("Choose style and palette based on your desktop settings."), Qt::ToolTipRole); gstylecombo->insertStringList(gstyles); QSettings settings(QLatin1String("Trolltech")); settings.beginGroup(QLatin1String("Qt")); QString currentstyle = settings.value(QLatin1String("style")).toString(); if (currentstyle.isEmpty()) { gstylecombo->setCurrentItem(gstylecombo->findText(desktopThemeName)); currentstyle = QLatin1String(QApplication::style()->name()); } else { int index = gstylecombo->findText(currentstyle, Qt::MatchFixedString); if (index != -1) { gstylecombo->setCurrentItem(index); } else { // we give up gstylecombo->insertItem(QLatin1String("Unknown")); gstylecombo->setCurrentItem(gstylecombo->count() - 1); } } buttonMainColor->setColor(palette().color(QPalette::Active, QColorGroup::Button)); buttonMainColor2->setColor(palette().color(QPalette::Active, QColorGroup::Window)); connect(buttonMainColor, SIGNAL(colorChanged(QColor)), this, SLOT(buildPalette())); connect(buttonMainColor2, SIGNAL(colorChanged(QColor)), this, SLOT(buildPalette())); if (X11->desktopEnvironment == DE_KDE) colorConfig->hide(); else labelKDENote->hide(); QFontDatabase db; QStringList families = db.families(); familycombo->insertStringList(families); QStringList fs = families; QStringList fs2 = QFont::substitutions(); QStringList::Iterator fsit = fs2.begin(); while (fsit != fs2.end()) { if (! fs.contains(*fsit)) fs += *fsit; fsit++; } fs.sort(); familysubcombo->insertStringList(fs); choosesubcombo->insertStringList(families); Q3ValueList<int> sizes = db.standardSizes(); Q3ValueList<int>::Iterator it = sizes.begin(); while (it != sizes.end()) psizecombo->insertItem(QString::number(*it++)); dcispin->setValue(QApplication::doubleClickInterval()); cfispin->setValue(QApplication::cursorFlashTime()); wslspin->setValue(QApplication::wheelScrollLines()); // ############# // resolvelinks->setChecked(qt_resolve_symlinks); effectcheckbox->setChecked(QApplication::isEffectEnabled(Qt::UI_General)); effectbase->setEnabled(effectcheckbox->isChecked()); if (QApplication::isEffectEnabled(Qt::UI_FadeMenu)) menueffect->setCurrentItem(2); else if (QApplication::isEffectEnabled(Qt::UI_AnimateMenu)) menueffect->setCurrentItem(1); if (QApplication::isEffectEnabled(Qt::UI_AnimateCombo)) comboeffect->setCurrentItem(1); if (QApplication::isEffectEnabled(Qt::UI_FadeTooltip)) tooltipeffect->setCurrentItem(2); else if (QApplication::isEffectEnabled(Qt::UI_AnimateTooltip)) tooltipeffect->setCurrentItem(1); if ( QApplication::isEffectEnabled( Qt::UI_AnimateToolBox ) ) toolboxeffect->setCurrentItem( 1 ); QSize globalStrut = QApplication::globalStrut(); strutwidth->setValue(globalStrut.width()); strutheight->setValue(globalStrut.height()); // find the default family QStringList::Iterator sit = families.begin(); int i = 0, possible = -1; while (sit != families.end()) { if (*sit == QApplication::font().family()) break; if ((*sit).contains(QApplication::font().family())) possible = i; i++; sit++; } if (sit == families.end()) i = possible; if (i == -1) // no clue about the current font i = 0; familycombo->setCurrentItem(i); QStringList styles = db.styles(familycombo->currentText()); stylecombo->insertStringList(styles); QString stylestring = db.styleString(QApplication::font()); sit = styles.begin(); i = 0; possible = -1; while (sit != styles.end()) { if (*sit == stylestring) break; if ((*sit).contains(stylestring)) possible = i; i++; sit++; } if (sit == styles.end()) i = possible; if (i == -1) // no clue about the current font i = 0; stylecombo->setCurrentItem(i); i = 0; for (int psize = QApplication::font().pointSize(); i < psizecombo->count(); ++i) { const int sz = psizecombo->text(i).toInt(); if (sz == psize) { psizecombo->setCurrentItem(i); break; } else if(sz > psize) { psizecombo->insertItem(i, QString::number(psize)); psizecombo->setCurrentItem(i); break; } } QStringList subs = QFont::substitutes(familysubcombo->currentText()); sublistbox->clear(); sublistbox->insertStringList(subs); rtlExtensions->setChecked(settings.value(QLatin1String("useRtlExtensions"), false).toBool()); #ifdef Q_WS_X11 inputStyle->setCurrentText(settings.value(QLatin1String("XIMInputStyle"), trUtf8("On The Spot")).toString()); #else inputStyle->hide(); inputStyleLabel->hide(); #endif #if defined(Q_WS_X11) && !defined(QT_NO_XIM) QStringList inputMethods = QInputContextFactory::keys(); int inputMethodIndex = -1; QString defaultInputMethod = settings.value(QLatin1String("DefaultInputMethod"), QLatin1String("xim")).toString(); for (int i = inputMethods.size()-1; i >= 0; --i) { const QString &im = inputMethods.at(i); if (im.contains(QLatin1String("imsw"))) { inputMethods.removeAt(i); if (inputMethodIndex > i) --inputMethodIndex; } else if (im == defaultInputMethod) { inputMethodIndex = i; } } if (inputMethodIndex == -1 && !inputMethods.isEmpty()) inputMethodIndex = 0; inputMethod->addItems(inputMethods); inputMethod->setCurrentIndex(inputMethodIndex); #else inputMethod->hide(); inputMethodLabel->hide(); #endif fontembeddingcheckbox->setChecked(settings.value(QLatin1String("embedFonts"), true).toBool()); fontpaths = settings.value(QLatin1String("fontPath")).toStringList(); fontpathlistbox->insertStringList(fontpaths); audiosinkCombo->addItem(tr("Auto (default)"), QLatin1String("Auto")); audiosinkCombo->setItemData(audiosinkCombo->findText(tr("Auto (default)")), tr("Choose audio output automatically."), Qt::ToolTipRole); audiosinkCombo->addItem(tr("aRts"), QLatin1String("artssink")); audiosinkCombo->setItemData(audiosinkCombo->findText(tr("aRts")), tr("Experimental aRts support for GStreamer."), Qt::ToolTipRole); #ifdef HAVE_PHONON phononVersionLabel->setText(QLatin1String(Phonon::phononVersion())); #endif #ifndef QT_NO_GSTREAMER if (gst_init_check(0, 0, 0)) { gchar *versionString = gst_version_string(); gstversionLabel->setText(QLatin1String(versionString)); g_free(versionString); GList* factoryList = gst_registry_get_feature_list(gst_registry_get_default (), GST_TYPE_ELEMENT_FACTORY); QString name, klass, description; for (GList* iter = g_list_first(factoryList) ; iter != NULL ; iter = g_list_next(iter)) { GstPluginFeature *feature = GST_PLUGIN_FEATURE(iter->data); klass = QLatin1String(gst_element_factory_get_klass(GST_ELEMENT_FACTORY(feature))); if (klass == QLatin1String("Sink/Audio")) { name = QLatin1String(GST_PLUGIN_FEATURE_NAME(feature)); if (name == QLatin1String("sfsink")) continue; //useless to output audio to file when you cannot set the file path else if (name == QLatin1String("autoaudiosink")) continue; //This is used implicitly from the auto setting GstElement *sink = gst_element_factory_make (qPrintable(name), NULL); if (sink) { description = QLatin1String(gst_element_factory_get_description (GST_ELEMENT_FACTORY(feature))); audiosinkCombo->addItem(name, name); audiosinkCombo->setItemData(audiosinkCombo->findText(name), description, Qt::ToolTipRole); gst_object_unref (sink); } } } g_list_free(factoryList); } #else tab4->setEnabled(false); phononLabel->setText(tr("Phonon GStreamer backend not available.")); #endif videomodeCombo->addItem(tr("Auto (default)"), QLatin1String("Auto")); videomodeCombo->setItemData(videomodeCombo->findText(tr("Auto (default)")), tr("Choose render method automatically"), Qt::ToolTipRole); #ifdef Q_WS_X11 videomodeCombo->addItem(tr("X11"), QLatin1String("X11")); videomodeCombo->setItemData(videomodeCombo->findText(tr("X11")), tr("Use X11 Overlays"), Qt::ToolTipRole); #endif #ifndef QT_NO_OPENGL videomodeCombo->addItem(tr("OpenGL"), QLatin1String("OpenGL")); videomodeCombo->setItemData(videomodeCombo->findText(tr("OpenGL")), tr("Use OpenGL if available"), Qt::ToolTipRole); #endif videomodeCombo->addItem(tr("Software"), QLatin1String("Software")); videomodeCombo->setItemData(videomodeCombo->findText(tr("Software")), tr("Use simple software rendering"), Qt::ToolTipRole); QString audioSink = settings.value(QLatin1String("audiosink"), QLatin1String("Auto")).toString(); QString videoMode = settings.value(QLatin1String("videomode"), QLatin1String("Auto")).toString(); audiosinkCombo->setCurrentItem(audiosinkCombo->findData(audioSink)); videomodeCombo->setCurrentItem(videomodeCombo->findData(videoMode)); settings.endGroup(); // Qt helpview->setText(tr(appearance_text)); setModified(false); updateStyleLayout(); }