54
54
MetaBundle m_bundle;
58
friend class MediaItem;
60
bool operator==( const MtpPlaylist& second ) const { return m_id == second.m_id; }
63
u_int32_t id() const { return m_id; }
64
void setId( int id ) { m_id = id; }
58
71
class MtpMediaItem : public MediaItem
61
MtpMediaItem( QListView *parent, QListViewItem *after = 0 ) : MediaItem( parent, after )
63
MtpMediaItem( QListViewItem *parent, QListViewItem *after = 0 ) : MediaItem( parent, after )
74
MtpMediaItem( QListView *parent, QListViewItem *after = 0 )
75
: MediaItem( parent, after ) {}
76
MtpMediaItem( QListViewItem *parent, QListViewItem *after = 0 )
77
: MediaItem( parent, after ) {}
78
MtpMediaItem( QListView *parent, MediaDevice *dev )
79
: MediaItem( parent ) { init( dev ); }
80
MtpMediaItem( QListViewItem *parent, MediaDevice *dev )
81
: MediaItem( parent ) { init( dev ); }
83
void init( MediaDevice *dev )
67
92
//m_track->removeItem(this);
69
94
void setTrack( MtpTrack *track ) { m_track = track; }
70
95
MtpTrack *track() { return m_track; }
96
void setPlaylist( MtpPlaylist *playlist ) { m_playlist = playlist; }
97
MtpPlaylist *playlist() { return m_playlist; }
71
98
QString filename() { return m_track->bundle()->url().path(); }
74
101
MtpTrack *m_track;
78
class trackValueList: public QValueList<MtpTrack *>
81
trackValueList::iterator findTrackById( unsigned );
82
trackValueList::const_iterator findTrackById( unsigned ) const;
83
trackValueList::iterator findTrackByName( const QString& );
84
int readFromDevice( MtpMediaDevice *mtp );
102
MtpPlaylist *m_playlist;
88
105
class MtpMediaDevice : public MediaDevice
106
123
virtual void removeConfigElements( QWidget *parent );
107
124
virtual void applyConfig();
108
125
virtual void loadConfig();
111
void expandItem( QListViewItem *item );
126
static int progressCallback( uint64_t const sent, uint64_t const total, void const * const data );
114
129
MediaItem* trackExists( const MetaBundle &bundle );
118
133
bool lockDevice( bool tryLock=false ) { if( tryLock ) { return m_mutex.tryLock(); } else { m_mutex.lock(); return true; } }
119
134
void unlockDevice() { m_mutex.unlock(); }
121
virtual MediaItem *copyTrackToDevice( const MetaBundle &bundle );
136
MediaItem *copyTrackToDevice( const MetaBundle &bundle );
137
int downloadSelectedItemsToCollection();
123
139
void synchronizeDevice();
124
140
int deleteItemFromDevice( MediaItem *mediaitem, int flags=DeleteTrack );
127
143
bool getCapacity( KIO::filesize_t *total, KIO::filesize_t *available );
128
144
virtual void updateRootItems() {};
147
void playlistRenamed( QListViewItem *item, const QString &, int );
131
MtpMediaItem *addAlbums( const QString &artist, MtpMediaItem *item );
132
MtpMediaItem *addTracks( const QString &artist, const QString &track, MtpMediaItem *item );
133
MtpMediaItem *addArtist( MtpTrack *track );
134
150
MtpMediaItem *addTrackToView(MtpTrack *track, MtpMediaItem *item=0 );
135
151
int readMtpMusic( void );
136
152
void clearItems();
137
int deleteTrack(MtpMediaItem *trackItem);
153
int deleteObject( MtpMediaItem *deleteItem );
138
154
uint32_t checkFolderStructure( uint32_t parent_id, const LIBMTP_track_t *trackmeta, const MetaBundle &bundle );
139
155
uint32_t createFolder( const char *name, uint32_t parent_id );
140
156
uint32_t folderNameToID( char *name, LIBMTP_folder_t *folderlist );
141
157
uint32_t subfolderNameToID( const char *name, LIBMTP_folder_t *folderlist, uint32_t parent_id );
142
158
void updateFolders( void );
143
trackValueList m_trackList;
159
void initView( void );
160
void readPlaylists( void );
161
void playlistFromItem( MtpMediaItem *item);
144
162
LIBMTP_mtpdevice_t *m_device;
146
164
QMutex m_critical_mutex;
151
169
QLabel *m_folderLabel;
152
170
QStringList m_supportedFiles;
153
171
QMap<int,QString> mtpFileTypes;
172
QMap<uint32_t,MtpTrack*> m_idToTrack;
173
QMap<QString,MtpMediaItem*> m_fileNameToItem;