Add filter feature to ExtUpgrade (ApiVer = 3)

This commit is contained in:
arcan1s
2015-08-26 00:24:55 +03:00
parent 37726370ee
commit 8228d1d06b
18 changed files with 104 additions and 18 deletions

View File

@ -22,6 +22,7 @@
#include <QDebug>
#include <QDir>
#include <QRegExp>
#include <QSettings>
#include <QTextCodec>
@ -68,6 +69,7 @@ ExtUpgrade *ExtUpgrade::copy(const QString fileName, const int number)
item->setApiVersion(apiVersion());
item->setComment(comment());
item->setExecutable(executable());
item->setFilter(filter());
item->setInterval(interval());
item->setName(name());
item->setNumber(number);
@ -85,6 +87,14 @@ QString ExtUpgrade::executable() const
}
QString ExtUpgrade::filter() const
{
if (debug) qDebug() << PDEBUG;
return m_filter;
}
int ExtUpgrade::null() const
{
if (debug) qDebug() << PDEBUG;
@ -110,6 +120,15 @@ void ExtUpgrade::setExecutable(const QString _executable)
}
void ExtUpgrade::setFilter(const QString _filter)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Filter" << _filter;
m_filter = _filter;
}
void ExtUpgrade::setNull(const int _null)
{
if (debug) qDebug() << PDEBUG;
@ -132,6 +151,8 @@ void ExtUpgrade::readConfiguration()
settings.beginGroup(QString("Desktop Entry"));
setExecutable(settings.value(QString("Exec"), m_executable).toString());
setNull(settings.value(QString("X-AW-Null"), m_null).toInt());
// api == 3
setFilter(settings.value(QString("X-AW-Filter"), m_filter).toString());
settings.endGroup();
}
@ -167,6 +188,7 @@ int ExtUpgrade::showConfiguration(const QVariant args)
ui->lineEdit_comment->setText(comment());
ui->label_numberValue->setText(QString("%1").arg(number()));
ui->lineEdit_command->setText(m_executable);
ui->lineEdit_filter->setText(m_filter);
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
ui->spinBox_null->setValue(m_null);
ui->spinBox_interval->setValue(interval());
@ -178,6 +200,7 @@ int ExtUpgrade::showConfiguration(const QVariant args)
setNumber(ui->label_numberValue->text().toInt());
setApiVersion(AWEUAPI);
setExecutable(ui->lineEdit_command->text());
setFilter(ui->lineEdit_filter->text());
setActive(ui->checkBox_active->checkState() == Qt::Checked);
setNull(ui->spinBox_null->value());
setInterval(ui->spinBox_interval->value());
@ -197,6 +220,7 @@ void ExtUpgrade::writeConfiguration() const
settings.beginGroup(QString("Desktop Entry"));
settings.setValue(QString("Exec"), m_executable);
settings.setValue(QString("X-AW-Filter"), m_filter);
settings.setValue(QString("X-AW-Null"), m_null);
settings.endGroup();
@ -212,7 +236,9 @@ void ExtUpgrade::updateValue()
if (debug) qDebug() << PDEBUG << ":" << "Error" << process->readAllStandardError();
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardOutput()).trimmed();
value[tag(QString("pkgcount"))] = qoutput.split(QChar('\n'), QString::SkipEmptyParts).count() - m_null;
value[tag(QString("pkgcount"))] = m_filter.isEmpty() ?
qoutput.split(QChar('\n'), QString::SkipEmptyParts).count() - m_null :
qoutput.split(QChar('\n'), QString::SkipEmptyParts).filter(QRegExp(m_filter)).count();
}
@ -224,6 +250,7 @@ void ExtUpgrade::translate()
ui->label_comment->setText(i18n("Comment"));
ui->label_number->setText(i18n("Tag"));
ui->label_command->setText(i18n("Command"));
ui->label_filter->setText(i18n("Filter"));
ui->checkBox_active->setText(i18n("Active"));
ui->label_null->setText(i18n("Null"));
ui->label_interval->setText(i18n("Interval"));

View File

@ -31,6 +31,7 @@ class ExtUpgrade : public AbstractExtItem
{
Q_OBJECT
Q_PROPERTY(QString executable READ executable WRITE setExecutable)
Q_PROPERTY(QString filter READ filter WRITE setFilter)
Q_PROPERTY(int null READ null WRITE setNull)
public:
@ -41,10 +42,12 @@ public:
ExtUpgrade *copy(const QString fileName, const int number);
// get methods
QString executable() const;
QString filter() const;
int null() const;
QString uniq() const;
// set methods
void setExecutable(const QString _executable = QString("/usr/bin/true"));
void setFilter(const QString _filter = QString());
void setNull(const int _null = 0);
public slots:
@ -63,6 +66,7 @@ private:
void translate();
// properties
QString m_executable = QString("/usr/bin/true");
QString m_filter = QString("");
int m_null = 0;
// internal properties
int times = 0;

View File

@ -104,6 +104,29 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_filter">
<item>
<widget class="QLabel" name="label_filter">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Filter</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_filter"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_active">
<item>

View File

@ -4,7 +4,8 @@ Name=default-arch
Comment=Archlinux upgrade info
Exec=pacman -Qu
X-AW-Active=false
X-AW-Filter=
X-AW-Null=0
X-AW-Interval=3600
X-AW-ApiVersion=2
X-AW-ApiVersion=3
X-AW-Number=0

View File

@ -4,7 +4,8 @@ Name=default-debian
Comment=Debian upgrade info
Exec=apt-show-versions -u -b
X-AW-Active=false
X-AW-Filter=
X-AW-Null=0
X-AW-Interval=3600
X-AW-ApiVersion=2
X-AW-ApiVersion=3
X-AW-Number=1

View File

@ -4,7 +4,8 @@ Name=default-fedora
Comment=Fedora upgrade info
Exec=yum list updates
X-AW-Active=false
X-AW-Filter=
X-AW-Null=3
X-AW-Interval=3600
X-AW-ApiVersion=2
X-AW-ApiVersion=3
X-AW-Number=2

View File

@ -4,7 +4,8 @@ Name=default-mandriva
Comment=Mandriva upgrade info
Exec=urpmq --auto-select
X-AW-Active=false
X-AW-Filter=
X-AW-Null=0
X-AW-Interval=3600
X-AW-ApiVersion=2
X-AW-ApiVersion=3
X-AW-Number=3

View File

@ -4,7 +4,8 @@ Name=default-ubuntu
Comment=Ubuntu upgrade info
Exec=aptitude search '~U'
X-AW-Active=false
X-AW-Filter=
X-AW-Null=0
X-AW-Interval=3600
X-AW-ApiVersion=2
X-AW-ApiVersion=3
X-AW-Number=4