/*************************************************************************** * 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 #include #include #include #include #include #include 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; }