aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/db.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-08-08 11:31:30 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-08-08 11:31:30 +0000
commit26ea0041c3afd21d33cf87364b8cb6b71261aad2 (patch)
tree52f79342042979399a3f066fe25d64ff02f17db7 /lib/dvb/db.cpp
parent7aaacafa82484bb4f8ca44c24d365c2a1e202cdd (diff)
downloadenigma2-26ea0041c3afd21d33cf87364b8cb6b71261aad2.tar.gz
enigma2-26ea0041c3afd21d33cf87364b8cb6b71261aad2.zip
sort providers case insensitiv
Diffstat (limited to 'lib/dvb/db.cpp')
-rw-r--r--lib/dvb/db.cpp35
1 files changed, 30 insertions, 5 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp
index eb62f1fb..52920473 100644
--- a/lib/dvb/db.cpp
+++ b/lib/dvb/db.cpp
@@ -1015,21 +1015,43 @@ eDVBDBQueryBase::eDVBDBQueryBase(eDVBDB *db, const eServiceReference &source, eD
int eDVBDBQueryBase::compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b)
{
ePtr<eDVBService> a_service, b_service;
-
int sortmode = m_query ? m_query->m_sort : eDVBChannelQuery::tName;
if ((sortmode == eDVBChannelQuery::tName) || (sortmode == eDVBChannelQuery::tProvider))
{
- if (m_db->getService(a, a_service))
+ if (a.name.empty() && m_db->getService(a, a_service))
return 1;
- if (m_db->getService(b, b_service))
+ if (b.name.empty() && m_db->getService(b, b_service))
return 1;
}
switch (sortmode)
{
case eDVBChannelQuery::tName:
- return a_service->m_service_name_sort < b_service->m_service_name_sort;
+ if (a_service)
+ {
+ if (b_service)
+ return a_service->m_service_name_sort < b_service->m_service_name_sort;
+ else
+ {
+ std::string str = b.name;
+ makeUpper(str);
+ return a_service->m_service_name_sort < str;
+ }
+ }
+ else if (b_service)
+ {
+ std::string str = a.name;
+ makeUpper(str);
+ return str < b_service->m_service_name_sort;
+ }
+ else
+ {
+ std::string aa = a.name, bb = b.name;
+ makeUpper(aa);
+ makeUpper(bb);
+ return aa < bb;
+ }
case eDVBChannelQuery::tProvider:
return a_service->m_provider_name < b_service->m_provider_name;
case eDVBChannelQuery::tType:
@@ -1126,7 +1148,10 @@ int eDVBDBListQuery::compareLessEqual(const eServiceReferenceDVB &a, const eServ
y -= 3600;
return x < y;
}
- return a.name < b.name;
+ std::string aa = a.name, bb = b.name;
+ makeUpper(aa);
+ makeUpper(bb);
+ return aa < bb;
}
eDVBDBSatellitesQuery::eDVBDBSatellitesQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query)