summaryrefslogtreecommitdiffstats
path: root/amarok/src/tagdialog.h
blob: e14939573773da7b61228381b7f9a5967d369047 (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// (c) 2004 Mark Kretschmann <markey@web.de>
// (c) 2004 Pierpaolo Di Panfilo <pippo_dp@libero.it>
// (c) 2005 Alexandre Pereira de Oliveira <aleprj@gmail.com>
// See COPYING file for licensing information.

#ifndef AMAROK_TAGDIALOG_H
#define AMAROK_TAGDIALOG_H

#include "config.h"

#include "htmlview.h"
#include "ktrm.h"
#include "metabundle.h"       //stack alloc
#include "tagdialogbase.h"    //baseclass
#include "tqwidget.h"

#include <kurl.h>             //stack alloc
#include <tqdatetime.h>
#include <tqlabel.h>
#include <tqmap.h>
#include <tqptrlist.h>

#include <tdehtml_part.h>


class PlaylistItem;
namespace TagLib {
    namespace ID3v2 {
        class Tag;
    }
}

class TagDialog : public TagDialogBase
{
    Q_OBJECT
  

    public:

        enum Changes { NOCHANGE=0, SCORECHANGED=1, TAGSCHANGED=2, LYRICSCHANGED=4, RATINGCHANGED=8, LABELSCHANGED=16 };
        enum Tabs { SUMMARYTAB, TAGSTAB, LYRICSTAB, STATSTAB, LABELSTAB };

        TagDialog( const KURL& url, TQWidget* parent = 0 );
        TagDialog( const KURL::List list, TQWidget* parent = 0 );
        TagDialog( const MetaBundle& mb, PlaylistItem* item, TQWidget* parent = 0 );
        ~TagDialog();

        void setTab( int id );

        friend class TagSelect;

    signals:
        void lyricsChanged( const TQString& );

    public slots:
        void openURLRequest(const KURL &url );

    private slots:
        void accept();
        void cancelPressed();
        void openPressed();
        void previousTrack();
        void nextTrack();
        void perTrack();
        void checkModified();

        void loadCover( const TQString &artist, const TQString &album );

        void musicbrainzQuery();
        void guessFromFilename();
        void setFileNameSchemes();
        void queryDone( KTRMResultList results, TQString error );
        void fillSelected( KTRMResult selected );
        void resetMusicbrainz();

    private:
        void init();
        void readTags();
        void readMultipleTracks();
        void setMultipleTracksMode();
        void setSingleTrackMode();
        void enableItems();
        bool hasChanged();
        int changes();
        void storeTags();
        void storeTags( const KURL& url );
        void storeTags( const KURL& url, int changes, const MetaBundle &mb );
        void storeLabels( const KURL &url, const TQStringList &labels );
        void loadTags( const KURL& url );
        void loadLyrics( const KURL& url );
        void loadLabels( const KURL &url );
        MetaBundle bundleForURL( const KURL &url );
        float scoreForURL( const KURL &url );
        int ratingForURL( const KURL &url );
        TQString lyricsForURL( const KURL &url );
        TQStringList labelsForURL( const KURL &url );
        TQStringList getCommonLabels();
        void saveTags();
        bool writeTag( MetaBundle &mb, bool updateCB=true );
        const TQString unknownSafe( TQString );
        const TQStringList statisticsData();
        void applyToAllTracks();

        const TQStringList filenameSchemes();

        TQStringList labelListFromText( const TQString &text );
        void generateDeltaForLabelList( const TQStringList &list );
        TQString generateHTML( const TQStringList &labels );

        MetaBundle m_bundle;
        KURL::List::iterator m_currentURL;
        TQString m_lyrics;
        bool m_perTrack;
        PlaylistItem* m_playlistItem;
        TQMap<TQString, MetaBundle> storedTags;
        TQMap<TQString, float> storedScores;
        TQMap<TQString, int> storedRatings;
        TQMap<TQString, TQString> storedLyrics;
        TQMap<TQString, TQStringList> newLabels;
        TQMap<TQString, TQStringList> originalLabels;
        KURL::List m_urlList;
        TQString m_buttonMbText;
        TQString m_path;
        TQString m_currentCover;
        TQStringList m_labels;
        TQStringList m_addedLabels;
        TQStringList m_removedLabels;
        KURL m_mbTrack;
        TQString m_commaSeparatedLabels;
        //TDEHTMLPart *m_labelCloud;
        HTMLView *m_labelCloud;
};


#endif /*AMAROK_TAGDIALOG_H*/