mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-24 19:02:51 +00:00
155 lines
4.1 KiB
C++
155 lines
4.1 KiB
C++
/*
|
|
* KFontInst - KDE Font Installer
|
|
*
|
|
* Copyright 2003-2009 Craig Drummond <craig@kde.org>
|
|
*
|
|
* ----
|
|
*
|
|
* 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; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include <QtCore/QTextStream>
|
|
#include <QtXml/qdom.h>
|
|
#include <KDebug>
|
|
#include "Family.h"
|
|
#include "Misc.h"
|
|
#include "XmlStrings.h"
|
|
|
|
#define KFI_DBUG kDebug() << time(0L)
|
|
|
|
namespace KFI
|
|
{
|
|
|
|
Family::Family(const QDomElement &elem, bool loadStyles)
|
|
{
|
|
if(elem.hasAttribute(FAMILY_ATTR))
|
|
itsName=elem.attribute(FAMILY_ATTR);
|
|
if(elem.hasAttribute(NAME_ATTR))
|
|
itsName=elem.attribute(NAME_ATTR);
|
|
if(loadStyles)
|
|
{
|
|
for(QDomNode n=elem.firstChild(); !n.isNull(); n=n.nextSibling())
|
|
{
|
|
QDomElement ent=n.toElement();
|
|
|
|
if(FONT_TAG==ent.tagName())
|
|
{
|
|
Style style(ent, loadStyles);
|
|
|
|
if(!style.files().isEmpty())
|
|
itsStyles.insert(style);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void Family::toXml(bool disabled, QTextStream &s) const
|
|
{
|
|
QString family(KFI::Misc::encodeText(itsName, s));
|
|
QStringList entries;
|
|
StyleCont::ConstIterator it(itsStyles.begin()),
|
|
end(itsStyles.end());
|
|
|
|
for(; it!=end; ++it)
|
|
{
|
|
QString entry((*it).toXml(disabled, disabled ? family : QString(), s));
|
|
|
|
if(!entry.isEmpty())
|
|
entries.append(entry);
|
|
}
|
|
|
|
if(entries.count()>0)
|
|
{
|
|
if(!disabled)
|
|
s << " <"FAMILY_TAG" "NAME_ATTR"=\"" << KFI::Misc::encodeText(itsName, s) << "\">\n";
|
|
|
|
QStringList::ConstIterator it(entries.begin()),
|
|
end(entries.end());
|
|
|
|
for(; it!=end; ++it)
|
|
s << *it << endl;
|
|
|
|
if(!disabled)
|
|
s << " </"FAMILY_TAG">" << endl;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
QDBusArgument & operator<<(QDBusArgument &argument, const KFI::Family &obj)
|
|
{
|
|
argument.beginStructure();
|
|
argument << obj.name();
|
|
|
|
argument.beginArray(qMetaTypeId<KFI::Style>());
|
|
KFI::StyleCont::ConstIterator it(obj.styles().begin()),
|
|
end(obj.styles().end());
|
|
for(; it!=end; ++it)
|
|
argument << *it;
|
|
argument.endArray();
|
|
argument.endStructure();
|
|
return argument;
|
|
}
|
|
|
|
const QDBusArgument & operator>>(const QDBusArgument &argument, KFI::Family &obj)
|
|
{
|
|
QString name;
|
|
argument.beginStructure();
|
|
argument >> name;
|
|
obj=KFI::Family(name);
|
|
argument.beginArray();
|
|
while(!argument.atEnd())
|
|
{
|
|
KFI::Style st;
|
|
argument >> st;
|
|
obj.add(st);
|
|
}
|
|
argument.endArray();
|
|
argument.endStructure();
|
|
return argument;
|
|
}
|
|
|
|
QDBusArgument & operator<<(QDBusArgument &argument, const KFI::Families &obj)
|
|
{
|
|
argument.beginStructure();
|
|
argument << obj.isSystem;
|
|
|
|
argument.beginArray(qMetaTypeId<KFI::Family>());
|
|
KFI::FamilyCont::ConstIterator it(obj.items.begin()),
|
|
end(obj.items.end());
|
|
|
|
for(; it!=end; ++it)
|
|
argument << *it;
|
|
argument.endArray();
|
|
argument.endStructure();
|
|
return argument;
|
|
}
|
|
|
|
const QDBusArgument & operator>>(const QDBusArgument &argument, KFI::Families &obj)
|
|
{
|
|
argument.beginStructure();
|
|
argument >> obj.isSystem;
|
|
argument.beginArray();
|
|
while(!argument.atEnd())
|
|
{
|
|
KFI::Family fam;
|
|
argument >> fam;
|
|
obj.items.insert(fam);
|
|
}
|
|
argument.endArray();
|
|
argument.endStructure();
|
|
return argument;
|
|
}
|