• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KDECore

  • sources
  • kde-4.14
  • kdelibs
  • kdecore
  • services
kmimeglobsfileparser_p.h
Go to the documentation of this file.
1 /* This file is part of the KDE libraries
2  * Copyright 2007, 2010 David Faure <faure@kde.org>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB. If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef KMIMEGLOBSFILEPARSER_P_H
21 #define KMIMEGLOBSFILEPARSER_P_H
22 
23 #include <kdebug.h>
24 #include <QtCore/QStringList>
25 #include <QtCore/QHash>
26 class QIODevice;
27 class QString;
28 
32 class KMimeGlobsFileParser
33 {
34 public:
35  explicit KMimeGlobsFileParser();
36 
37  class AllGlobs;
38 
39  // Read globs (patterns) files
40  AllGlobs parseGlobs();
41 
42  // Separate method, for unit test
43  AllGlobs parseGlobs(const QStringList&);
44 
45  struct Glob {
46  Glob(const QString& mime, int w = 50, const QString& pat = QString(), int _flags = 0)
47  : weight(w), flags(_flags), pattern(pat), mimeType(mime) {}
48  int weight;
49  int flags;
50  QString pattern;
51  QString mimeType;
52  };
53 
54  class GlobList : public QList<Glob>
55  {
56  public:
57  bool hasPattern(const QString& mime, const QString& pattern) const {
58  const_iterator it = begin();
59  const const_iterator myend = end();
60  for (; it != myend; ++it)
61  if ((*it).pattern == pattern && (*it).mimeType == mime)
62  return true;
63  return false;
64  }
65  // "noglobs" is very rare occurrence, so it's ok if it's slow
66  void removeMime(const QString& mime) {
67  QMutableListIterator<Glob> it(*this);
68  while (it.hasNext()) {
69  if (it.next().mimeType == mime)
70  it.remove();
71  }
72  }
73  };
74 
75  typedef QHash<QString, QStringList> PatternsMap; // mimetype -> patterns
76 
85  class AllGlobs
86  {
87  public:
88  void addGlob(const Glob& glob);
89  void removeMime(const QString& mime);
90  PatternsMap patternsMap() const; // for KMimeTypeFactory
91 
92  QHash<QString, QStringList> m_fastPatterns; // example: "doc" -> "application/msword", "text/plain"
93  GlobList m_highWeightGlobs;
94  GlobList m_lowWeightGlobs; // <= 50, including the non-fast 50 patterns
95  };
96  enum Format { OldGlobs, Globs2WithWeight };
97 
98  static AllGlobs parseGlobFiles(const QStringList& globFiles, QStringList& parsedFiles);
99  static bool parseGlobFile(QIODevice* file, Format format, AllGlobs& globs);
100 
101 private:
102  AllGlobs m_mimeTypeGlobs;
103 };
104 
105 #endif /* KMIMEFILEPARSER_H */
106 
QIODevice
KMimeGlobsFileParser::GlobList::hasPattern
bool hasPattern(const QString &mime, const QString &pattern) const
Definition: kmimeglobsfileparser_p.h:57
KMimeGlobsFileParser::parseGlobs
AllGlobs parseGlobs()
Definition: kmimeglobsfileparser.cpp:34
kdebug.h
KMimeGlobsFileParser::AllGlobs::removeMime
void removeMime(const QString &mime)
Definition: kmimeglobsfileparser.cpp:216
KMimeGlobsFileParser::AllGlobs::patternsMap
PatternsMap patternsMap() const
Definition: kmimeglobsfileparser.cpp:193
KMimeGlobsFileParser::Globs2WithWeight
Definition: kmimeglobsfileparser_p.h:96
KMimeGlobsFileParser::AllGlobs::addGlob
void addGlob(const Glob &glob)
Definition: kmimeglobsfileparser.cpp:158
KMimeGlobsFileParser::GlobList::removeMime
void removeMime(const QString &mime)
Definition: kmimeglobsfileparser_p.h:66
KMimeGlobsFileParser::GlobList
Definition: kmimeglobsfileparser_p.h:54
KMimeGlobsFileParser::Format
Format
Definition: kmimeglobsfileparser_p.h:96
KMimeGlobsFileParser::Glob::flags
int flags
Definition: kmimeglobsfileparser_p.h:49
KMimeGlobsFileParser::Glob::mimeType
QString mimeType
Definition: kmimeglobsfileparser_p.h:51
KMimeGlobsFileParser::AllGlobs::m_highWeightGlobs
GlobList m_highWeightGlobs
Definition: kmimeglobsfileparser_p.h:93
QHash< QString, QStringList >
KMimeGlobsFileParser
Definition: kmimeglobsfileparser_p.h:32
QMutableListIterator::remove
void remove()
QString
QList
Definition: kaboutdata.h:33
KMimeGlobsFileParser::Glob
Definition: kmimeglobsfileparser_p.h:45
QStringList
QList< Glob >::end
iterator end()
KMimeGlobsFileParser::parseGlobFile
static bool parseGlobFile(QIODevice *file, Format format, AllGlobs &globs)
Definition: kmimeglobsfileparser.cpp:71
KMimeGlobsFileParser::KMimeGlobsFileParser
KMimeGlobsFileParser()
Definition: kmimeglobsfileparser.cpp:30
QMutableListIterator::hasNext
bool hasNext() const
KMimeGlobsFileParser::parseGlobFiles
static AllGlobs parseGlobFiles(const QStringList &globFiles, QStringList &parsedFiles)
Definition: kmimeglobsfileparser.cpp:47
KMimeGlobsFileParser::OldGlobs
Definition: kmimeglobsfileparser_p.h:96
KMimeGlobsFileParser::AllGlobs::m_lowWeightGlobs
GlobList m_lowWeightGlobs
Definition: kmimeglobsfileparser_p.h:94
QMutableListIterator::next
T & next()
QMutableListIterator
KMimeGlobsFileParser::Glob::Glob
Glob(const QString &mime, int w=50, const QString &pat=QString(), int _flags=0)
Definition: kmimeglobsfileparser_p.h:46
KMimeGlobsFileParser::PatternsMap
QHash< QString, QStringList > PatternsMap
Definition: kmimeglobsfileparser_p.h:75
KMimeGlobsFileParser::Glob::weight
int weight
Definition: kmimeglobsfileparser_p.h:48
KMimeGlobsFileParser::AllGlobs::m_fastPatterns
QHash< QString, QStringList > m_fastPatterns
Definition: kmimeglobsfileparser_p.h:92
KMimeGlobsFileParser::AllGlobs
Result of the globs parsing, as data structures ready for efficient mimetype matching.
Definition: kmimeglobsfileparser_p.h:85
QList< Glob >::begin
iterator begin()
KMimeGlobsFileParser::Glob::pattern
QString pattern
Definition: kmimeglobsfileparser_p.h:50
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:22:11 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

Skip menu "KDECore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal