72
static QString periodText( int c, int u )
77
case KNemoStats::Hour:
78
units = i18np( "%1 hour", "%1 hours", c );
81
units = i18np( "%1 day", "%1 days", c );
83
case KNemoStats::Week:
84
units = i18np( "%1 week", "%1 weeks", c );
86
case KNemoStats::Month:
87
units = i18np( "%1 month", "%1 months", c );
89
case KNemoStats::BillPeriod:
90
units = i18np( "%1 billing period", "%1 billing periods", c );
92
case KNemoStats::Year:
93
units = i18np( "%1 year", "%1 years", c );
96
units = i18n( "Invalid period" );
102
void StatsRuleModel::setCalendar( const KCalendarSystem *cal )
107
QString StatsRuleModel::dateText( const StatsRule &s )
109
QString dateStr = mCalendar->formatDate( s.startDate, KLocale::LongDate );
110
if ( !mCalendar->isValid( s.startDate ) )
111
dateStr = i18n( "Invalid Date" );
115
QList<StatsRule> StatsRuleModel::getRules()
117
QList<StatsRule> statsRules;
118
for ( int i = 0; i < rowCount(); ++i )
120
statsRules << item( i, 0 )->data( Qt::UserRole ).value<StatsRule>();
125
QModelIndex StatsRuleModel::addRule( const StatsRule &s )
127
QList<QStandardItem*> items;
128
QStandardItem *item = new QStandardItem( dateText( s ) );
131
item->setData( v, Qt::UserRole );
132
item->setData( s.startDate, Qt::UserRole + 1 );
135
item = new QStandardItem( periodText( s.periodCount, s.periodUnits ) );
138
return indexFromItem (items[0] );
141
void StatsRuleModel::modifyRule( const QModelIndex &index, const StatsRule &s )
145
item( index.row(), 0 )->setData( v, Qt::UserRole );
146
item( index.row(), 0 )->setData( s.startDate, Qt::UserRole + 1 );
147
item( index.row(), 0 )->setData( dateText( s ), Qt::DisplayRole );
148
item( index.row(), 1 )->setData( periodText( s.periodCount, s.periodUnits ), Qt::DisplayRole );
151
QString WarnModel::ruleText( const WarnRule &warn )
154
switch ( warn.trafficType )
156
case KNemoStats::Peak:
157
warnType = i18n( "peak" );
159
case KNemoStats::Offpeak:
160
warnType = i18n( "off-peak" );
162
QString warnDirection;
163
switch ( warn.trafficDirection )
165
case KNemoStats::TrafficIn:
166
warnDirection = i18n( "incoming" );
168
case KNemoStats::TrafficOut:
169
warnDirection = i18n( "outgoing" );
171
case KNemoStats::TrafficTotal:
172
warnDirection = i18n( "incoming and outgoing" );
174
quint64 siz = warn.threshold * pow( 1024, warn.trafficUnits );
175
QString text = QString( "%1 %2 traffic > %3" ).arg( warnType ).arg( warnDirection )
176
.arg( KIO::convertSize( siz ) );
177
return text.simplified();
180
QList<WarnRule> WarnModel::getRules()
182
QList<WarnRule> warnRules;
183
for ( int i = 0; i < rowCount(); ++i )
185
warnRules << item( i, 0 )->data( Qt::UserRole ).value<WarnRule>();
190
QModelIndex WarnModel::addWarn( const WarnRule &warn )
192
QList<QStandardItem*> items;
193
QStandardItem *item = new QStandardItem( ruleText( warn ) );
196
item->setData( v, Qt::UserRole );
198
item = new QStandardItem( periodText( warn.periodCount, warn.periodUnits ) );
201
return indexFromItem( items[0] );
204
void WarnModel::modifyWarn( const QModelIndex &index, const WarnRule &warn )
208
item( index.row(), 0 )->setData( v, Qt::UserRole );
209
item( index.row(), 0 )->setData( ruleText( warn ), Qt::DisplayRole );
210
item( index.row(), 1 )->setData( periodText( warn.periodCount, warn.periodUnits ), Qt::DisplayRole );
65
214
ConfigDialog::ConfigDialog( QWidget *parent, const QVariantList &args )
66
215
: KCModule( KNemoFactory::componentData(), parent, args ),
68
mDlg( new Ui::ConfigDlg() )
217
mDlg( new Ui::ConfigDlg() ),
70
220
if ( KDE::versionMajor() >= 4 && KDE::versionMinor() >= 4 )
71
221
mDefaultCalendarType = KGlobal::locale()->calendarType();
80
230
QVBoxLayout* top = new QVBoxLayout( this );
81
231
mDlg->setupUi( main );
82
232
top->addWidget( main );
233
statsModel = new StatsRuleModel( this );
235
l << i18n( "Start Date" ) << i18n( "Period" );
236
statsModel->setHorizontalHeaderLabels( l );
237
QSortFilterProxyModel *proxy = new QSortFilterProxyModel( mDlg->statsView );
238
proxy->setSourceModel( statsModel );
239
proxy->setSortRole( Qt::UserRole + 1 );
240
mDlg->statsView->setModel( proxy );
241
mDlg->statsView->sortByColumn( 0, Qt::AscendingOrder );
243
warnModel = new WarnModel( this );
245
l << i18n( "Alert" ) << i18n( "Period" );
246
warnModel->setHorizontalHeaderLabels( l );
247
mDlg->warnView->setModel( warnModel );
84
249
QList<KNemoTheme> themes = findThemes();
85
250
qSort( themes.begin(), themes.end(), themesLessThan );
108
273
mDlg->comboBoxIconTheme->addItem( netloadTheme.name, QVariant::fromValue( netloadTheme ) );
109
274
mDlg->comboBoxIconTheme->addItem( textTheme.name, QVariant::fromValue( textTheme ) );
111
mDlg->warnType->addItem( i18n( "Hour" ), NotifyHour );
112
mDlg->warnType->addItem( i18n( "Day" ), NotifyDay );
113
mDlg->warnType->addItem( i18n( "Month" ), NotifyMonth );
114
mDlg->warnType->addItem( i18n( "Rolling 24 hours" ), NotifyRoll24Hour );
115
mDlg->warnType->addItem( i18n( "Rolling 7 days" ), NotifyRoll7Day );
116
mDlg->warnType->addItem( i18n( "Rolling 30 days" ), NotifyRoll30Day );
118
mDlg->warnUnits->addItem( i18n( "MiB" ), 2 );
119
mDlg->warnUnits->addItem( i18n( "GiB" ), 3 );
121
276
InterfaceSettings s;
122
277
int index = findIndexFromName( s.iconTheme );
179
334
// Interface - Statistics
180
335
connect( mDlg->checkBoxStatistics, SIGNAL( toggled( bool ) ),
181
336
this, SLOT( checkBoxStatisticsToggled ( bool ) ) );
182
connect( mDlg->checkBoxCustomBilling, SIGNAL( toggled( bool ) ),
183
this, SLOT( checkBoxCustomBillingToggled( bool ) ) );
184
connect( mDlg->billingStartInput, SIGNAL( dateEntered( const QDate& ) ),
185
this, SLOT( billingStartInputChanged( const QDate& ) ) );
186
connect( mDlg->billingMonthsInput, SIGNAL( valueChanged( int ) ),
187
this, SLOT( billingMonthsInputChanged( int ) ) );
188
connect( mDlg->warnThreshold, SIGNAL( valueChanged( double ) ),
189
this, SLOT( warnThresholdChanged ( double ) ) );
190
connect( mDlg->warnUnits, SIGNAL( activated( int ) ),
191
this, SLOT( warnUnitsChanged( int ) ) );
192
connect( mDlg->warnType, SIGNAL( activated( int ) ),
193
this, SLOT( warnTypeChanged( int ) ) );
194
connect( mDlg->warnRxTx, SIGNAL( toggled( bool ) ),
195
this, SLOT( warnRxTxToggled ( bool ) ) );
337
connect( mDlg->addStats, SIGNAL( clicked() ),
338
this, SLOT( addStatsClicked() ) );
339
connect( mDlg->modifyStats, SIGNAL( clicked() ),
340
this, SLOT( modifyStatsClicked() ) );
341
connect( mDlg->removeStats, SIGNAL( clicked() ),
342
this, SLOT( removeStatsClicked() ) );
343
connect( mDlg->addWarn, SIGNAL( clicked() ),
344
this, SLOT( addWarnClicked() ) );
345
connect( mDlg->modifyWarn, SIGNAL( clicked() ),
346
this, SLOT( modifyWarnClicked() ) );
347
connect( mDlg->removeWarn, SIGNAL( clicked() ),
348
this, SLOT( removeWarnClicked() ) );
197
350
// Interface - Context Menu
198
351
connect( mDlg->listViewCommands, SIGNAL( currentItemChanged( QTreeWidgetItem*, QTreeWidgetItem* ) ),
296
433
settings->barScale = interfaceGroup.readEntry( conf_barScale, s.barScale );
297
434
settings->inMaxRate = interfaceGroup.readEntry( conf_inMaxRate, s.inMaxRate );
298
435
settings->outMaxRate = interfaceGroup.readEntry( conf_outMaxRate, s.outMaxRate );
436
settings->calendar = interfaceGroup.readEntry( conf_calendar, mDefaultCalendarType );
299
437
settings->activateStatistics = interfaceGroup.readEntry( conf_activateStatistics, s.activateStatistics );
300
settings->customBilling = interfaceGroup.readEntry( conf_customBilling, s.customBilling );
301
settings->calendar = interfaceGroup.readEntry( conf_calendar, mDefaultCalendarType );
302
settings->billingMonths = clamp<int>(interfaceGroup.readEntry( conf_billingMonths, s.billingMonths ), 1, 6 );
303
settings->warnThreshold = clamp<double>(interfaceGroup.readEntry( conf_billingWarnThresh, s.warnThreshold ), 0.0, 9999.0 );
304
settings->warnUnits = clamp<int>(interfaceGroup.readEntry( conf_billingWarnUnits, s.warnUnits ), 2, 3 );
305
settings->warnType = clamp<int>(interfaceGroup.readEntry( conf_billingWarnType, s.warnType ), 0, 5 );
306
settings->warnTotalTraffic = interfaceGroup.readEntry( conf_billingWarnRxTx, s.warnTotalTraffic );
308
// If no start date saved, default to first of month.
309
mCalendar = KCalendarSystem::create( settings->calendar );
310
QDate startDate = QDate::currentDate().addDays( 1 - mCalendar->day( QDate::currentDate() ) );
311
settings->billingStart = interfaceGroup.readEntry( conf_billingStart, startDate );
313
// If date is saved but very old, update it to current period
314
QDate currentDate = QDate::currentDate();
315
QDate nextMonthStart = settings->billingStart;
316
if ( nextMonthStart <= currentDate )
318
int length = settings->billingMonths;
319
while ( nextMonthStart <= currentDate )
321
settings->billingStart = nextMonthStart;
322
for ( int i = 0; i < length; i++ )
323
nextMonthStart = nextMonthStart.addDays( mCalendar->daysInMonth( nextMonthStart ) );
438
int statsRuleCount = interfaceGroup.readEntry( conf_statsRules, 0 );
439
for ( int i = 0; i < statsRuleCount; ++i )
441
group = QString( "%1%2 #%3" ).arg( confg_statsRule ).arg( interface ).arg( i );
442
if ( config->hasGroup( group ) )
444
KConfigGroup statsGroup( config, group );
447
stats.startDate = statsGroup.readEntry( conf_statsStartDate, QDate() );
448
stats.periodUnits = clamp<int>(statsGroup.readEntry( conf_statsPeriodUnits, stats.periodUnits ), KNemoStats::Day, KNemoStats::Year );
449
stats.periodCount = clamp<int>(statsGroup.readEntry( conf_statsPeriodCount, stats.periodCount ), 1, 1000 );
450
stats.logOffpeak = statsGroup.readEntry( conf_logOffpeak,stats.logOffpeak );
451
stats.offpeakStartTime = QTime::fromString( statsGroup.readEntry( conf_offpeakStartTime, stats.offpeakStartTime.toString( Qt::ISODate ) ), Qt::ISODate );
452
stats.offpeakEndTime = QTime::fromString( statsGroup.readEntry( conf_offpeakEndTime, stats.offpeakEndTime.toString( Qt::ISODate ) ), Qt::ISODate );
453
stats.weekendIsOffpeak = statsGroup.readEntry( conf_weekendIsOffpeak, stats.weekendIsOffpeak );
454
stats.weekendDayStart = statsGroup.readEntry( conf_weekendDayStart, stats.weekendDayStart );
455
stats.weekendDayEnd = statsGroup.readEntry( conf_weekendDayEnd, stats.weekendDayEnd );
456
stats.weekendTimeStart = QTime::fromString( statsGroup.readEntry( conf_weekendTimeStart, stats.weekendTimeStart.toString( Qt::ISODate ) ), Qt::ISODate );
457
stats.weekendTimeEnd = QTime::fromString( statsGroup.readEntry( conf_weekendTimeEnd, stats.weekendTimeEnd.toString( Qt::ISODate ) ), Qt::ISODate );
458
settings->statsRules << stats;
462
int warnRuleCount = interfaceGroup.readEntry( conf_warnRules, 0 );
463
for ( int i = 0; i < warnRuleCount; ++i )
465
group = QString( "%1%2 #%3" ).arg( confg_warnRule ).arg( interface ).arg( i );
466
if ( config->hasGroup( group ) )
468
KConfigGroup warnGroup( config, group );
471
warn.periodUnits = clamp<int>(warnGroup.readEntry( conf_warnPeriodUnits, warn.periodUnits ), KNemoStats::Hour, KNemoStats::Year );
472
warn.periodCount = clamp<int>(warnGroup.readEntry( conf_warnPeriodCount, warn.periodCount ), 1, 1000 );
473
warn.trafficType = clamp<int>(warnGroup.readEntry( conf_warnTrafficType, warn.trafficType ), KNemoStats::Peak, KNemoStats::PeakOffpeak );
474
warn.trafficDirection = clamp<int>(warnGroup.readEntry( conf_warnTrafficDirection, warn.trafficDirection ), KNemoStats::TrafficIn, KNemoStats::TrafficTotal );
475
warn.trafficUnits = clamp<int>(warnGroup.readEntry( conf_warnTrafficUnits, warn.trafficUnits ), KNemoStats::UnitB, KNemoStats::UnitG );
476
warn.threshold = clamp<double>(warnGroup.readEntry( conf_warnThreshold, warn.threshold ), 0.0, 9999.0 );
477
warn.customText = warnGroup.readEntry( conf_warnCustomText, warn.customText ).trimmed();
479
settings->warnRules << warn;
484
650
interfaceGroup.writeEntry( conf_activateStatistics, settings->activateStatistics );
485
interfaceGroup.writeEntry( conf_customBilling, settings->customBilling );
486
if ( settings->customBilling )
651
interfaceGroup.writeEntry( conf_calendar, settings->calendar );
652
interfaceGroup.writeEntry( conf_statsRules, settings->statsRules.count() );
653
for ( int i = 0; i < settings->statsRules.count(); i++ )
488
interfaceGroup.writeEntry( conf_billingStart, mDlg->billingStartInput->date() );
489
interfaceGroup.writeEntry( conf_billingMonths, settings->billingMonths );
490
interfaceGroup.writeEntry( conf_calendar, settings->calendar );
655
QString group = QString( "%1%2 #%3" ).arg( confg_statsRule ).arg( it ).arg( i );
656
KConfigGroup statsGroup( config, group );
657
statsGroup.writeEntry( conf_statsStartDate, settings->statsRules[i].startDate );
658
statsGroup.writeEntry( conf_statsPeriodUnits, settings->statsRules[i].periodUnits );
659
statsGroup.writeEntry( conf_statsPeriodCount, settings->statsRules[i].periodCount );
660
statsGroup.writeEntry( conf_logOffpeak, settings->statsRules[i].logOffpeak );
661
if ( settings->statsRules[i].logOffpeak )
663
statsGroup.writeEntry( conf_offpeakStartTime, settings->statsRules[i].offpeakStartTime.toString( Qt::ISODate ) );
664
statsGroup.writeEntry( conf_offpeakEndTime, settings->statsRules[i].offpeakEndTime.toString( Qt::ISODate ) );
665
statsGroup.writeEntry( conf_weekendIsOffpeak, settings->statsRules[i].weekendIsOffpeak );
666
if ( settings->statsRules[i].weekendIsOffpeak )
668
statsGroup.writeEntry( conf_weekendDayStart, settings->statsRules[i].weekendDayStart );
669
statsGroup.writeEntry( conf_weekendDayEnd, settings->statsRules[i].weekendDayEnd );
670
statsGroup.writeEntry( conf_weekendTimeStart, settings->statsRules[i].weekendTimeStart.toString( Qt::ISODate ) );
671
statsGroup.writeEntry( conf_weekendTimeEnd, settings->statsRules[i].weekendTimeEnd.toString( Qt::ISODate ) );
492
interfaceGroup.writeEntry( conf_billingWarnThresh, settings->warnThreshold );
493
if ( settings->warnThreshold > 0 )
675
interfaceGroup.writeEntry( conf_warnRules, settings->warnRules.count() );
676
for ( int i = 0; i < settings->warnRules.count(); i++ )
495
interfaceGroup.writeEntry( conf_billingWarnUnits, settings->warnUnits );
496
interfaceGroup.writeEntry( conf_billingWarnType, settings->warnType );
497
interfaceGroup.writeEntry( conf_billingWarnRxTx, settings->warnTotalTraffic );
678
QString group = QString( "%1%2 #%3" ).arg( confg_warnRule ).arg( it ).arg( i );
679
KConfigGroup warnGroup( config, group );
680
if ( settings->statsRules.count() == 0 && settings->warnRules[i].periodUnits == KNemoStats::BillPeriod )
682
warnGroup.writeEntry( conf_warnPeriodUnits, static_cast<int>(KNemoStats::Month) );
686
warnGroup.writeEntry( conf_warnPeriodUnits, settings->warnRules[i].periodUnits );
688
warnGroup.writeEntry( conf_warnPeriodCount, settings->warnRules[i].periodCount );
689
warnGroup.writeEntry( conf_warnTrafficType, settings->warnRules[i].trafficType );
690
warnGroup.writeEntry( conf_warnTrafficDirection, settings->warnRules[i].trafficDirection );
691
warnGroup.writeEntry( conf_warnTrafficUnits, settings->warnRules[i].trafficUnits );
692
warnGroup.writeEntry( conf_warnThreshold, settings->warnRules[i].threshold );
693
warnGroup.writeEntry( conf_warnCustomText, settings->warnRules[i].customText.trimmed() );
500
696
interfaceGroup.writeEntry( conf_numCommands, settings->commands.size() );
852
void ConfigDialog::updateWarnText( int oldCount )
854
// If the billing periods go away, the warn period will change to months
855
// This only changes the text displayed in the model, so it can change
856
// back if a billing period reappears.
857
if ( ! statsModel->rowCount() )
859
QList<WarnRule> warnRules = warnModel->getRules();
860
for ( int i = 0; i < warnRules.count(); ++i )
862
if ( warnRules[i].periodUnits == KNemoStats::BillPeriod )
864
warnModel->item( i, 1 )->setData( periodText( warnRules[i].periodCount, KNemoStats::Month ), Qt::DisplayRole );
868
else if ( oldCount == 0 )
870
QList<WarnRule> warnRules = warnModel->getRules();
871
for ( int i = 0; i < warnRules.count(); ++i )
873
if ( warnRules[i].periodUnits == KNemoStats::BillPeriod )
874
warnModel->item( i, 1 )->setData( periodText( warnRules[i].periodCount, warnRules[i].periodUnits ), Qt::DisplayRole );
656
879
void ConfigDialog::updateControls( InterfaceSettings *settings )
676
899
mDlg->comboHiding->setCurrentIndex( index );
677
900
comboHidingChanged( index );
678
901
mDlg->checkBoxStatistics->setChecked( settings->activateStatistics );
679
mDlg->warnThreshold->setValue( settings->warnThreshold );
680
index = mDlg->warnUnits->findData( settings->warnUnits );
681
mDlg->warnUnits->setCurrentIndex( index );
682
index = mDlg->warnType->findData( settings->warnType );
683
mDlg->warnType->setCurrentIndex( index );
684
if ( settings->warnTotalTraffic )
685
mDlg->warnRxTx->setChecked( true );
687
mDlg->warnRx->setChecked( true );
688
if ( settings->customBilling )
689
mDlg->checkBoxCustomBilling->setChecked( true );
691
mDlg->checkBoxCustomBilling->setChecked( false );
693
904
if ( settings->calendar.isEmpty() )
695
// TODO: Test for a KDE release that contains SVN commit 1013534
696
KGlobal::locale()->setCalendar( mDefaultCalendarType );
698
mCalendar = KCalendarSystem::create( mDefaultCalendarType );
906
calType = mDefaultCalendarType;
702
// TODO: Test for a KDE release that contains SVN commit 1013534
703
KGlobal::locale()->setCalendar( settings->calendar );
705
mCalendar = KCalendarSystem::create( settings->calendar );
708
mDlg->billingStartInput->setDate( settings->billingStart );
910
calType = settings->calendar;
912
if ( !mCalendar || mCalendar->calendarType() != calType )
913
mCalendar = KCalendarSystem::create( calType );
915
statsModel->removeRows(0, statsModel->rowCount() );
916
statsModel->setCalendar( mCalendar );
917
foreach( StatsRule s, settings->statsRules )
919
statsModel->addRule( s );
921
if ( statsModel->rowCount() )
923
QSortFilterProxyModel* proxy = static_cast<QSortFilterProxyModel*>(mDlg->statsView->model());
924
QModelIndex index = statsModel->indexFromItem( statsModel->item( 0, 0 ) );
925
mDlg->statsView->setCurrentIndex( proxy->mapFromSource( index ) );
927
mDlg->modifyStats->setEnabled( statsModel->rowCount() );
928
mDlg->removeStats->setEnabled( statsModel->rowCount() );
930
warnModel->removeRows(0, warnModel->rowCount() );
931
foreach( WarnRule warn, settings->warnRules )
933
warnModel->addWarn( warn );
935
updateWarnText( statsModel->rowCount() );
937
mDlg->modifyWarn->setEnabled( warnModel->rowCount() );
938
mDlg->removeWarn->setEnabled( warnModel->rowCount() );
939
if ( warnModel->rowCount() )
941
mDlg->warnView->setCurrentIndex( warnModel->indexFromItem ( warnModel->item( 0, 0 ) ) );
710
944
mDlg->listViewCommands->clear();
711
945
QList<QTreeWidgetItem *>items;
1369
void ConfigDialog::addStatsClicked()
1371
InterfaceSettings* settings = getItemSettings();
1376
int oldRuleCount = statsModel->rowCount();
1377
StatsConfig dlg( settings, mCalendar, rule, true );
1380
rule = dlg.settings();
1381
QSortFilterProxyModel* proxy = static_cast<QSortFilterProxyModel*>(mDlg->statsView->model());
1382
QModelIndex index = statsModel->addRule( rule );
1383
mDlg->statsView->setCurrentIndex( proxy->mapFromSource( index ) );
1384
settings->statsRules = statsModel->getRules();
1385
mDlg->modifyStats->setEnabled( true );
1386
mDlg->removeStats->setEnabled( true );
1387
updateWarnText( oldRuleCount );
1392
void ConfigDialog::modifyStatsClicked()
1394
InterfaceSettings* settings = getItemSettings();
1395
if ( !settings || mDlg->statsView->model()->rowCount() < 1 )
1398
QModelIndex index = mDlg->statsView->selectionModel()->currentIndex();
1399
if ( !index.isValid() )
1401
QSortFilterProxyModel* proxy = static_cast<QSortFilterProxyModel*>(mDlg->statsView->model());
1402
index = proxy->mapToSource( index );
1403
StatsRule s = statsModel->item( index.row(), 0 )->data( Qt::UserRole ).value<StatsRule>();
1404
StatsConfig dlg( settings, mCalendar, s, false );
1408
statsModel->modifyRule( index, s );
1409
settings->statsRules = statsModel->getRules();
1414
void ConfigDialog::removeStatsClicked()
1416
InterfaceSettings* settings = getItemSettings();
1417
if ( !settings || mDlg->statsView->model()->rowCount() < 1 )
1420
QModelIndex index = mDlg->statsView->selectionModel()->currentIndex();
1421
if ( !index.isValid() )
1423
QSortFilterProxyModel* proxy = static_cast<QSortFilterProxyModel*>(mDlg->statsView->model());
1424
index = proxy->mapToSource( index );
1425
statsModel->removeRow( index.row() );
1426
settings->statsRules = statsModel->getRules();
1427
mDlg->modifyStats->setEnabled( statsModel->rowCount() );
1428
mDlg->removeStats->setEnabled( statsModel->rowCount() );
1429
updateWarnText( statsModel->rowCount() );
1433
void ConfigDialog::addWarnClicked()
1435
InterfaceSettings* settings = getItemSettings();
1440
WarnConfig dlg( settings, warn, true );
1443
warn = dlg.settings();
1444
QModelIndex index = warnModel->addWarn( warn );
1445
mDlg->warnView->setCurrentIndex( index );
1446
settings->warnRules = warnModel->getRules();
1448
mDlg->modifyWarn->setEnabled( true );
1449
mDlg->removeWarn->setEnabled( true );
1453
void ConfigDialog::modifyWarnClicked()
1455
InterfaceSettings* settings = getItemSettings();
1456
if ( !settings || mDlg->warnView->model()->rowCount() < 1 )
1459
const QModelIndex index = mDlg->warnView->selectionModel()->currentIndex();
1460
if ( !index.isValid() )
1462
WarnRule warn = mDlg->warnView->model()->data( index.sibling( index.row(), 0 ), Qt::UserRole ).value<WarnRule>();
1463
WarnConfig dlg( settings, warn, false );
1466
warn = dlg.settings();
1467
warnModel->modifyWarn( index, warn );
1468
settings->warnRules = warnModel->getRules();
1473
void ConfigDialog::removeWarnClicked()
1475
InterfaceSettings* settings = getItemSettings();
1476
if ( !settings || mDlg->warnView->model()->rowCount() < 1 )
1479
const QModelIndex index = mDlg->warnView->selectionModel()->currentIndex();
1480
if ( !index.isValid() )
1482
warnModel->removeRow( index.row() );
1483
settings->warnRules = warnModel->getRules();
1484
mDlg->modifyWarn->setEnabled( warnModel->rowCount() );
1485
mDlg->removeWarn->setEnabled( warnModel->rowCount() );
1138
1491
/******************************************
1151
1504
if (!mLock) changed( true );
1154
void ConfigDialog::checkBoxCustomBillingToggled( bool on )
1156
InterfaceSettings* settings = getItemSettings();
1160
settings->customBilling = on;
1162
mDlg->warnType->setItemText( NotifyMonth, i18n( "Billing Period" ) );
1164
mDlg->warnType->setItemText( NotifyMonth, i18n( "Month" ) );
1166
mDlg->billingStartInput->setDate( QDate::currentDate().addDays( 1 - mCalendar->day( QDate::currentDate() ) ) );
1167
mDlg->billingMonthsInput->setValue( 1 );
1168
if (!mLock) changed( true );
1171
void ConfigDialog::billingStartInputChanged( const QDate& date )
1173
InterfaceSettings* settings = getItemSettings();
1177
// KDateEdit doesn't guarantee a valid date
1178
if ( !date.isValid() ||
1179
date > QDate::currentDate() ||
1180
mCalendar->day( date ) > mMaxDay )
1182
KMessageBox::error( this, i18n( "The billing day of the month can be any day from 1 - %1, and the complete date must be a valid, non-future date.", QString::number( mMaxDay ) ) );
1183
mDlg->billingStartInput->setDate( settings->billingStart );
1187
settings->billingStart = date;
1188
if (!mLock) changed( true );
1192
void ConfigDialog::billingMonthsInputChanged( int value )
1194
InterfaceSettings* settings = getItemSettings();
1198
settings->billingMonths = value;
1199
if (!mLock) changed( true );
1202
void ConfigDialog::warnThresholdChanged( double val )
1204
InterfaceSettings* settings = getItemSettings();
1208
settings->warnThreshold = round(val*10.0)/10.0;
1209
// If single stepping through values and we go back to 0.0,
1210
// we might not get the specialValueText
1211
if ( val != settings->warnThreshold )
1212
mDlg->warnThreshold->setValue( settings->warnThreshold );
1213
bool enable = settings->warnThreshold > 0.0;
1214
mDlg->warnRx->setEnabled( enable );
1215
mDlg->warnRxTx->setEnabled( enable );
1216
mDlg->warnUnits->setEnabled( enable );
1217
mDlg->warnPer->setEnabled( enable );
1218
mDlg->warnType->setEnabled( enable );
1219
if (!mLock) changed( true );
1222
void ConfigDialog::warnUnitsChanged( int val )
1224
InterfaceSettings* settings = getItemSettings();
1228
settings->warnUnits = mDlg->warnUnits->itemData( val ).toInt();
1229
if (!mLock) changed( true );
1232
void ConfigDialog::warnTypeChanged( int val )
1234
InterfaceSettings* settings = getItemSettings();
1238
settings->warnType = mDlg->warnType->itemData( val ).toInt();
1239
if (!mLock) changed( true );
1242
void ConfigDialog::warnRxTxToggled( bool on )
1244
InterfaceSettings* settings = getItemSettings();
1248
settings->warnTotalTraffic = on;
1249
if (!mLock) changed( true );
1254
1509
/******************************************