/** * smartcard.cpp * * Copyright (c) 2001 George Staikos * Copyright (c) 2001 Fernando Llobregat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "iccconfig.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /**** DLL Interface ****/ typedef KGenericFactory KICCCFactory; K_EXPORT_COMPONENT_FACTORY( kcm_iccconfig, KICCCFactory("kcmiccconfig") ) KSimpleConfig *config; /**** KICCConfig ****/ KICCConfig::KICCConfig(QWidget *parent, const char *name, const QStringList &) : KCModule(KICCCFactory::instance(), parent, name) { QVBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); config = new KSimpleConfig( QString::fromLatin1( KDE_CONFDIR "/kicc/kiccconfigrc" )); KAboutData *about = new KAboutData(I18N_NOOP("kcmiccconfig"), I18N_NOOP("KDE ICC Profile Control Module"), 0, 0, KAboutData::License_GPL, I18N_NOOP("(c) 2009,2010 Timothy Pearson")); about->addAuthor("Timothy Pearson", 0, "kb9vqf@pearsoncomputing.net"); setAboutData( about ); base = new ICCConfigBase(this); layout->add(base); setRootOnlyMsg(i18n("The ICC color profile is a system wide setting, and requires administrator access
To alter the system's ICC profile, click on the \"Administrator Mode\" button below.")); setUseRootOnlyMsg(true); connect(base->enableSupport, SIGNAL(clicked()), SLOT(changed())); connect(base->enableSupport, SIGNAL(toggled(bool)), base->iccFile, SLOT(setEnabled(bool))); connect(base->iccFile, SIGNAL(textChanged(const QString&)), SLOT(changed())); load(); if (getuid() != 0 || !config->checkConfigFilesWritable( true )) { base->enableSupport->setEnabled(false); base->iccFile->setEnabled(false); } } KICCConfig::~KICCConfig() { delete config; } void KICCConfig::load() { load( false ); } void KICCConfig::load(bool useDefaults ) { //Update the toggle buttons with the current configuration config->setReadDefaults( useDefaults ); base->enableSupport->setChecked(config->readBoolEntry("EnableICC", false)); base->iccFile->setEnabled(config->readBoolEntry("EnableICC", false)); base->iccFile->setURL(config->readEntry("ICCFile")); emit changed(useDefaults); } void KICCConfig::save() { config->writeEntry("EnableICC", base->enableSupport->isChecked()); config->writeEntry("ICCFile", base->iccFile->url()); if (base->enableSupport->isChecked()) { // Apply ICC settings with XCalib string icc_command="/usr/bin/xcalib "; FILE *pipe_xcalib; char xcalib_result[2048]; int i; xcalib_result[0]=0; icc_command.append(base->iccFile->url().ascii()); if ((pipe_xcalib = popen(icc_command.c_str(), "r")) == NULL) { printf("Xcalib pipe error\n\r"); } else { fgets(xcalib_result, 2048, pipe_xcalib); pclose(pipe_xcalib); for (i=1;i<2048;i++) { if (xcalib_result[i] == 0) { xcalib_result[i-1]=0; i=2048; } } if (strlen(xcalib_result) > 2) { KMessageBox::error(this, QString("Unable to apply ICC configuration:\n\r%1").arg(xcalib_result)); } } } emit changed(false); } void KICCConfig::defaults() { load( true ); } QString KICCConfig::quickHelp() const { return i18n("

ICC Profile Configuration

This module allows you to configure KDE support" " for ICC profiles. This allows you to easily color correct your monitor" " for a more lifelike and vibrant image."); } #include "iccconfig.moc"