File indexing completed on 2024-04-14 04:49:14

0001 /*
0002     SPDX-FileCopyrightText: 2002 Rik Hemsley (rikkus) <rik@kde.org>
0003     SPDX-FileCopyrightText: 2002 Benjamin Meyer <ben-devel@meyerhome.net>
0004     SPDX-FileCopyrightText: 2003-2005 Richard Lärkäng <nouseforaname@home.se>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include "submit.h"
0010 #include "logging.h"
0011 
0012 namespace KCDDB
0013 {
0014   Submit::Submit()
0015     : CDDB()
0016   {
0017     // Empty.
0018   }
0019 
0020   Submit::~Submit()
0021   {
0022     // Empty.
0023   }
0024 
0025   Result Submit::submit( CDInfo cdInfo, const TrackOffsetList& offsetList)
0026   {
0027     // If it was an inexact math from the server the discid might
0028     // be different, so recalculate it
0029     cdInfo.set(QLatin1String( "discid" ), trackOffsetListToId(offsetList));
0030 
0031     makeDiskData( cdInfo, offsetList );
0032 
0033     if (!validCategory(cdInfo.get(Category).toString()))
0034       return InvalidCategory;
0035 
0036     KIO::Job* job = createJob(cdInfo);
0037 
0038     if (!job)
0039       return UnknownError;
0040 
0041     return runJob(job);
0042   }
0043 
0044     Result
0045   Submit::parseWrite(  const QString & line )
0046   {
0047     uint serverStatus = statusCode(  line );
0048 
0049     if (   320 != serverStatus )
0050       return ServerError;
0051 
0052     return Success;
0053   }
0054 
0055   void Submit::makeDiskData( const CDInfo& cdInfo, const TrackOffsetList& offsetList )
0056   {
0057     unsigned numTracks = cdInfo.numberOfTracks();
0058 
0059     diskData_ += QLatin1String( "# xmcd\n" );
0060     diskData_ += QLatin1String( "#\n" );
0061     diskData_ += QLatin1String( "# Track frame offsets:\n" );
0062 
0063     for (uint i=0; i < numTracks; i++)
0064         diskData_ += QString::fromLatin1("#\t%1\n").arg(offsetList[i]);
0065 
0066     int l = offsetList[numTracks]/75;
0067     diskData_ += QString::fromLatin1("# Disc length: %1 seconds\n").arg(l);
0068 
0069     diskData_ += cdInfo.toString(true);
0070 
0071     qCDebug(LIBKCDDB) << "diskData_ == " << diskData_;
0072   }
0073 
0074   bool Submit::validCategory( const QString& c )
0075   {
0076     QStringList validCategories;
0077     validCategories << QLatin1String( "blues" ) << QLatin1String( "classical" ) << QLatin1String( "country" )
0078       << QLatin1String( "data" ) << QLatin1String( "folk" ) << QLatin1String( "jazz" ) << QLatin1String( "misc" ) << QLatin1String( "newage" ) << QLatin1String( "reggae" )
0079       << QLatin1String( "rock" ) << QLatin1String( "soundtrack" );
0080 
0081     if (validCategories.contains(c))
0082       return true;
0083     else
0084       return false;
0085   }
0086 }
0087 
0088 // vim:tabstop=2:shiftwidth=2:expandtab:cinoptions=(s,U1,m1