You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
4.1 KiB
142 lines
4.1 KiB
/***************************************************************************
|
|
* Copyright (C) 2005-2007 by Rajko Albrecht *
|
|
* ral@alwins-world.de *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
|
***************************************************************************/
|
|
#include "ktranslateurl.h"
|
|
|
|
#include <tdeglobal.h>
|
|
#include <kstandarddirs.h>
|
|
#include <kdebug.h>
|
|
#include <tdefileitem.h>
|
|
#include <kdesktopfile.h>
|
|
|
|
#include <tqstringlist.h>
|
|
#include <tqdir.h>
|
|
|
|
namespace helpers {
|
|
|
|
KTranslateUrl::KTranslateUrl()
|
|
{
|
|
}
|
|
|
|
|
|
KTranslateUrl::~KTranslateUrl()
|
|
{
|
|
}
|
|
|
|
KURL KTranslateUrl::translateSystemUrl(const KURL&_url)
|
|
{
|
|
TQString proto = _url.protocol();
|
|
KURL res;
|
|
TQString name,path;
|
|
|
|
if (proto!="system") {
|
|
return _url;
|
|
}
|
|
TDEGlobal::dirs()->addResourceType("system_entries",
|
|
TDEStandardDirs::kde_default("data") + "systemview");
|
|
TQStringList dirList = TDEGlobal::dirs()->resourceDirs("system_entries");
|
|
if (!parseURL(_url,name,path)) {
|
|
return _url;
|
|
}
|
|
res = findSystemBase(name);
|
|
if (!res.isValid()) {
|
|
return _url;
|
|
}
|
|
res.addPath(path);
|
|
res.setQuery(_url.query());
|
|
return res;
|
|
}
|
|
|
|
bool KTranslateUrl::parseURL(const KURL&url,TQString&name,TQString&path)
|
|
{
|
|
TQString url_path = url.path();
|
|
int i = url_path.find('/', 1);
|
|
if (i > 0)
|
|
{
|
|
name = url_path.mid(1, i-1);
|
|
path = url_path.mid(i+1);
|
|
}
|
|
else
|
|
{
|
|
name = url_path.mid(1);
|
|
path = TQString();
|
|
}
|
|
|
|
return name != TQString();
|
|
}
|
|
|
|
KURL KTranslateUrl::findSystemBase(const TQString&filename)
|
|
{
|
|
TQStringList dirList = TDEGlobal::dirs()->resourceDirs("system_entries");
|
|
|
|
TQStringList::ConstIterator dirpath = dirList.begin();
|
|
TQStringList::ConstIterator end = dirList.end();
|
|
for(; dirpath!=end; ++dirpath)
|
|
{
|
|
TQDir dir = *dirpath;
|
|
if (!dir.exists()) continue;
|
|
|
|
TQStringList filenames
|
|
= dir.entryList( TQDir::Files | TQDir::Readable );
|
|
|
|
|
|
TDEIO::UDSEntry entry;
|
|
|
|
TQStringList::ConstIterator name = filenames.begin();
|
|
TQStringList::ConstIterator endf = filenames.end();
|
|
|
|
for(; name!=endf; ++name)
|
|
{
|
|
if (*name==filename+".desktop")
|
|
{
|
|
KDesktopFile desktop(*dirpath+filename+".desktop", true);
|
|
if ( desktop.readURL().isEmpty() )
|
|
{
|
|
KURL url;
|
|
url.setPath( desktop.readPath() );
|
|
return url;
|
|
}
|
|
|
|
return desktop.readURL();
|
|
}
|
|
}
|
|
}
|
|
|
|
return KURL();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/*!
|
|
\fn helpers::KTranslateUrl::makeKdeUrl(const TQString&inUrl)
|
|
*/
|
|
TQString helpers::KTranslateUrl::makeKdeUrl(const TQString&_proto)
|
|
{
|
|
TQString proto;
|
|
if (_proto.startsWith("svn+")){
|
|
proto = "k"+_proto;
|
|
} else if (_proto== TQString("svn")){
|
|
proto = "ksvn";
|
|
} else {
|
|
proto = "ksvn+"+_proto;
|
|
}
|
|
return proto;
|
|
}
|