add configuration for cron

This commit is contained in:
2017-05-03 00:27:09 +03:00
parent 1b4d1d6944
commit 6e99e262d4
22 changed files with 180 additions and 48 deletions

View File

@ -307,15 +307,10 @@ void AbstractExtItem::readConfiguration()
setActive(
settings.value(QString("X-AW-Active"), QVariant(isActive())).toString()
== QString("true"));
setInterval(settings.value(QString("X-AW-Interval"), interval()).toInt());
setNumber(settings.value(QString("X-AW-Number"), number()).toInt());
setCron(settings.value(QString("X-AW-Schedule"), cron()).toString());
setSocket(settings.value(QString("X-AW-Socket"), socket()).toString());
// interval definition
QVariant value = settings.value(QString("X-AW-Interval"), interval());
if (value.type() == QVariant::Int)
setInterval(value.toInt());
else
setCron(value.toString());
settings.endGroup();
}
@ -344,6 +339,7 @@ void AbstractExtItem::writeConfiguration() const
cron().isEmpty() ? QVariant(interval())
: QVariant(cron()));
settings.setValue(QString("X-AW-Number"), number());
settings.setValue(QString("X-AW-Schedule"), cron());
settings.setValue(QString("X-AW-Socket"), socket());
settings.endGroup();

View File

@ -137,6 +137,7 @@ int ExtNetworkRequest::showConfiguration(const QVariant args)
ui->lineEdit_url->setText(stringUrl());
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
: Qt::Unchecked);
ui->lineEdit_schedule->setText(cron());
ui->lineEdit_socket->setText(socket());
ui->spinBox_interval->setValue(interval());
@ -149,6 +150,7 @@ int ExtNetworkRequest::showConfiguration(const QVariant args)
setApiVersion(AW_EXTNETREQUEST_API);
setStringUrl(ui->lineEdit_url->text());
setActive(ui->checkBox_active->checkState() == Qt::Checked);
setCron(ui->lineEdit_schedule->text());
setSocket(ui->lineEdit_socket->text());
setInterval(ui->spinBox_interval->value());
@ -208,6 +210,7 @@ void ExtNetworkRequest::translate()
ui->label_number->setText(i18n("Tag"));
ui->label_url->setText(i18n("URL"));
ui->checkBox_active->setText(i18n("Active"));
ui->label_schedule->setText(i18n("Schedule"));
ui->label_socket->setText(i18n("Socket"));
ui->label_interval->setText(i18n("Interval"));
}

View File

@ -134,6 +134,29 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_schedule">
<item>
<widget class="QLabel" name="label_schedule">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Schedule</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_schedule"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_socket">
<item>

View File

@ -146,6 +146,7 @@ int ExtQuotes::showConfiguration(const QVariant args)
ui->lineEdit_ticker->setText(ticker());
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
: Qt::Unchecked);
ui->lineEdit_schedule->setText(cron());
ui->lineEdit_socket->setText(socket());
ui->spinBox_interval->setValue(interval());
@ -158,6 +159,7 @@ int ExtQuotes::showConfiguration(const QVariant args)
setApiVersion(AW_EXTQUOTES_API);
setTicker(ui->lineEdit_ticker->text());
setActive(ui->checkBox_active->checkState() == Qt::Checked);
setCron(ui->lineEdit_schedule->text());
setSocket(ui->lineEdit_socket->text());
setInterval(ui->spinBox_interval->value());
@ -273,6 +275,7 @@ get quotes for the instrument. Refer to <a href=\"http://finance.yahoo.com/\">\
</span></a></p></body></html>"));
ui->label_ticker->setText(i18n("Ticker"));
ui->checkBox_active->setText(i18n("Active"));
ui->label_schedule->setText(i18n("Schedule"));
ui->label_socket->setText(i18n("Socket"));
ui->label_interval->setText(i18n("Interval"));
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>420</width>
<height>301</height>
<height>339</height>
</rect>
</property>
<property name="windowTitle">
@ -150,6 +150,29 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_schedule">
<item>
<widget class="QLabel" name="label_schedule">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Schedule</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_schedule"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_socket">
<item>

View File

@ -295,6 +295,7 @@ int ExtScript::showConfiguration(const QVariant args)
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
: Qt::Unchecked);
ui->comboBox_redirect->setCurrentIndex(static_cast<int>(redirect()));
ui->lineEdit_schedule->setText(cron());
ui->lineEdit_socket->setText(socket());
ui->spinBox_interval->setValue(interval());
// filters
@ -316,6 +317,7 @@ int ExtScript::showConfiguration(const QVariant args)
setPrefix(ui->lineEdit_prefix->text());
setActive(ui->checkBox_active->checkState() == Qt::Checked);
setRedirect(static_cast<Redirect>(ui->comboBox_redirect->currentIndex()));
setCron(ui->lineEdit_schedule->text());
setSocket(ui->lineEdit_socket->text());
setInterval(ui->spinBox_interval->value());
// filters
@ -402,6 +404,7 @@ void ExtScript::translate()
ui->label_prefix->setText(i18n("Prefix"));
ui->checkBox_active->setText(i18n("Active"));
ui->label_redirect->setText(i18n("Redirect"));
ui->label_schedule->setText(i18n("Schedule"));
ui->label_socket->setText(i18n("Socket"));
ui->label_interval->setText(i18n("Interval"));
ui->groupBox_filters->setTitle(i18n("Additional filters"));

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>420</width>
<height>442</height>
<height>473</height>
</rect>
</property>
<property name="windowTitle">
@ -195,6 +195,29 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_schedule">
<item>
<widget class="QLabel" name="label_schedule">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Schedule</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_schedule"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_socket">
<item>

