/*************************************************************************** begin : Fri Aug 8 2003 copyright : (C) 2003 - 2004 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 #include #include #include "historyplaylist.h" #include "collectionlist.h" #include "playermanager.h" //////////////////////////////////////////////////////////////////////////////// // HistoryPlayList public members //////////////////////////////////////////////////////////////////////////////// HistoryPlaylist::HistoryPlaylist(PlaylistCollection *collection) : Playlist(collection, true), m_timer(0) { setAllowDuplicates(true); m_timer = new TQTimer(this); connect(PlayerManager::instance(), TQT_SIGNAL(signalPlay()), this, TQT_SLOT(slotAddPlaying())); connect(m_timer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotCreateNewItem())); } HistoryPlaylist::~HistoryPlaylist() { } HistoryPlaylistItem *HistoryPlaylist::createItem(const FileHandle &file, TQListViewItem *after, bool emitChanged) { if(!after) after = lastItem(); return Playlist::createItem(file, after, emitChanged); } void HistoryPlaylist::createItems(const PlaylistItemList &siblings) { Playlist::createItems(siblings); } //////////////////////////////////////////////////////////////////////////////// // HistoryPlaylist protected members //////////////////////////////////////////////////////////////////////////////// void HistoryPlaylist::polish() { addColumn(i18n("Time")); Playlist::polish(); setSorting(-1); } //////////////////////////////////////////////////////////////////////////////// // private slots //////////////////////////////////////////////////////////////////////////////// void HistoryPlaylist::slotAddPlaying() { m_file = PlayerManager::instance()->playingFile(); m_timer->stop(); m_timer->start(delay(), true); } void HistoryPlaylist::slotCreateNewItem() { PlayerManager *player = PlayerManager::instance(); if(player->playing() && m_file == player->playingFile()) { createItem(m_file); m_file = FileHandle::null(); } } //////////////////////////////////////////////////////////////////////////////// // HistoryPlaylistItem public members //////////////////////////////////////////////////////////////////////////////// HistoryPlaylistItem::HistoryPlaylistItem(CollectionListItem *item, Playlist *parent, TQListViewItem *after) : PlaylistItem(item, parent, after), m_dateTime(TQDateTime::currentDateTime()) { setText(0, TDEGlobal::locale()->formatDateTime(m_dateTime)); } HistoryPlaylistItem::HistoryPlaylistItem(CollectionListItem *item, Playlist *parent) : PlaylistItem(item, parent), m_dateTime(TQDateTime::currentDateTime()) { setText(0, TDEGlobal::locale()->formatDateTime(m_dateTime)); } HistoryPlaylistItem::~HistoryPlaylistItem() { } void HistoryPlaylistItem::setDateTime(const TQDateTime &dt) { m_dateTime = dt; setText(0, TDEGlobal::locale()->formatDateTime(m_dateTime)); } //////////////////////////////////////////////////////////////////////////////// // helper functions //////////////////////////////////////////////////////////////////////////////// TQDataStream &operator<<(TQDataStream &s, const HistoryPlaylist &p) { PlaylistItemList l = const_cast(&p)->items(); s << TQ_INT32(l.count()); for(PlaylistItemList::ConstIterator it = l.begin(); it != l.end(); ++it) { const HistoryPlaylistItem *i = static_cast(*it); s << i->file().absFilePath(); s << i->dateTime(); } return s; } TQDataStream &operator>>(TQDataStream &s, HistoryPlaylist &p) { TQ_INT32 count; s >> count; HistoryPlaylistItem *after = 0; TQString fileName; TQDateTime dateTime; for(int i = 0; i < count; i++) { s >> fileName; s >> dateTime; after = p.createItem(FileHandle(fileName), after, false); after->setDateTime(dateTime); } p.dataChanged(); return s; } #include "historyplaylist.moc"