diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kexi/core/kexitemplateloader.cpp | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kexi/core/kexitemplateloader.cpp')
-rw-r--r-- | kexi/core/kexitemplateloader.cpp | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/kexi/core/kexitemplateloader.cpp b/kexi/core/kexitemplateloader.cpp new file mode 100644 index 00000000..489d5f51 --- /dev/null +++ b/kexi/core/kexitemplateloader.cpp @@ -0,0 +1,112 @@ +/* This file is part of the KDE project + Copyright (C) 2007 Jaroslaw Staniek <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#include "kexitemplateloader.h" + +#include <kstandarddirs.h> +#include <kglobal.h> +#include <klocale.h> +#include <kconfig.h> +#include <kdebug.h> +#include <kiconloader.h> +#include <kapplication.h> + +#include <qdir.h> + +//static +KexiTemplateInfo::List KexiTemplateLoader::loadListInfo() +{ + KexiTemplateInfo::List list; + const QString subdir = QString(kapp->instanceName()) + "/templates"; + QString lang( KGlobal::locale()->language() ); + QStringList dirs( kapp->dirs()->findDirs("data", subdir) ); + while (true) { + foreach( QStringList::ConstIterator, it, dirs) { + QDir dir((*it)+lang); + if (!dir.exists()) + continue; + if (!dir.isReadable()) { + kdWarning() << "KexiTemplateLoader::loadListInfo() \"" << dir.absPath() << "\" not readable!" << endl; + continue; + } + const QStringList templateDirs( dir.entryList(QDir::Dirs, QDir::Name) ); + const QString absDirPath( dir.absPath() + '/' ); + foreach(QStringList::ConstIterator, templateIt, templateDirs) { + if ((*templateIt)=="." || (*templateIt=="..")) + continue; + KexiTemplateInfo info = KexiTemplateLoader::loadInfo( absDirPath + *templateIt ); + if (!info.name.isEmpty()) + list.append( info ); + } + } + if (lang != "en" && list.isEmpty()) //not found for current locale, try "en" + lang = "en"; + else + break; + } + return list; +} + +//static +KexiTemplateInfo KexiTemplateLoader::loadInfo(const QString& directory) +{ + QDir dir(directory); + if (!dir.isReadable()) { + kdWarning() << "KexiTemplateLoader::loadInfo() \"" + << directory << "\" not readable!" << endl; + return KexiTemplateInfo(); + } + if (!QFileInfo(directory+"/info.txt").isReadable()) + return KexiTemplateInfo(); + KConfig infoTxt(directory+"/info.txt", true/*readonly*/, false/*local*/); + KexiTemplateInfo info; + info.name = infoTxt.readEntry("Name"); + if (info.name.isEmpty()) { + kdWarning() << "KexiTemplateLoader::loadInfo() \"" << (directory+"/info.txt") << "\" contains no \"name\" field" << endl; + return KexiTemplateInfo(); + } + const QStringList templateFiles( dir.entryList("*.kexi", QDir::Files|QDir::Readable, QDir::Name) ); + if (templateFiles.isEmpty()) { + kdWarning() << "KexiTemplateLoader::loadInfo() no readable .kexi template file found in \"" << directory << "\"" << endl; + return KexiTemplateInfo(); + } + info.filename = directory+"/"+templateFiles.first(); + info.description = infoTxt.readEntry("Description"); + const QString iconFileName( infoTxt.readEntry("Icon") ); + if (!iconFileName.isEmpty()) + info.icon = QPixmap(directory+'/'+iconFileName); + if (info.icon.isNull()) + info.icon = DesktopIcon("kexiproject_sqlite"); //default + QStringList autoopenObjectsString = infoTxt.readListEntry("AutoOpenObjects"); + foreach( QStringList::ConstIterator, it, autoopenObjectsString) { + KexiProjectData::ObjectInfo autoopenObject; + QStringList autoopenObjectNameSplitted( QStringList::split(':', *it) ); + if (autoopenObjectNameSplitted.count()>1) { + autoopenObject["type"] = autoopenObjectNameSplitted[0]; + autoopenObject["name"] = autoopenObjectNameSplitted[1]; + } + else { + autoopenObject["type"] = "table"; + autoopenObject["name"] = autoopenObjectNameSplitted[0]; + } + autoopenObject["action"] = "open"; + info.autoopenObjects.append( autoopenObject ); + } + return info; +} |