OSDN Git Service

Added support for importing Meta tags from a CSV files.
[lamexp/LameXP.git] / src / Model_AudioFile.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // LameXP - Audio Encoder Front-End
3 // Copyright (C) 2004-2012 LoRd_MuldeR <MuldeR2@GMX.de>
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License along
16 // with this program; if not, write to the Free Software Foundation, Inc.,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 //
19 // http://www.gnu.org/licenses/gpl-2.0.txt
20 ///////////////////////////////////////////////////////////////////////////////
21
22 #pragma once
23
24 #include "Model_Artwork.h"
25
26 #include <QObject>
27 #include <QString>
28 #include <QMap>
29 #include <QMutex>
30
31 class AudioFileModel : public QObject
32 {
33         Q_OBJECT
34
35 public:
36         AudioFileModel(const QString &path = QString(), const QString &name = QString());
37         AudioFileModel(const AudioFileModel &model, bool copyMetaInfo = true);
38         AudioFileModel &operator=(const AudioFileModel &model);
39         ~AudioFileModel(void);
40
41         enum BitrateMode
42         {
43                 BitrateModeUndefined = 0,
44                 BitrateModeConstant = 1,
45                 BitrateModeVariable = 2,
46         };
47
48         //-----------------------
49         //Getters
50         //-----------------------
51
52         const QString &filePath(void) const;
53         const QString &fileName(void) const;
54         const QString &fileArtist(void) const;
55         const QString &fileAlbum(void) const;
56         const QString &fileGenre(void) const;
57         const QString &fileComment(void) const;
58         const QString &fileCover(void) const;
59         unsigned int fileYear(void) const;
60         unsigned int filePosition(void) const;
61         unsigned int fileDuration(void) const;
62
63         const QString &formatContainerType(void) const;
64         const QString &formatContainerProfile(void) const;
65         const QString &formatAudioType(void) const;
66         const QString &formatAudioProfile(void) const;
67         const QString &formatAudioVersion(void) const;
68         unsigned int formatAudioSamplerate(void) const;
69         unsigned int formatAudioChannels(void) const;
70         unsigned int formatAudioBitdepth(void) const;
71         unsigned int formatAudioBitrate(void) const;
72         unsigned int formatAudioBitrateMode(void) const;
73         
74         const QString fileDurationInfo(void) const;
75         const QString formatContainerInfo(void) const;
76         const QString formatAudioBaseInfo(void) const;
77         const QString formatAudioCompressInfo(void) const;
78
79         //-----------------------
80         //Setters
81         //-----------------------
82
83         void setFilePath(const QString &path);
84         void setFileName(const QString &name);
85         void setFileArtist(const QString &artist);
86         void setFileAlbum(const QString &album);
87         void setFileGenre(const QString &genre);
88         void setFileComment(const QString &comment);
89         void setFileCover(const QString &coverFile, bool owner);
90         void setFileCover(const ArtworkModel &model);
91         void setFileYear(unsigned int year);
92         void setFilePosition(unsigned int position);
93         void setFileDuration(unsigned int duration);
94
95         void setFormatContainerType(const QString &type);
96         void setFormatContainerProfile(const QString &profile);
97         void setFormatAudioType(const QString &type);
98         void setFormatAudioProfile(const QString &profile);
99         void setFormatAudioVersion(const QString &version);
100         void setFormatAudioSamplerate(unsigned int samplerate);
101         void setFormatAudioChannels(unsigned int channels);
102         void setFormatAudioBitdepth(unsigned int bitdepth);
103         void setFormatAudioBitrate(unsigned int bitrate);
104         void setFormatAudioBitrateMode(unsigned int bitrateMode);
105
106         void updateMetaInfo(const AudioFileModel &model);
107
108 private:
109         QString m_filePath;
110         QString m_fileName;
111         QString m_fileArtist;
112         QString m_fileAlbum;
113         QString m_fileGenre;
114         QString m_fileComment;
115         ArtworkModel m_fileCover;
116         unsigned int m_fileYear;
117         unsigned int m_filePosition;
118         unsigned int m_fileDuration;
119
120         QString m_formatContainerType;
121         QString m_formatContainerProfile;
122         QString m_formatAudioType;
123         QString m_formatAudioProfile;
124         QString m_formatAudioVersion;
125         unsigned int m_formatAudioSamplerate;
126         unsigned int m_formatAudioChannels;
127         unsigned int m_formatAudioBitdepth;
128         unsigned int m_formatAudioBitrate;
129         unsigned int m_formatAudioBitrateMode;
130
131         void resetAll(void);
132 };