From 998f21e02a725cd553d7c278819f67cd81295af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Mon, 24 Jun 2013 02:08:15 +0200 Subject: Initial import --- src/entryfield.cpp | 227 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 src/entryfield.cpp (limited to 'src/entryfield.cpp') diff --git a/src/entryfield.cpp b/src/entryfield.cpp new file mode 100644 index 0000000..bb7cb9d --- /dev/null +++ b/src/entryfield.cpp @@ -0,0 +1,227 @@ +/*************************************************************************** +* Copyright (C) 2004-2009 by Thomas Fischer * +* fischer@unix-ag.uni-kl.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., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ +#include "entryfield.h" + +namespace BibTeX +{ + + EntryField::EntryField( FieldType fieldType ) : m_fieldType( fieldType ) + { + m_fieldTypeName = fieldTypeToString( m_fieldType ); + m_value = new Value(); + } + + EntryField::EntryField( const QString &fieldTypeName ) : m_fieldTypeName( fieldTypeName ) + { + m_fieldType = fieldTypeFromString( m_fieldTypeName ); + m_value = new Value(); + } + + EntryField::EntryField( BibTeX::EntryField *other ) : m_fieldType( other->m_fieldType ), m_fieldTypeName( other->m_fieldTypeName ), m_value( NULL ) + { + setValue( other->m_value ); + } + + EntryField::~EntryField() + { + delete m_value; + } + + QString EntryField::fieldTypeName() const + { + return m_fieldTypeName; + } + + void EntryField::setFieldType( FieldType fieldType, const QString& fieldTypeName ) + { + m_fieldType = fieldType; + m_fieldTypeName = fieldTypeName; + } + + EntryField::FieldType EntryField::fieldType() const + { + return m_fieldType; + } + + QString EntryField::fieldTypeToString( const FieldType fieldType ) + { + switch ( fieldType ) + { + case ftAbstract: + return QString( "abstract" ); + case ftAddress: + return QString( "address" ); + case ftAnnote: + return QString( "annote" ); + case ftAuthor: + return QString( "author" ); + case ftBookTitle: + return QString( "booktitle" ); + case ftChapter: + return QString( "chapter" ); + case ftCrossRef: + return QString( "crossref" ); + case ftDoi: + return QString( "doi" ); + case ftEdition: + return QString( "edition" ); + case ftEditor: + return QString( "editor" ); + case ftHowPublished: + return QString( "howpublished" ); + case ftInstitution: + return QString( "institution" ); + case ftISBN: + return QString( "isbn" ); + case ftISSN: + return QString( "issn" ); + case ftJournal: + return QString( "journal" ); + case ftKey: + return QString( "key" ); + case ftKeywords: + return QString( "keywords" ); + case ftLocalFile: + return QString( "localfile" ); + case ftLocation: + return QString( "location" ); + case ftMonth: + return QString( "month" ); + case ftNote: + return QString( "note" ); + case ftNumber: + return QString( "number" ); + case ftOrganization: + return QString( "organization" ); + case ftPages: + return QString( "pages" ); + case ftPublisher: + return QString( "publisher" ); + case ftSeries: + return QString( "series" ); + case ftSchool: + return QString( "school" ); + case ftTitle: + return QString( "title" ); + case ftType: + return QString( "type" ); + case ftURL: + return QString( "url" ); + case ftVolume: + return QString( "volume" ); + case ftYear: + return QString( "year" ); + default: + return QString( "unknown" ); + } + } + + EntryField::FieldType EntryField::fieldTypeFromString( const QString & fieldTypeString ) + { + QString fieldTypeStringLower = fieldTypeString.lower(); + + if ( fieldTypeStringLower == "abstract" ) + return ftAbstract; + else if ( fieldTypeStringLower == "address" ) + return ftAddress; + else if ( fieldTypeStringLower == "annote" ) + return ftAnnote; + else if ( fieldTypeStringLower == "author" ) + return ftAuthor; + else if ( fieldTypeStringLower == "booktitle" ) + return ftBookTitle; + else if ( fieldTypeStringLower == "chapter" ) + return ftChapter; + else if ( fieldTypeStringLower == "crossref" ) + return ftCrossRef; + else if ( fieldTypeStringLower == "doi" ) + return ftDoi; + else if ( fieldTypeStringLower == "edition" ) + return ftEdition; + else if ( fieldTypeStringLower == "editor" ) + return ftEditor; + else if ( fieldTypeStringLower == "howpublished" ) + return ftHowPublished; + else if ( fieldTypeStringLower == "institution" ) + return ftInstitution; + else if ( fieldTypeStringLower == "isbn" ) + return ftISBN; + else if ( fieldTypeStringLower == "issn" ) + return ftISSN; + else if ( fieldTypeStringLower == "journal" ) + return ftJournal; + else if ( fieldTypeStringLower == "key" ) + return ftKey; + else if ( fieldTypeStringLower == "keywords" ) + return ftKeywords; + else if ( fieldTypeStringLower == "localfile" ) + return ftLocalFile; + else if ( fieldTypeStringLower == "location" ) + return ftLocation; + else if ( fieldTypeStringLower == "month" ) + return ftMonth; + else if ( fieldTypeStringLower == "note" ) + return ftNote; + else if ( fieldTypeStringLower == "number" ) + return ftNumber; + else if ( fieldTypeStringLower == "organization" ) + return ftOrganization; + else if ( fieldTypeStringLower == "pages" ) + return ftPages; + else if ( fieldTypeStringLower == "publisher" ) + return ftPublisher; + else if ( fieldTypeStringLower == "series" ) + return ftSeries; + else if ( fieldTypeStringLower == "school" ) + return ftSchool; + else if ( fieldTypeStringLower == "title" ) + return ftTitle; + else if ( fieldTypeStringLower == "type" ) + return ftType; + else if ( fieldTypeStringLower == "url" ) + return ftURL; + else if ( fieldTypeStringLower == "volume" ) + return ftVolume; + else if ( fieldTypeStringLower == "year" ) + return ftYear; + else + return ftUnknown; + } + + Value *EntryField::value() + { + return m_value; + } + + void EntryField::setValue( const Value *value ) + { + if ( value != m_value ) + { + delete m_value; + + if ( value != NULL ) + { + m_value = new Value( value ); + } + else + m_value = new Value(); + } + } +} -- cgit v1.2.3