Logo Search packages:      
Sourcecode: kdenlive version File versions

aviconviewitem.cpp

/***************************************************************************
                          avlistviewitem.cpp  -  description
                             -------------------
    begin                : Wed Mar 20 2002
    copyright            : (C) 2002 by Jason Wood
    email                : jasonwood@blueyonder.co.uk
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 "aviconviewitem.h"
#include "docclipavfile.h"

#include <qptrlist.h>
#include <qpainter.h>
#include <qheader.h>

#include <klocale.h>
#include <kdebug.h>
#include <kiconloader.h>

#include "kdenlivedoc.h"
#include "documentbasenode.h"
#include "documentclipnode.h"
#include "timecode.h"
#include "kdenlivesettings.h"

00035 AVIconViewItem::AVIconViewItem(KdenliveDoc * doc, QIconViewItem * parent, DocumentBaseNode * node):
KIconViewItem(parent->iconView(), parent),
m_iconView(parent->iconView()), m_node(node), m_doc(doc)
{
    if (node == NULL) {
      kdError() <<
          "Creating AVIconViewItem with no DocumentBaseNode defined!!!"
          << endl;
    }
    doCommonCtor();
}

AVIconViewItem::AVIconViewItem(KdenliveDoc * doc, QIconView * parent, DocumentBaseNode * node):
KIconViewItem(parent), m_iconView(parent), m_node(node), m_doc(doc)
{
    DocumentClipNode *clipNode = m_node->asClipNode();
    setText(m_node->name());
    if (clipNode) {
      DocClipRef *clip = clipNode->clipRef();
      setPixmap(clip->referencedClip()->thumbnail());
    }
    else {
      setPixmap(QPixmap(KGlobal::iconLoader()->loadIcon("folder", KIcon::Toolbar)));
    }
    doCommonCtor();
}

void AVIconViewItem::doCommonCtor()
{
    // recursively populate the rest of the node tree.
    QPtrListIterator < DocumentBaseNode > child(m_node->children());
    while (child.current()) {
      if (child.current()) {
            new AVIconViewItem(m_doc, this, child.current());
      }
      ++child;
    }

}

AVIconViewItem::~AVIconViewItem()
{
}

QString AVIconViewItem::text() const
{
    return m_node->name();
}


QPixmap *AVIconViewItem::pixmap() const
{
    DocumentClipNode *clipNode = m_node->asClipNode();
    if (clipNode) {
      DocClipRef *clip = clipNode->clipRef();
      DocClipBase *baseClip = clip->referencedClip();
      return new QPixmap(baseClip->thumbnail());
    }
    else {
      return new QPixmap(KGlobal::iconLoader()->loadIcon("folder", KIcon::Toolbar));
    }
}

QString AVIconViewItem::clipDuration() const {
      QString text;
      DocumentClipNode *clipNode = m_node->asClipNode();
      if (clipNode) {
          DocClipRef *clip = clipNode->clipRef();
            text = Timecode::getEasyTimecode(clip->duration(), KdenliveSettings::defaultfps());
          int usage = clip->referencedClip()->numReferences();
          if (usage > 0) {
            text.append(", [" + QString::number(usage) + "]");
          }
      }
      return text;
}

QString AVIconViewItem::getInfo() const
{
      QString text;
      DocumentClipNode *clipNode = NULL;
      if (m_node) clipNode = m_node->asClipNode();
      if (clipNode) {
          DocClipRef *clip = clipNode->clipRef();
          DocClipBase::CLIPTYPE fileType = clip->clipType();
            if (fileType == DocClipBase::AV)
                text = "<b>"+i18n("Video Clip")+"</b><br>";
            else if (fileType == DocClipBase::VIDEO)
                text = "<b>"+i18n("Mute Video Clip")+"</b><br>";
            else if (fileType == DocClipBase::AUDIO)
                text = "<b>"+i18n("Audio Clip")+"</b><br>";
            else if (fileType == DocClipBase::COLOR)
                text = "<b>"+i18n("Color Clip")+"</b><br>";
            else if (fileType == DocClipBase::VIRTUAL)
                text = "<b>"+i18n("Virtual Clip")+"</b><br>";
            else if (fileType == DocClipBase::IMAGE)
                text = "<b>"+i18n("Image Clip")+"</b><br>";
            else if (fileType == DocClipBase::SLIDESHOW)
                text = "<b>"+i18n("Slideshow Clip")+"</b><br>";
                  else if (fileType == DocClipBase::TEXT)
                    text = "<b>"+i18n("Text Clip")+"</b><br>";

          if (fileType != DocClipBase::TEXT && fileType != DocClipBase::COLOR && fileType != DocClipBase::VIRTUAL) {
            text.append(i18n("Path: %1").arg(clip->fileURL().directory()) + "<br>" );
            text.append(i18n("File Size: ") + clip->formattedFileSize() + "<br>" );
          }
      if (clip->audioChannels() + clip->audioFrequency() != 0) {
          QString soundChannels;
          switch (clip->audioChannels()) {
              case 1:
                soundChannels = i18n("Mono");
                break;
              case 2:
                soundChannels = i18n("Stereo");
                break;
              default:
                soundChannels = i18n("%1 Channels").arg(clip->audioChannels());
                break;
          }
          text.append(i18n("Audio: %1Hz %2").arg(QString::number(clip->audioFrequency())).arg(soundChannels) + "<br>");
      }
      text.append(i18n("Usage: %1").arg(QString::number(clip->numReferences())));
      }
      else {
            text = "<b>"+i18n("Folder")+"</b><br>";
            //text.append(i18n("%1 clips").arg(count()));

      }
      return text;
}

DocClipRef *AVIconViewItem::clip() const
{
    DocumentClipNode *clipNode = m_node->asClipNode();
    if (clipNode) {
      return clipNode->clipRef();
    }
    return 0;
}

Generated by  Doxygen 1.6.0   Back to index