summaryrefslogtreecommitdiffstats
path: root/kcontrol/kicker/lookandfeelconfig.cpp
blob: af451421ef3512d3d6a3846295829e2c4e69ae24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
 *  Copyright (c) 2005      Stefan Nikolaus <stefan.nikolaus@kdemail.net>
 *
 *  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
 */

#include <tqlayout.h>
#include <tqtimer.h>

#include <tdelocale.h>
#include <kdebug.h>

#include "lookandfeeltab_impl.h"
#include "kickerSettings.h"
#include "main.h"

#include "lookandfeelconfig.h"
#include "lookandfeelconfig.moc"

LookAndFeelConfig::LookAndFeelConfig(TQWidget *parent, const char *name)
  : TDECModule(parent, name)
{
    TQVBoxLayout *layout = new TQVBoxLayout(this);
    m_widget = new LookAndFeelTab(this);
    layout->addWidget(m_widget);
    layout->addStretch();

    setQuickHelp(KickerConfig::the()->quickHelp());
    setAboutData(KickerConfig::the()->aboutData());

    addConfig(KickerSettings::self(), m_widget);

    connect(m_widget, TQT_SIGNAL(changed()),
            this, TQT_SLOT(changed()));
    connect(KickerConfig::the(), TQT_SIGNAL(aboutToNotifyKicker()),
            this, TQT_SLOT(aboutToNotifyKicker()));

    load();
    TQTimer::singleShot(0, this, TQT_SLOT(notChanged()));
}

void LookAndFeelConfig::notChanged()
{
    emit changed(false);
}

void LookAndFeelConfig::load()
{
    TDECModule::load();
    m_widget->load();
}

void LookAndFeelConfig::aboutToNotifyKicker()
{
    kdDebug() << "LookAndFeelConfig::aboutToNotifyKicker()" << endl;

    // This slot is triggered by the signal,
    // which is send before Kicker is notified.
    // See comment in save().
    TDECModule::save();
    m_widget->save();
}

void LookAndFeelConfig::save()
{
    // As we don't want to notify Kicker multiple times
    // we do not save the settings here. Instead the
    // KickerConfig object sends a signal before the
    // notification. On this signal all existing modules,
    // including this object, save their settings.
    KickerConfig::the()->notifyKicker();
}

void LookAndFeelConfig::defaults()
{
    TDECModule::defaults();
    m_widget->defaults();

    // TDEConfigDialogManager may queue an changed(false) signal,
    // so we make sure, that the module is labeled as changed,
    // while we manage some of the widgets ourselves
    TQTimer::singleShot(0, this, TQT_SLOT(changed()));
}