1
/* This file is part of KNemo
2
Copyright (C) 2010 John Stamp <jstamp@users.sourceforge.net>
4
KNemo is free software; you can redistribute it and/or modify
5
it under the terms of the GNU Library General Public License as
6
published by the Free Software Foundation; either version 2 of
7
the License, or (at your option) any later version.
9
KNemo is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU Library General Public License for more details.
14
You should have received a copy of the GNU Library General Public License
15
along with this library; see the file COPYING.LIB. If not, write to
16
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17
Boston, MA 02110-1301, USA.
20
#include "statsconfig.h"
21
#include <KCalendarSystem>
22
#include <KMessageBox>
24
StatsConfig::StatsConfig( const InterfaceSettings * settings, const KCalendarSystem *calendar, const StatsRule &rule, bool addRule ) : KDialog(),
25
mSettings( settings ),
29
// Do this for the sake of KDateEdit
30
KGlobal::locale()->setCalendar( mCal->calendarType() );
32
mDlg.setupUi( mainWidget() );
33
setButtons( KDialog::Default | KDialog::Ok | KDialog::Cancel );
35
for ( int i = 1; i <= mCal->daysInWeek( QDate::currentDate() ); ++i )
37
mDlg.weekendStartDay->addItem( mCal->weekDayName( i ) );
38
mDlg.weekendStopDay->addItem( mCal->weekDayName( i ) );
41
mDlg.periodUnits->addItem( i18n( "Days" ), KNemoStats::Day );
42
mDlg.periodUnits->addItem( i18n( "Weeks" ), KNemoStats::Week );
43
mDlg.periodUnits->addItem( i18n( "Months" ), KNemoStats::Month );
44
//mDlg.periodUnits->addItem( i18n( "Years" ), KNemoStats::Year );
46
connect( this, SIGNAL( defaultClicked() ), SLOT( setDefaults() ) );
47
connect( mDlg.logOffpeak, SIGNAL( toggled( bool ) ), SLOT( enableItems() ) );
48
connect( mDlg.doWeekend, SIGNAL( toggled( bool ) ), SLOT( enableItems() ) );
50
QDate dt = rule.startDate;
52
dt = QDate::currentDate().addDays( 1 - mCal->day( QDate::currentDate() ) );
53
mDlg.startDate->setDate( dt );
57
void StatsConfig::setControls( const StatsRule &s )
59
mDlg.periodCount->setValue( s.periodCount );
60
int index = mDlg.periodUnits->findData( s.periodUnits );
61
mDlg.periodUnits->setCurrentIndex( index );
62
mDlg.logOffpeak->setChecked( s.logOffpeak );
63
mDlg.startTime->setTime( s.offpeakStartTime );
64
mDlg.stopTime->setTime( s.offpeakEndTime );
65
mDlg.doWeekend->setChecked( s.weekendIsOffpeak );
66
mDlg.weekendStartDay->setCurrentIndex( s.weekendDayStart - 1 );
67
mDlg.weekendStopDay->setCurrentIndex( s.weekendDayEnd - 1 );
68
mDlg.weekendStartTime->setTime( s.weekendTimeStart );
69
mDlg.weekendStopTime->setTime( s.weekendTimeEnd );
72
void StatsConfig::setDefaults()
75
mDlg.startDate->setDate( QDate::currentDate().addDays( 1 - mCal->day( QDate::currentDate() ) ) );
79
StatsRule StatsConfig::settings()
82
rule.startDate = mDlg.startDate->date();
83
rule.periodUnits = mDlg.periodUnits->itemData( mDlg.periodUnits->currentIndex() ).toInt();
84
rule.periodCount = mDlg.periodCount->value();
85
rule.logOffpeak = mDlg.logOffpeak->isChecked();
86
rule.offpeakStartTime = mDlg.startTime->time();
87
rule.offpeakEndTime = mDlg.stopTime->time();
88
rule.weekendIsOffpeak = mDlg.doWeekend->isChecked();
89
rule.weekendDayStart = mDlg.weekendStartDay->currentIndex() + 1;
90
rule.weekendDayEnd = mDlg.weekendStopDay->currentIndex() + 1;
91
rule.weekendTimeStart = mDlg.weekendStartTime->time();
92
rule.weekendTimeEnd = mDlg.weekendStopTime->time();
96
void StatsConfig::enableItems()
99
if ( mDlg.logOffpeak->isChecked() && mDlg.doWeekend->isChecked() )
105
enabledItems = false;
108
mDlg.label_9->setEnabled( enabledItems );
109
mDlg.label_10->setEnabled( enabledItems );
110
mDlg.weekendStartDay->setEnabled( enabledItems );
111
mDlg.weekendStopDay->setEnabled( enabledItems );
112
mDlg.weekendStartTime->setEnabled( enabledItems );
113
mDlg.weekendStopTime->setEnabled( enabledItems );
116
void StatsConfig::slotButtonClicked( int button )
118
if ( mAddRule && ( (button == Ok) || (button == Apply) ) )
120
bool duplicateEntry = false;
121
StatsRule testRule = settings();
122
QList<StatsRule> statsRules = mSettings->statsRules;
123
foreach ( StatsRule rule, statsRules )
125
if ( rule == testRule )
127
duplicateEntry = true;
131
if ( duplicateEntry )
132
KMessageBox::sorry( 0,
133
i18n( "Another rule already starts on %1. "
134
"Please choose another date.",
135
mCal->formatDate( mDlg.startDate->date(), KLocale::LongDate ) )
138
KDialog::slotButtonClicked( button );
141
KDialog::slotButtonClicked( button );
144
#include "statsconfig.moc"