/*************************************************************************** * 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(); } } }