bool ColorSchemeManager::loadColorScheme( const QString &filePath ) { if ( !filePath.endsWith( QLatin1String( ".colorscheme" ) ) || !QFile::exists( filePath ) ) return false; QFileInfo info( filePath ); const QString &schemeName = info.baseName(); ColorScheme *scheme = new ColorScheme(); scheme->setName( schemeName ); scheme->read( filePath ); if ( scheme->name().isEmpty() ) { qDebug() << "Color scheme in" << filePath << "does not have a valid name and was not loaded."; delete scheme; return false; } if ( !_colorSchemes.contains( schemeName ) ) { _colorSchemes.insert( schemeName, scheme ); } else { qDebug() << "color scheme with name" << schemeName << "has already been" << "found, ignoring."; delete scheme; } return true; }
bool ColorSchemeManager::loadKDE3ColorScheme( const QString &filePath ) { QFile file( filePath ); if ( !filePath.endsWith( QLatin1String( ".schema" ) ) || !file.open( QIODevice::ReadOnly ) ) return false; KDE3ColorSchemeReader reader( &file ); ColorScheme *scheme = reader.read(); scheme->setName( QFileInfo( file ).baseName() ); file.close(); if ( scheme->name().isEmpty() ) { qDebug() << "color scheme name is not valid."; delete scheme; return false; } QFileInfo info( filePath ); if ( !_colorSchemes.contains( info.baseName() ) ) _colorSchemes.insert( scheme->name(), scheme ); else { qDebug() << "color scheme with name" << scheme->name() << "has already been" << "found, ignoring."; delete scheme; } return true; }
void SettingsDialog::updateSchemeButton_clicked() { int index; QString oldName = schemeComboBox->currentText(); QString newName = schemeLineEdit->text(); if (schemeComboBox->currentIndex() > 1) { // Edit scheme if (newName != oldName) { if (ColorScheme::lookupScheme(newName) == true) goto conflict; index = schemeComboBox->currentIndex(); schemeComboBox->setItemText(index, newName); } for (int i = 0; i < globalSettings.colorSchemes.size(); i++) { if (oldName == globalSettings.colorSchemes[i].name()) { globalSettings.colorSchemes[i].setName(newName); updateSchemeColors(&globalSettings.colorSchemes[i]); break; } } } else if (schemeComboBox->currentIndex() == 1) { // New Scheme if (ColorScheme::lookupScheme(newName) == true) goto conflict; ColorScheme scheme; my.newScheme = newName; scheme.setName(newName); updateSchemeColors(&scheme); index = globalSettings.colorSchemes.size(); globalSettings.colorSchemes.append(scheme); pmchart->newScheme(my.newScheme); schemeComboBox->blockSignals(true); schemeComboBox->addItem(newName); schemeComboBox->setCurrentIndex(index + 2); schemeComboBox->blockSignals(false); } else if (schemeComboBox->currentIndex() == 0) { // Default updateSchemeColors(&globalSettings.defaultScheme); } globalSettings.colorSchemesModified = true; writeSettings(); return; conflict: QString msg = newName; msg.prepend("New scheme name \""); msg.append("\" conflicts with an existing name"); QMessageBox::warning(this, pmProgname, msg); }
void EditProfileDialog::showColorSchemeEditor(bool isNewScheme) { QModelIndexList selected = _ui->colorSchemeList->selectionModel()->selectedIndexes(); QAbstractItemModel* model = _ui->colorSchemeList->model(); const ColorScheme* colors = 0; if ( !selected.isEmpty() ) colors = model->data(selected.first(),Qt::UserRole+1).value<const ColorScheme*>(); else colors = ColorSchemeManager::instance()->defaultColorScheme(); Q_ASSERT(colors); KDialog* dialog = new KDialog(this); if ( isNewScheme ) dialog->setCaption(i18n("New Color Scheme")); else dialog->setCaption(i18n("Edit Color Scheme")); ColorSchemeEditor* editor = new ColorSchemeEditor; dialog->setMainWidget(editor); editor->setup(colors); if ( isNewScheme ) editor->setDescription(i18n("New Color Scheme")); if ( dialog->exec() == QDialog::Accepted ) { ColorScheme* newScheme = new ColorScheme(*editor->colorScheme()); // if this is a new color scheme, pick a name based on the description if ( isNewScheme ) newScheme->setName(newScheme->description()); ColorSchemeManager::instance()->addColorScheme( newScheme ); updateColorSchemeList(true); preview(Profile::ColorScheme,newScheme->name()); } }