kwave  18.07.70
Kwave::CodecBase Class Reference

#include <CodecBase.h>

Inheritance diagram for Kwave::CodecBase:
Inheritance graph
Collaboration diagram for Kwave::CodecBase:
Collaboration graph

Classes

struct  MimeType
 

Public Member Functions

 CodecBase ()
 
virtual ~CodecBase ()
 
virtual bool supports (const QMimeType &mimetype)
 
virtual bool supports (const QString &mimetype_name)
 
virtual QStringList extensions (const QString &mimetype_name) const
 
virtual const QList< CodecBase::MimeTypemimeTypes ()
 
virtual const QList< Kwave::Compression::TypecompressionTypes ()
 
virtual void addMimeType (const char *name, const QString &description, const char *patterns)
 
virtual void addCompression (Kwave::Compression::Type compression)
 
virtual QString mimeTypeOf (const QUrl &url)
 

Private Attributes

QList< MimeTypem_supported_mime_types
 
QList< Kwave::Compression::Typem_supported_compression_types
 

Detailed Description

Definition at line 36 of file CodecBase.h.

Constructor & Destructor Documentation

◆ CodecBase()

Kwave::CodecBase::CodecBase ( )

Constructor

Definition at line 34 of file CodecBase.cpp.

36 {
37 }
QList< Kwave::Compression::Type > m_supported_compression_types
Definition: CodecBase.h:104
QList< MimeType > m_supported_mime_types
Definition: CodecBase.h:101

◆ ~CodecBase()

Kwave::CodecBase::~CodecBase ( )
virtual

Destructor

Definition at line 40 of file CodecBase.cpp.

References m_supported_compression_types, and m_supported_mime_types.

41 {
42  m_supported_mime_types.clear();
44 }
QList< Kwave::Compression::Type > m_supported_compression_types
Definition: CodecBase.h:104
QList< MimeType > m_supported_mime_types
Definition: CodecBase.h:101

Member Function Documentation

◆ addCompression()

void Kwave::CodecBase::addCompression ( Kwave::Compression::Type  compression)
virtual

Adds a new compression type to the internal list of supported compression types.

Parameters
compressionthe compression type

Definition at line 90 of file CodecBase.cpp.

References m_supported_compression_types.

91 {
92  if (m_supported_compression_types.contains(compression)) return;
93 
94  m_supported_compression_types.append(compression);
95  std::sort(m_supported_compression_types.begin(),
96  m_supported_compression_types.end(), std::greater<int>());
97 }
QList< Kwave::Compression::Type > m_supported_compression_types
Definition: CodecBase.h:104

◆ addMimeType()

void Kwave::CodecBase::addMimeType ( const char *  name,
const QString &  description,
const char *  patterns 
)
virtual

Adds a new mime type to the internal list of supported mime types. First it tries to find the mime type in the system, if none was found, a new mime type is created, using the passed parameters. The system's mime types are always preferred over the passed 'built-ins'.

Parameters
namethe mime type's name (may also be a comma separated list)
descriptionverbose description
patternslist of file patterns, passed as a single string, separated by "; "

Definition at line 47 of file CodecBase.cpp.

References _, Kwave::CodecBase::MimeType::description, m_supported_mime_types, Kwave::CodecBase::MimeType::name, Kwave::CodecBase::MimeType::patterns, and supports().

Referenced by Kwave::AudiofileDecoder::AudiofileDecoder(), and Kwave::OggDecoder::OggDecoder().

50 {
51  const QString type_name = _(name);
52  if (type_name.contains(_(","))) {
53  // list of mime types -> call recursively for each of them
54  QStringList types = type_name.split(_(","), QString::SkipEmptyParts);
55  foreach (const QString &mt, types) {
56  addMimeType(mt.trimmed().toUtf8().data(), description, patterns);
57  }
58  return;
59  }
60 
62  QMimeDatabase db;
63  QMimeType t = db.mimeTypeForName(type_name);
64 
65  if (t.isDefault() || t.name().isEmpty()) {
66 // qWarning("mime type '%s' not registered, using built-in!", name);
67  type.name = type_name;
68  type.description = description;
69  type.patterns = _(patterns).split(_("; "), QString::SkipEmptyParts);
70  } else {
71  type.description = t.comment();
72  type.patterns = t.globPatterns();
73 
74  if (t.name() != type_name) {
75  // type has been translated (maybe un-alias'ed)
76  // manually add the original name
77  type.name = type_name;
78  m_supported_mime_types.append(type);
79  }
80 
81  if (!supports(t.name())) {
82  // new type or new alias
83  type.name = t.name();
84  }
85  }
86  m_supported_mime_types.append(type);
87 }
virtual bool supports(const QMimeType &mimetype)
Definition: CodecBase.cpp:100
const char name[16]
Definition: memcpy.c:510
virtual void addMimeType(const char *name, const QString &description, const char *patterns)
Definition: CodecBase.cpp:47
#define _(m)
Definition: memcpy.c:66
QList< MimeType > m_supported_mime_types
Definition: CodecBase.h:101
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compressionTypes()

