/*
* This file is part of Catalog Builder - A movie catalog building software.
* Copyright (C) (2009) (Siva Chandran P) <siva.chandran.p@gmail.com>
*
* 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 3 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <QDebug>
#include <QDir>
#include "util.h"
#include "moviefolder.h"
#include "moviefile.h"
MovieFolder::MovieFolder(QString path, QString name)
{
m_Path = path;
m_Name = name;
m_ContainsSingleMovie = false;
}
MovieFolder::~MovieFolder()
{
qDeleteAll(m_MovieFiles.begin(), m_MovieFiles.end());
m_MovieFiles.clear();
}
void MovieFolder::addMovieFile(QString name)
{
m_MovieFiles.append(new MovieFile(name));
}
void MovieFolder::guessMovie()
{
for (int i = 0; i < m_MovieFiles.size(); i++)
m_MovieFiles[i]->guessMovie();
if (m_MovieFiles.size() == 2
&& m_MovieFiles[0]->m_Title == m_MovieFiles[1]->m_Title)
{
Util *util = Util::instance();
int year = 0;
QString imdbId;
QString title = util->stripFileName(m_Name, &year, &imdbId);
if (!title.isEmpty())
{
m_MovieFiles[0]->m_Title = title;
m_MovieFiles[0]->m_Year = year;
m_MovieFiles[0]->m_ImdbId = imdbId;
m_MovieFiles[1]->m_Title = title;
m_MovieFiles[1]->m_Year = year;
m_MovieFiles[1]->m_ImdbId = imdbId;
m_ContainsSingleMovie = true;
}
}
}
int MovieFolder::movieFileCount()
{
if (m_ContainsSingleMovie)
return 1;
else
return m_MovieFiles.size();
}
QString MovieFolder::getNextMovieFileName(int index)
{
if (index < 0 || index >= m_MovieFiles.size())
return QString();
if (m_ContainsSingleMovie && index != 0)
return QString();
return m_MovieFiles[index]->m_Name;
}
MovieInfo *MovieFolder::fetchMovieInfo(int index)
{
if (index < 0 || index >= m_MovieFiles.size())
return NULL;
if (m_ContainsSingleMovie && index != 0)
return NULL;
MovieInfo *movieInfo = MovieInfo::fetchForTitle(
m_MovieFiles[index]->m_Title,
m_MovieFiles[index]->m_Year,
m_MovieFiles[index]->m_ImdbId);
if (movieInfo != NULL)
{
QString path = m_Path + QDir::separator() + m_Name + QDir::separator();
if (m_ContainsSingleMovie)
{
for (int i = 0; i < m_MovieFiles.size(); i++)
movieInfo->m_Files.append(path + m_MovieFiles[i]->m_Name);
}
else
{
movieInfo->m_Files.append(path + m_MovieFiles[index]->m_Name);
}
return movieInfo;
}
qWarning("Couldn't fetch movie info for title \"%s\"",
qPrintable(m_MovieFiles[index]->m_Title));
return NULL;
}
bool MovieFolder::containsSingleMovie()
{
return m_ContainsSingleMovie;
}
void MovieFolder::dump()
{
/*qDebug() << "--- MoveFolder Start ---";
qDebug() << "Folder Path: " << m_Name;
qDebug() << "Folder Name: " << m_Name;*/
for (int i = 0; i < m_MovieFiles.size(); i++)
m_MovieFiles[i]->dump();
//qDebug() << "--- MoveFolder End ---";
}