From 7e4fd320c0c74bc45e60de18ac5d2b656aa4d821 Mon Sep 17 00:00:00 2001 From: am Date: Sun, 8 Nov 2009 20:55:40 +0000 Subject: -removed a lot of qDebug() includes -turned the Fileinformation into a QTreeview, created a model for that git-svn-id: file:///var/svn/repos2/shemov/trunk@422 f440f766-f032-0410-8965-dc7d17de2ca0 --- fileinfoitem.cpp | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 fileinfoitem.cpp (limited to 'fileinfoitem.cpp') diff --git a/fileinfoitem.cpp b/fileinfoitem.cpp new file mode 100644 index 0000000..0d2e605 --- /dev/null +++ b/fileinfoitem.cpp @@ -0,0 +1,133 @@ +/* + 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; +} + -- cgit v1.2.3-70-g09d2