2
* Copyright (c) 2001 Dawit Alemayehu <adawit@kde.org>
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
#include <sys/utsname.h>
25
#include <kstandarddirs.h>
27
#include "fakeuaprovider.h"
29
#define UA_PTOS(x) (*it)->property(x).toString()
30
#define QFL(x) QString::fromLatin1(x)
32
FakeUASProvider::FakeUASProvider()
37
FakeUASProvider::StatusCode FakeUASProvider::createNewUAProvider( const QString& uaStr )
40
int pos = (uaStr).find("::");
44
pos = (uaStr).find(':');
47
split.append(uaStr.left(pos));
48
split.append(uaStr.mid(pos+1));
53
split = QStringList::split("::", uaStr);
56
if ( m_lstIdentity.contains(split[1]) )
57
return DUPLICATE_ENTRY;
60
int count = split.count();
61
m_lstIdentity.append( split[1] );
63
m_lstAlias.append(split[2]);
65
m_lstAlias.append( split[1]);
71
void FakeUASProvider::loadFromDesktopFiles()
74
m_providers = KTrader::self()->query("UserAgentStrings");
77
void FakeUASProvider::parseDescription()
81
KTrader::OfferList::ConstIterator it = m_providers.begin();
82
KTrader::OfferList::ConstIterator lastItem = m_providers.end();
84
for ( ; it != lastItem; ++it )
86
tmp = UA_PTOS("X-KDE-UA-FULL");
88
if ( (*it)->property("X-KDE-UA-DYNAMIC-ENTRY").toBool() )
93
tmp.replace( QFL("appSysName"), QString(utsn.sysname) );
94
tmp.replace( QFL("appSysRelease"), QString(utsn.release) );
95
tmp.replace( QFL("appMachineType"), QString(utsn.machine) );
97
QStringList languageList = KGlobal::locale()->languageList();
98
if ( languageList.count() )
100
QStringList::Iterator it = languageList.find( QString::fromLatin1("C") );
101
if( it != languageList.end() )
103
if( languageList.contains( QString::fromLatin1("en") ) > 0 )
104
languageList.remove( it );
106
(*it) = QString::fromLatin1("en");
110
tmp.replace( QFL("appLanguage"), QString("%1").arg(languageList.join(", ")) );
111
tmp.replace( QFL("appPlatform"), QFL("X11") );
115
if ( m_lstIdentity.contains(tmp) )
118
m_lstIdentity << tmp;
120
tmp = QString("%1 %2").arg(UA_PTOS("X-KDE-UA-SYSNAME")).arg(UA_PTOS("X-KDE-UA-SYSRELEASE"));
121
if ( tmp.stripWhiteSpace().isEmpty() )
122
tmp = QString("%1 %2").arg(UA_PTOS("X-KDE-UA-"
123
"NAME")).arg(UA_PTOS("X-KDE-UA-VERSION"));
125
tmp = QString("%1 %2 on %3").arg(UA_PTOS("X-KDE-UA-"
126
"NAME")).arg(UA_PTOS("X-KDE-UA-VERSION")).arg(tmp);
134
QString FakeUASProvider::aliasStr( const QString& name )
136
int id = userAgentStringList().findIndex(name);
138
return QString::null;
140
return m_lstAlias[id];
143
QString FakeUASProvider::agentStr( const QString& name )
145
int id = userAgentAliasList().findIndex(name);
147
return QString::null;
149
return m_lstIdentity[id];
153
QStringList FakeUASProvider::userAgentStringList()
157
loadFromDesktopFiles();
158
if ( !m_providers.count() )
159
return QStringList();
162
return m_lstIdentity;
165
QStringList FakeUASProvider::userAgentAliasList ()
169
loadFromDesktopFiles();
170
if ( !m_providers.count() )
171
return QStringList();