kde-extraapps/ksystemlog/src/generalConfigurationWidget.cpp

149 lines
5.5 KiB
C++

/***************************************************************************
* KSystemLog, a system log viewer tool *
* Copyright (C) 2007 by Nicolas Ternisien *
* nicolas.ternisien@gmail.com *
* *
* 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 "generalConfigurationWidget.h"
#include <QCheckBox>
#include <QPushButton>
#include <QButtonGroup>
#include <klocale.h>
#include <kiconloader.h>
#include <kstandarddirs.h>
#include "logging.h"
#include "defaults.h"
#include "globals.h"
#include "ksystemlogConfig.h"
class GeneralConfigurationWidgetPrivate {
public:
QButtonGroup* dateFormatGroup;
};
GeneralConfigurationWidget::GeneralConfigurationWidget() :
QWidget(),
d(new GeneralConfigurationWidgetPrivate())
{
setupUi(this);
startupLogMode->addItem(KIcon( QLatin1String( NO_MODE_ICON) ), i18n("No Log Mode"), QVariant(QLatin1String( "" ) ));
foreach(LogMode* logMode, Globals::instance()->logModes()) {
//Ignore this special case
if (logMode->id() == QLatin1String( "openLogMode" ))
continue;
startupLogMode->addItem(KIcon(logMode->icon()), logMode->name(), QVariant(logMode->id()));
}
connect(startupLogMode, SIGNAL(currentIndexChanged(int)), this, SIGNAL(configurationChanged()));
connect(maxLines, SIGNAL(valueChanged(int)), this, SIGNAL(configurationChanged()));
connect(deleteDuplicatedLines, SIGNAL(clicked()), this, SIGNAL(configurationChanged()));
connect(deleteProcessId, SIGNAL(clicked()), this, SIGNAL(configurationChanged()));
connect(colorizeLogLines, SIGNAL(clicked()), this, SIGNAL(configurationChanged()));
d->dateFormatGroup = new QButtonGroup(this);
d->dateFormatGroup->addButton(formatShortDate, KLocale::ShortDate);
d->dateFormatGroup->addButton(formatLongDate, KLocale::LongDate);
d->dateFormatGroup->addButton(formatFancyShortDate, KLocale::FancyShortDate);
d->dateFormatGroup->addButton(formatFancyLongDate, KLocale::FancyLongDate);
connect(d->dateFormatGroup, SIGNAL(buttonClicked(int)), this, SIGNAL(configurationChanged()));
addDateFormatExample();
}
GeneralConfigurationWidget::~GeneralConfigurationWidget() {
//dateFormatGroup is automatically deleted by Qt
delete d;
}
void GeneralConfigurationWidget::addDateFormatExample() {
foreach(QAbstractButton* button, d->dateFormatGroup->buttons()) {
QDateTime currentDateTime(QDateTime::currentDateTime());
KLocale::DateFormat currentButtonFormat = (KLocale::DateFormat) d->dateFormatGroup->id(button);
QString formattedDate = KGlobal::locale()->formatDateTime(currentDateTime, currentButtonFormat, true);
button->setText( i18nc("Date format Option (Date example)", "%1 (%2)", button->text(), formattedDate) );
}
}
void GeneralConfigurationWidget::readConfig() {
for (int i=0; i<startupLogMode->count(); ++i) {
if (KSystemLogConfig::startupLogMode() == startupLogMode->itemData(i)) {
startupLogMode->setCurrentIndex(i);
break;
}
}
maxLines->setValue(KSystemLogConfig::maxLines());
deleteDuplicatedLines->setChecked(KSystemLogConfig::deleteDuplicatedLines());
deleteProcessId->setChecked(KSystemLogConfig::deleteProcessIdentifier());
colorizeLogLines->setChecked(KSystemLogConfig::colorizeLogLines());
KLocale::DateFormat dateFormat = (KLocale::DateFormat) KSystemLogConfig::dateFormat();
QAbstractButton* selectedButton = d->dateFormatGroup->button(dateFormat);
selectedButton->setChecked(true);
}
void GeneralConfigurationWidget::saveConfig() const {
logDebug() << "Save config from General preferences" << endl;
KSystemLogConfig::setStartupLogMode(startupLogMode->itemData(startupLogMode->currentIndex()).toString());
KSystemLogConfig::setMaxLines(maxLines->value());
KSystemLogConfig::setDeleteDuplicatedLines(deleteDuplicatedLines->isChecked());
KSystemLogConfig::setDeleteProcessIdentifier(deleteProcessId->isChecked());
KSystemLogConfig::setColorizeLogLines(colorizeLogLines->isChecked());
KSystemLogConfig::setDateFormat(d->dateFormatGroup->checkedId());
}
void GeneralConfigurationWidget::defaultConfig() {
//TODO Find a way to read the configuration per default
readConfig();
}
bool GeneralConfigurationWidget::isValid() const {
if (maxLines->value()>0) {
logDebug() << "General configuration valid" << endl;
return true;
}
logDebug() << "General configuration not valid" << endl;
return false;
}
#include "generalConfigurationWidget.moc"