X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fvideodefinition.cpp;h=443f1710334c1e13826f486740992372207b2cb1;hb=29f9a13b38a0547b70236d24300668385e1dbf6e;hp=c2180e2d24b39f2cfc2136b30c3dea95541a054f;hpb=efec77e73c8eafb7ba1f0b7817567272f02262e5;p=minitube diff --git a/src/videodefinition.cpp b/src/videodefinition.cpp index c2180e2..443f171 100644 --- a/src/videodefinition.cpp +++ b/src/videodefinition.cpp @@ -1,25 +1,73 @@ +/* $BEGIN_LICENSE + +This file is part of Minitube. +Copyright 2009, Flavio Tordini + +Minitube 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 3 of the License, or +(at your option) any later version. + +Minitube 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 Minitube. If not, see . + +$END_LICENSE */ + #include "videodefinition.h" -QStringList VideoDefinition::getDefinitionNames() { - static QStringList definitionNames = QStringList() << "360p" << "720p" << "1080p"; - return definitionNames; -} +namespace { +static const int kEmptyDefinitionCode = -1; -QList VideoDefinition::getDefinitionCodes() { - static QList definitionCodes = QList() << 18 << 22 << 37; - return definitionCodes; -} +static const VideoDefinition kEmptyDefinition(QString(), kEmptyDefinitionCode); -QHash VideoDefinition::getDefinitions() { - static QHash definitions; - if (definitions.isEmpty()) { - definitions.insert("360p", 18); - definitions.insert("720p", 22); - definitions.insert("1080p", 37); +template +const VideoDefinition& getDefinitionForImpl(T matchValue) { + const QList& definitions = VideoDefinition::getDefinitions(); + const int size = definitions.size(); + for (int ii = 0; ii < size; ++ii) { + const VideoDefinition& def = definitions.at(ii); + if ((def.*Getter)() == matchValue) + return def; } + + return kEmptyDefinition; +} +} + +// static +const QList& VideoDefinition::getDefinitions() { + static QList definitions = QList() + << VideoDefinition(QLatin1String("360p"), 18) + << VideoDefinition(QLatin1String("720p"), 22) + << VideoDefinition(QLatin1String("1080p"), 37); return definitions; } -int VideoDefinition::getDefinitionCode(QString name) { - return VideoDefinition::getDefinitions().value(name); +// static +const VideoDefinition& VideoDefinition::getDefinitionFor(const QString& name) { + return getDefinitionForImpl(name); +} + +// static +const VideoDefinition& VideoDefinition::getDefinitionFor(int code) { + return getDefinitionForImpl(code); +} + +VideoDefinition::VideoDefinition(const QString& name, int code) : + m_name(name), + m_code(code) { +} + +VideoDefinition::VideoDefinition(const VideoDefinition& other) : + m_name(other.m_name), + m_code(other.m_code) { +} + +bool VideoDefinition::isEmpty() const { + return m_code == kEmptyDefinitionCode && m_name.isEmpty(); }