View File

@ -165,6 +165,7 @@ int ExtUpgrade::showConfiguration(const QVariant args)
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
: Qt::Unchecked);
ui->spinBox_null->setValue(null());
ui->lineEdit_schedule->setText(cron());
ui->lineEdit_socket->setText(socket());
ui->spinBox_interval->setValue(interval());
@ -179,6 +180,7 @@ int ExtUpgrade::showConfiguration(const QVariant args)
setFilter(ui->lineEdit_filter->text());
setActive(ui->checkBox_active->checkState() == Qt::Checked);
setNull(ui->spinBox_null->value());
setCron(ui->lineEdit_schedule->text());
setSocket(ui->lineEdit_socket->text());
setInterval(ui->spinBox_interval->value());
@ -242,6 +244,7 @@ void ExtUpgrade::translate()
ui->label_filter->setText(i18n("Filter"));
ui->checkBox_active->setText(i18n("Active"));
ui->label_null->setText(i18n("Null"));
ui->label_interval->setText(i18n("Interval"));
ui->label_socket->setText(i18n("Socket"));
ui->label_schedule->setText(i18n("Schedule"));
ui->label_interval->setText(i18n("Interval"));
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>420</width>
<height>321</height>
<height>349</height>
</rect>
</property>
<property name="windowTitle">
@ -181,6 +181,29 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_schedule">
<item>
<widget class="QLabel" name="label_schedule">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Schedule</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_schedule"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_socket">
<item>

View File

@ -292,6 +292,7 @@ int ExtWeather::showConfiguration(const QVariant args)
ui->checkBox_image->setCheckState(image() ? Qt::Checked : Qt::Unchecked);
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
: Qt::Unchecked);
ui->lineEdit_schedule->setText(cron());
ui->lineEdit_socket->setText(socket());
ui->spinBox_interval->setValue(interval());
@ -308,6 +309,7 @@ int ExtWeather::showConfiguration(const QVariant args)
setTs(ui->spinBox_timestamp->value());
setImage(ui->checkBox_image->checkState() == Qt::Checked);
setActive(ui->checkBox_active->checkState() == Qt::Checked);
setCron(ui->lineEdit_schedule->text());
setSocket(ui->lineEdit_socket->text());
setInterval(ui->spinBox_interval->value());
@ -400,6 +402,7 @@ void ExtWeather::translate()
ui->label_timestamp->setText(i18n("Timestamp"));
ui->checkBox_image->setText(i18n("Use images"));
ui->checkBox_active->setText(i18n("Active"));
ui->label_schedule->setText(i18n("Schedule"));
ui->label_socket->setText(i18n("Socket"));
ui->label_interval->setText(i18n("Interval"));
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>420</width>
<height>382</height>
<height>413</height>
</rect>
</property>
<property name="windowTitle">
@ -248,6 +248,29 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_schedule">
<item>
<widget class="QLabel" name="label_schedule">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Schedule</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_schedule"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_socket">
<item>

View File

@ -56,11 +56,11 @@ void QCronScheduler::parse(const QString &timer)
if (fields.count() != 5)
return;
m_schedule.minutes = parseField(fields.at(1), 0, 59);
m_schedule.hours = parseField(fields.at(2), 0, 23);
m_schedule.days = parseField(fields.at(3), 1, 31);
m_schedule.months = parseField(fields.at(4), 1, 12);
m_schedule.weekdays = parseField(fields.at(5), 1, 7);
m_schedule.minutes = parseField(fields.at(0), 0, 59);
m_schedule.hours = parseField(fields.at(1), 0, 23);
m_schedule.days = parseField(fields.at(2), 1, 31);
m_schedule.months = parseField(fields.at(3), 1, 12);
m_schedule.weekdays = parseField(fields.at(4), 1, 7);
}
@ -111,31 +111,31 @@ void QCronScheduler::QCronField::fromRange(const QString &range, const int min,
<< "with corner values" << min << max;
if (range == '*') {
this->min = min;
this->max = max;
minValue = min;
maxValue = max;
} else if (range.contains('-')) {
auto interval = range.split('-', QString::SkipEmptyParts);
if (interval.count() != 2)
return;
bool status;
// minimal value
this->min = std::max(min, interval.at(0).toInt(&status));
minValue = std::max(min, interval.at(0).toInt(&status));
if (!status)
this->min = -1;
minValue = -1;
// maximal value
this->max = std::min(max, interval.at(1).toInt(&status));
maxValue = std::min(max, interval.at(1).toInt(&status));
if (!status)
this->max = -1;
maxValue = -1;
// error check
if (this->min > this->max)
std::swap(this->min, this->max);
if (minValue > maxValue)
std::swap(minValue, maxValue);
} else {
bool status;
int value = range.toInt(&status);
if (!status || (value < min) || (value > max))
value = -1;
this->min = value;
this->max = value;
minValue = value;
maxValue = value;
}
}
@ -143,11 +143,11 @@ void QCronScheduler::QCronField::fromRange(const QString &range, const int min,
QList<int> QCronScheduler::QCronField::toList()
{
// error checking
if ((min == -1) || (max == -1))
if ((minValue == -1) || (maxValue == -1))
return QList<int>();
QList<int> output;
for (auto i = min; i <= max; ++i) {
for (auto i = minValue; i <= maxValue; ++i) {
if (i % div != 0)
continue;
output.append(i);

View File

@ -36,8 +36,8 @@ public:
QList<int> weekdays;
} QCronRunSchedule;
typedef struct {
int min = -1;
int max = -1;
int minValue = -1;
int maxValue = -1;
int div = 1;
void fromRange(const QString &range, const int min, const int max);
QList<int> toList();