const QList< Kwave::Compression::Type > Kwave::CodecBase::compressionTypes ( )
virtual

Returns a list of supported compression types

Definition at line 134 of file CodecBase.cpp.

References m_supported_compression_types.

Referenced by Kwave::FileInfoDialog::compressionChanged(), Kwave::FileInfoDialog::setupFileInfoTab(), and Kwave::FileInfoDialog::updateAvailableCompressions().

135 {
137 }
QList< Kwave::Compression::Type > m_supported_compression_types
Definition: CodecBase.h:104
Here is the caller graph for this function:

◆ extensions()

QStringList Kwave::CodecBase::extensions ( const QString &  mimetype_name) const
virtual

Returns a list of supported file extensions

Definition at line 115 of file CodecBase.cpp.

References m_supported_mime_types, Kwave::CodecBase::MimeType::name, and Kwave::CodecBase::MimeType::patterns.

Referenced by Kwave::FileContext::saveFileAs().

116 {
117  QStringList result;
118  foreach (const Kwave::CodecBase::MimeType &mime, m_supported_mime_types) {
119  if (mime.name == mimetype_name) {
120  foreach (const QString &ext, mime.patterns)
121  if (!result.contains(ext)) result.append(ext);
122  }
123  }
124  return result;
125 }
QList< MimeType > m_supported_mime_types
Definition: CodecBase.h:101
Here is the caller graph for this function:

◆ mimeTypeOf()

QString Kwave::CodecBase::mimeTypeOf ( const QUrl &  url)
virtual

Tries to find the name of a mime type by a URL. If not found, it returns the default mime type, never an empty string.

Parameters
urla QUrl, only the filename's extension will be inspected
Returns
name of the mime type or the default mime type

Definition at line 140 of file CodecBase.cpp.

References _, m_supported_mime_types, Kwave::CodecBase::MimeType::name, and Kwave::CodecBase::MimeType::patterns.

Referenced by Kwave::CodecManager::mimeTypeOf().

141 {
142  // get the extension of the file
143  QFileInfo file(url.fileName());
144  QString suffix = file.suffix();
145 
146  if (!suffix.length()) return QMimeType().name();
147  suffix = _("*.") + suffix;
148 
149  // try to find in the list of supported mime types
150  QListIterator<Kwave::CodecBase::MimeType> it(m_supported_mime_types);
151  while (it.hasNext()) {
152  Kwave::CodecBase::MimeType mime_type = it.next();
153  if (mime_type.patterns.contains(suffix.toLower()))
154  return mime_type.name;
155  }
156  return QMimeType().name();
157 }
#define _(m)
Definition: memcpy.c:66
QList< MimeType > m_supported_mime_types
Definition: CodecBase.h:101
Here is the caller graph for this function:

◆ mimeTypes()

const QList< Kwave::CodecBase::MimeType > Kwave::CodecBase::mimeTypes ( )
virtual

Returns a list of supported mime types

Definition at line 128 of file CodecBase.cpp.

References m_supported_mime_types.

Referenced by Kwave::CodecManager::decodingFilter(), Kwave::CodecManager::encodingFilter(), and Kwave::CodecManager::encodingMimeTypes().

129 {
130  return m_supported_mime_types;
131 }
QList< MimeType > m_supported_mime_types
Definition: CodecBase.h:101
Here is the caller graph for this function:

◆ supports() [1/2]

bool Kwave::CodecBase::supports ( const QMimeType &  mimetype)
virtual

Returns true if the given mime type is supported

Definition at line 100 of file CodecBase.cpp.

Referenced by addMimeType(), Kwave::CodecManager::canDecode(), Kwave::CodecManager::decoder(), Kwave::CodecManager::encoder(), and Kwave::FileInfoDialog::setupFileInfoTab().

101 {
102  return supports(mimetype.name());
103 }
virtual bool supports(const QMimeType &mimetype)
Definition: CodecBase.cpp:100
Here is the caller graph for this function:

◆ supports() [2/2]

bool Kwave::CodecBase::supports ( const QString &  mimetype_name)
virtual

Returns true if the given mime type is supported

Definition at line 106 of file CodecBase.cpp.

References m_supported_mime_types, and Kwave::CodecBase::MimeType::name.

107 {
108  foreach (const Kwave::CodecBase::MimeType &mime, m_supported_mime_types) {
109  if (mime.name == mimetype_name) return true;
110  }
111  return false;
112 }
QList< MimeType > m_supported_mime_types
Definition: CodecBase.h:101

Member Data Documentation

◆ m_supported_compression_types

QList<Kwave::Compression::Type> Kwave::CodecBase::m_supported_compression_types
private

list of supported compression types

Definition at line 104 of file CodecBase.h.

Referenced by addCompression(), compressionTypes(), and ~CodecBase().

◆ m_supported_mime_types

QList<MimeType> Kwave::CodecBase::m_supported_mime_types
private

list of supported mime types

Definition at line 101 of file CodecBase.h.

Referenced by addMimeType(), extensions(), mimeTypeOf(), mimeTypes(), supports(), and ~CodecBase().


The documentation for this class was generated from the following files: