summaryrefslogtreecommitdiff
path: root/gui/Settings/PkSettings.cpp
blob: d0ed21b411f6f8d769fa846fae4ec7d7983adfcc (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/***************************************************************************
 *   Copyright (C) 2008 by Daniel Nicoletti   *
 *   dantti85-pk@yahoo.com.br   *
 *                                                                         *
 *   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.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

#include "PkSettings.h"
#include <KDebug>
#include <KConfig>
#include <KLocale>

#define HOURLY 3600
#define DAILY 86400
#define WEEKLY 604800
#define MONTHLY 2628000
#define NEVER 0
 
PkSettings::PkSettings( QWidget *parent ) : QWidget( parent )
{
    setupUi( this );

    // Create a new daemon
    m_daemon = new Daemon(this);

    uint actions = m_daemon->getActions();

    if ( !(actions & Actions::Refresh_cache) ) {
        intervalL->setEnabled(false);
	intervalCB->setEnabled(false);
    }

    intervalCB->addItem(i18n("Hourly"), HOURLY );
    intervalCB->addItem(i18n("Daily"), DAILY );
    intervalCB->addItem(i18n("Weekly"), WEEKLY );
    intervalCB->addItem(i18n("Monthly"), MONTHLY );
    intervalCB->addItem(i18n("Never"), NEVER );

    connect( notifyUpdatesCB, SIGNAL( stateChanged(int) ), this, SLOT( checkChanges(int) ) );
    connect( notifyLongTasksCB, SIGNAL( stateChanged(int) ), this, SLOT( checkChanges(int) ) );
    connect( intervalCB, SIGNAL( currentIndexChanged(int) ), this, SLOT( checkChanges(int) ) );
}

void PkSettings::checkChanges(int)
{
    KConfig config("KPackageKit");
    KConfigGroup smartIconGroup( &config, "SmartIcon" );
    KConfigGroup checkUpdateGroup( &config, "CheckUpdate" );
    if ( notifyUpdatesCB->checkState() !=
         (Qt::CheckState) smartIconGroup.readEntry( "notifyUpdatesCB", (int) Qt::Checked)
        ||
         notifyLongTasksCB->checkState() !=
         (Qt::CheckState) smartIconGroup.readEntry( "notifyLongTasksCB", (int) Qt::Checked)
	||
	 intervalCB->itemData( intervalCB->currentIndex() ).toUInt() !=
	 (uint) checkUpdateGroup.readEntry( "interval", DAILY ) )
        emit(changed(true));
    else
        emit(changed(false));
}

void PkSettings::load()
{
    KConfig config("KPackageKit");
    KConfigGroup smartIconGroup( &config, "SmartIcon" );
    notifyUpdatesCB->setCheckState( (Qt::CheckState) smartIconGroup.readEntry( "notifyUpdatesCB",
        (int) Qt::Checked) );
    notifyLongTasksCB->setCheckState( (Qt::CheckState) smartIconGroup.readEntry( "notifyLongTasksCB",
        (int) Qt::Checked) );
    KConfigGroup checkUpdateGroup( &config, "CheckUpdate" );
    uint interval = checkUpdateGroup.readEntry( "interval", DAILY );
    int ret = intervalCB->findData(interval);
    if ( ret == -1 ) {
        // this is if someone change the file by hand...
        intervalCB->addItem( KGlobal::locale()->formatDuration(interval * 1000), interval );
	intervalCB->setCurrentIndex( intervalCB->count() - 1 );
    }
    else
        intervalCB->setCurrentIndex(ret);
}

void PkSettings::save()
{
    KConfig config("KPackageKit");
    KConfigGroup smartIconGroup( &config, "SmartIcon" );
    smartIconGroup.writeEntry( "notifyUpdatesCB", (int) notifyUpdatesCB->checkState() );
    smartIconGroup.writeEntry( "notifyLongTasksCB", (int) notifyLongTasksCB->checkState() );
    KConfigGroup checkUpdateGroup( &config, "CheckUpdate" );
    checkUpdateGroup.writeEntry( "interval", intervalCB->itemData( intervalCB->currentIndex() ).toUInt() );
}

void PkSettings::defaults()
{
    notifyUpdatesCB->setCheckState(Qt::Checked);
    notifyLongTasksCB->setCheckState(Qt::Checked);
    intervalCB->setCurrentIndex( intervalCB->findData(DAILY) );
    emit(checkChanges(0));
}

#include "PkSettings.moc"