dynamicplaylist.cpp 2.55 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
/***************************************************************************
                          dynamicplaylist.h
                             -------------------
    begin                : Mon May 5 2003
    copyright            : (C) 2003 by Scott Wheeler
    email                : wheeler@kde.org
***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 "dynamicplaylist.h"
#include "collectionlist.h"

////////////////////////////////////////////////////////////////////////////////
// public methods
////////////////////////////////////////////////////////////////////////////////

DynamicPlaylist::DynamicPlaylist(const PlaylistList &playlists, QWidget *parent, const QString &name) :
    Playlist(parent, name),
    m_playlists(playlists),
    m_dirty(true)
{
    for(PlaylistList::ConstIterator it = m_playlists.begin(); it != m_playlists.end(); ++it) {
        if(*it) {
            connect(*it, SIGNAL(signalDataChanged()), this, SLOT(slotSetDirty()));
            connect(*it, SIGNAL(signalNumberOfItemsChanged()), this, SLOT(slotSetDirty()));
        }
        else
            m_playlists.remove(*it);
    }
    connect(CollectionList::instance(), SIGNAL(collectionChanged()), this, SLOT(slotSetDirty()));
}

////////////////////////////////////////////////////////////////////////////////
// protected methods
////////////////////////////////////////////////////////////////////////////////

PlaylistItemList DynamicPlaylist::items() const
{
    PlaylistItemList l;

    for(PlaylistList::ConstIterator it = m_playlists.begin(); it != m_playlists.end(); ++it)
        l += (*it)->items();

    return l;
}

void DynamicPlaylist::showEvent(QShowEvent *e)
{
    if(m_dirty) {
        PlaylistItemList newItems = items();
        if(m_items != newItems) {
            m_items = newItems;
            clear();
            createItems(m_items);
        }
        m_dirty = false;
    }

    Playlist::showEvent(e);
}

#include "dynamicplaylist.moc"