~ubuntu-branches/ubuntu/gutsy/amarok/gutsy-updates

« back to all changes in this revision

Viewing changes to amarok/src/mediadevice/mtp/mtpmediadevice.h

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Mercatante
  • Date: 2006-11-03 23:57:33 UTC
  • mfrom: (1.31.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20061103235733-a41oyfz4mzienqin
Tags: 2:1.4.4-0ubuntu2
Add debian/kubuntu-media-amarok and
debian amarok_play_audiocd.desktop for good KDE integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
        MetaBundle              m_bundle;
55
55
};
56
56
 
 
57
class MtpPlaylist {
 
58
    friend class MediaItem;
 
59
    public:
 
60
        bool                    operator==( const MtpPlaylist& second ) const { return m_id == second.m_id; }
 
61
 
 
62
    public:
 
63
        u_int32_t               id() const { return m_id; }
 
64
        void                    setId( int id ) { m_id = id; }
 
65
 
 
66
    private:
 
67
        u_int32_t               m_id;
 
68
};
 
69
 
57
70
 
58
71
class MtpMediaItem : public MediaItem
59
72
{
60
73
    public:
61
 
        MtpMediaItem( QListView *parent, QListViewItem *after = 0 ) : MediaItem( parent, after )
62
 
        {}
63
 
        MtpMediaItem( QListViewItem *parent, QListViewItem *after = 0 ) : MediaItem( parent, after )
64
 
        {}
 
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 ); }
 
82
 
 
83
        void init( MediaDevice *dev )
 
84
        {
 
85
            m_track  = 0;
 
86
            m_playlist = 0;
 
87
            m_device = dev;
 
88
        }
 
89
 
65
90
        ~MtpMediaItem()
66
91
        {
67
92
            //m_track->removeItem(this);
68
93
        }
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(); }
72
99
 
73
100
    private:
74
101
        MtpTrack            *m_track;
75
 
};
76
 
 
77
 
 
78
 
class trackValueList: public QValueList<MtpTrack *>
79
 
{
80
 
    public:
81
 
        trackValueList::iterator        findTrackById( unsigned );
82
 
        trackValueList::const_iterator  findTrackById( unsigned ) const;
83
 
        trackValueList::iterator        findTrackByName( const QString& );
84
 
        int                             readFromDevice( MtpMediaDevice *mtp );
85
 
};
86
 
 
 
102
        MtpPlaylist         *m_playlist;
 
103
};
87
104
 
88
105
class MtpMediaDevice : public MediaDevice
89
106
{
106
123
        virtual void            removeConfigElements( QWidget *parent );
107
124
        virtual void            applyConfig();
108
125
        virtual void            loadConfig();
109
 
 
110
 
    public slots:
111
 
        void                    expandItem( QListViewItem *item );
 
126
        static int              progressCallback( uint64_t const sent, uint64_t const total, void const * const data );
112
127
 
113
128
    protected:
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(); }
120
135
 
121
 
        virtual MediaItem       *copyTrackToDevice( const MetaBundle &bundle );
 
136
        MediaItem               *copyTrackToDevice( const MetaBundle &bundle );
 
137
        int                     downloadSelectedItemsToCollection();
122
138
 
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() {};
129
145
 
 
146
    private slots:
 
147
        void                    playlistRenamed( QListViewItem *item, const QString &, int );
 
148
 
130
149
    private:
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;
145
163
        QMutex                  m_mutex;
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;
154
174
};
155
175
 
156
176
#endif