/* 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. */ #include #include #include #include "fileinfoitem.h" #include "moviemodel.h" #include "helper.h" FileInfoItem::FileInfoItem(const QString &fn, FileInfoItem *parent, QObject *oParent) : QObject(oParent){ mParent = parent; mFullFilename = fn; QFileInfo fi(fn); mData << fi.fileName() << QVariant(); } FileInfoItem::FileInfoItem(const QList &data, FileInfoItem *parent, QObject *oParent) : QObject(oParent){ mParent = parent; mData = data; } FileInfoItem::FileInfoItem(const QString &title, const QModelIndex &index, FileInfoItem *parent, QObject *oParent) : QObject(oParent){ mIndex = index; mParent = parent; mData << title << QVariant(); } FileInfoItem::~FileInfoItem() { qDeleteAll(mChildren); mChildren.clear(); } FileInfoItem* FileInfoItem::child(int row){ return mChildren.value(row); } int FileInfoItem::childCount() const { return mChildren.count(); } int FileInfoItem::row() const { if(mParent){ return mParent->mChildren.indexOf(const_cast(this)); } return 0; } int FileInfoItem::columnCount() const { return mData.count(); } QVariant FileInfoItem::data(int column) const { return mData.value(column); } FileInfoItem *FileInfoItem::parent() { return mParent; } void FileInfoItem::populate() { QFileInfo fi(mFullFilename); QList d1; d1 << tr("Size") << fi.size(); FileInfoItem *fi1 = new FileInfoItem(d1, this); mChildren.append(fi1); QString md5sum = Helper::md5Sum(mFullFilename); QList d2; d2 << tr("MD5-Sum") << md5sum; FileInfoItem *fi2 = new FileInfoItem(d2, this); mChildren.append(fi2); QString mt = Helper::mimeType(mFullFilename); QList d3; d3 << tr("MIME-Type") << mt; FileInfoItem *fi3 = new FileInfoItem(d3, this); mChildren.append(fi3); } void FileInfoItem::populateFromIndex() { const MovieModel *movieModel = static_cast(mIndex.model()); Q_ASSERT(movieModel); QLocale l; QModelIndex idx = movieModel->index(mIndex.row(), MovieItem::Title, QModelIndex()); QList data1; data1 << tr("Filename") << idx.data(MovieModel::FilenameRole); FileInfoItem *fi1 = new FileInfoItem(data1, this); mChildren.append(fi1); QList data2; data2 << tr("MD5-Sum") << idx.data(MovieModel::Md5Role); FileInfoItem *fi2 = new FileInfoItem(data2, this); mChildren.append(fi2); QList data3; data3 << tr("Size") << l.toString(idx.data(MovieModel::SizeRole).toLongLong()); FileInfoItem *fi3 = new FileInfoItem(data3, this); mChildren.append(fi3); QList data4; data4 << tr("Genre") << idx.data(MovieModel::GenreRole); FileInfoItem *fi4 = new FileInfoItem(data4, this); mChildren.append(fi4); QList data5; data5 << tr("Quality") << idx.data(MovieModel::QualityRole); FileInfoItem *fi5 = new FileInfoItem(data5, this); mChildren.append(fi5); QList data6; data6 << tr("DVD"); int dvd = idx.data(MovieModel::DvdRole).toInt(); if(dvd != -1){ QString nr = QString("#%1").arg(dvd); data6 << nr; }else{ data6 << tr("(local)"); } FileInfoItem *fi6 = new FileInfoItem(data6, this); mChildren.append(fi6); } void FileInfoItem::appendChild(FileInfoItem *item) { mChildren.append(item); } void FileInfoItem::removeChild(int row) { if(row >= mChildren.count()){ return; } FileInfoItem *item = mChildren.takeAt(row); delete item; }