summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/logic/Version.cpp57
-rw-r--r--api/logic/Version.h4
-rw-r--r--api/logic/Version_test.cpp38
-rw-r--r--application/VersionProxyModel.cpp12
-rw-r--r--application/widgets/VersionSelectWidget.cpp2
5 files changed, 3 insertions, 110 deletions
diff --git a/api/logic/Version.cpp b/api/logic/Version.cpp
index 3c4727ad..2c83374f 100644
--- a/api/logic/Version.cpp
+++ b/api/logic/Version.cpp
@@ -75,6 +75,7 @@ void Version::parse()
{
m_sections.clear();
+ // FIXME: this is bad. versions can contain a lot more separators...
QStringList parts = m_string.split('.');
for (const auto part : parts)
@@ -82,59 +83,3 @@ void Version::parse()
m_sections.append(Section(part));
}
}
-
-bool versionIsInInterval(const QString &version, const QString &interval)
-{
- return versionIsInInterval(Version(version), interval);
-}
-bool versionIsInInterval(const Version &version, const QString &interval)
-{
- if (interval.isEmpty() || version.toString() == interval)
- {
- return true;
- }
-
- // Interval notation is used
- QRegularExpression exp(
- "(?<start>[\\[\\]\\(\\)])(?<bottom>.*?)(,(?<top>.*?))?(?<end>[\\[\\]\\(\\)]),?");
- QRegularExpressionMatch match = exp.match(interval);
- if (match.hasMatch())
- {
- const QChar start = match.captured("start").at(0);
- const QChar end = match.captured("end").at(0);
- const QString bottom = match.captured("bottom");
- const QString top = match.captured("top");
-
- // check if in range (bottom)
- if (!bottom.isEmpty())
- {
- const auto bottomVersion = Version(bottom);
- if ((start == '[') && !(version >= bottomVersion))
- {
- return false;
- }
- else if ((start == '(') && !(version > bottomVersion))
- {
- return false;
- }
- }
-
- // check if in range (top)
- if (!top.isEmpty())
- {
- const auto topVersion = Version(top);
- if ((end == ']') && !(version <= topVersion))
- {
- return false;
- }
- else if ((end == ')') && !(version < topVersion))
- {
- return false;
- }
- }
-
- return true;
- }
-
- return false;
-}
diff --git a/api/logic/Version.h b/api/logic/Version.h
index b5946ced..08dfb6e9 100644
--- a/api/logic/Version.h
+++ b/api/logic/Version.h
@@ -104,7 +104,3 @@ private:
void parse();
};
-
-MULTIMC_LOGIC_EXPORT bool versionIsInInterval(const QString &version, const QString &interval);
-MULTIMC_LOGIC_EXPORT bool versionIsInInterval(const Version &version, const QString &interval);
-
diff --git a/api/logic/Version_test.cpp b/api/logic/Version_test.cpp
index aa6cb4dd..1e7920ad 100644
--- a/api/logic/Version_test.cpp
+++ b/api/logic/Version_test.cpp
@@ -60,44 +60,6 @@ private slots:
}
- void test_versionIsInInterval_data()
- {
- QTest::addColumn<QString>("version");
- QTest::addColumn<QString>("interval");
- QTest::addColumn<bool>("result");
-
- QTest::newRow("empty, true") << "1.2.3" << "" << true;
- QTest::newRow("one version, true") << "1.2.3" << "1.2.3" << true;
- QTest::newRow("one version, false") << "1.2.3" << "1.2.2" << false;
-
- QTest::newRow("one version inclusive <-> infinity, true") << "1.2.3" << "[1.2.3,)" << true;
- QTest::newRow("one version exclusive <-> infinity, true") << "1.2.3" << "(1.2.2,)" << true;
- QTest::newRow("one version inclusive <-> infitity, false") << "1.2.3" << "[1.2.4,)" << false;
- QTest::newRow("one version exclusive <-> infinity, false") << "1.2.3" << "(1.2.3,)" << false;
-
- QTest::newRow("infinity <-> one version inclusive, true") << "1.2.3" << "(,1.2.3]" << true;
- QTest::newRow("infinity <-> one version exclusive, true") << "1.2.3" << "(,1.2.4)" << true;
- QTest::newRow("infinity <-> one version inclusive, false") << "1.2.3" << "(,1.2.2]" << false;
- QTest::newRow("infinity <-> one version exclusive, false") << "1.2.3" << "(,1.2.3)" << false;
-
- QTest::newRow("inclusive <-> inclusive, true") << "1.2.3" << "[1.2.2,1.2.3]" << true;
- QTest::newRow("inclusive <-> exclusive, true") << "1.2.3" << "[1.2.3,1.2.4)" << true;
- QTest::newRow("exclusive <-> inclusive, true") << "1.2.3" << "(1.2.2,1.2.3]" << true;
- QTest::newRow("exclusive <-> exclusive, true") << "1.2.3" << "(1.2.2,1.2.4)" << true;
- QTest::newRow("inclusive <-> inclusive, false") << "1.2.3" << "[1.0.0,1.2.2]" << false;
- QTest::newRow("inclusive <-> exclusive, false") << "1.2.3" << "[1.0.0,1.2.3)" << false;
- QTest::newRow("exclusive <-> inclusive, false") << "1.2.3" << "(1.2.3,2.0.0]" << false;
- QTest::newRow("exclusive <-> exclusive, false") << "1.2.3" << "(1.0.0,1.2.3)" << false;
- }
- void test_versionIsInInterval()
- {
- QFETCH(QString, version);
- QFETCH(QString, interval);
- QFETCH(bool, result);
-
- QCOMPARE(versionIsInInterval(version, interval), result);
- }
-
void test_versionCompare_data()
{
setupVersions();
diff --git a/application/VersionProxyModel.cpp b/application/VersionProxyModel.cpp
index 00390b36..96bdc9ab 100644
--- a/application/VersionProxyModel.cpp
+++ b/application/VersionProxyModel.cpp
@@ -28,17 +28,7 @@ public:
{
case BaseVersionList::ParentVersionRole:
case BaseVersionList::VersionIdRole:
- {
- auto versionString = data.toString();
- if(it.value().exact)
- {
- return versionString == it.value().string;
- }
- else
- {
- return versionIsInInterval(versionString, it.value().string);
- }
- }
+ // TODO: work with metadata here. Previous implementation based on the Version class is not sufficient
default:
{
auto match = data.toString();
diff --git a/application/widgets/VersionSelectWidget.cpp b/application/widgets/VersionSelectWidget.cpp
index a4eb428b..1696d9d1 100644
--- a/application/widgets/VersionSelectWidget.cpp
+++ b/application/widgets/VersionSelectWidget.cpp
@@ -168,4 +168,4 @@ void VersionSelectWidget::setExactFilter(BaseVersionList::ModelRoles role, QStri
void VersionSelectWidget::setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter)
{
m_proxyModel->setFilter(role, filter, false);
-} \ No newline at end of file
+}