Source Code (Use browser search to find items of interest.)

Class Index

kcontrol'TypesListItem (./kdebase/kcontrol/filetypes/typeslistitem.h:8)

class TypesListItem : public QListViewItem
{
public:
  TypesListItem(QListView *parent, KMimeType::Ptr mimetype);
  TypesListItem(TypesListItem *parent, KMimeType::Ptr mimetype);
  ~TypesListItem();
  QString name() const { return m_major + "/" + m_minor; }
  QString majorType() const { return m_major; }
  QString minorType() const { return m_minor; }
  void setMinor(QString m) { m_minor = m; }
  QString comment() const { return m_comment; }
  void setComment(QString c) { m_comment = c; }
  bool isMeta() const { return metaType; }
  QString icon() const { return m_icon; }
  void setIcon(QString i) { m_icon = i; }
  QStringList patterns() const { return m_patterns; }
  void setPatterns(const QStringList &p) { m_patterns = p; }
  QStringList defaultServices() const { return m_services; }
  void setDefaultServices(const QStringList &dsl) { m_services = dsl; }
  bool isDirty() const;
  void sync();

private:
  KMimeType::Ptr m_mimetype;
  void init(KMimeType::Ptr mimetype);

  bool metaType;
  QString m_major, m_minor, m_comment, m_icon;
  QStringList m_patterns;
  QStringList m_services;
};

kcontrol'TypesListItem::TypesListItem() (./kdebase/kcontrol/filetypes/typeslistitem.cpp:10)

TypesListItem::TypesListItem(QListView *parent, KMimeType::Ptr mimetype)
  : QListViewItem(parent), metaType(true)
{
  init(mimetype);
  setText(0, majorType());
}


kcontrol'TypesListItem::TypesListItem() (./kdebase/kcontrol/filetypes/typeslistitem.cpp:17)

TypesListItem::TypesListItem(TypesListItem *parent, KMimeType::Ptr mimetype)
  : QListViewItem(parent), metaType(false)
{
  init(mimetype);
  setText(0, minorType());
}


kcontrol'TypesListItem::~TypesListItem() (./kdebase/kcontrol/filetypes/typeslistitem.cpp:24)

TypesListItem::~TypesListItem()
{
}


kcontrol'TypesListItem::init() (./kdebase/kcontrol/filetypes/typeslistitem.cpp:28)

void TypesListItem::init(KMimeType::Ptr mimetype)
{
  m_mimetype = mimetype;

  int index = mimetype->name().find("/");
  if (index != -1) {
    m_major = mimetype->name().left(index);
    m_minor = mimetype->name().right(mimetype->name().length() -
				     (index+1));
  } else {
    m_major = mimetype->name();
    m_minor = "";
  }
  m_comment = mimetype->comment(QString(), false);
  m_icon = mimetype->icon(QString(), false);
  m_patterns = mimetype->patterns();

  KServiceTypeProfile::OfferList offerList = 
    KServiceTypeProfile::offers(mimetype->name());
  QValueListIterator<KServiceOffer> it(offerList.begin());

  for (; it != offerList.end(); ++it) {
    if ((*it).allowAsDefault())
      m_services.append((*it).service()->name());
  }
}


kcontrol'TypesListItem::isDirty() (./kdebase/kcontrol/filetypes/typeslistitem.cpp:55)

bool TypesListItem::isDirty() const
{
  if ((m_mimetype->name() != name()) && 
      (name() != "application/octet-stream"))
    return true;
  if (m_mimetype->comment(QString(), false) != m_comment)
    return true;
  if (m_mimetype->icon(QString(), false) != m_icon)
    return true;

  if (m_mimetype->patterns() != m_patterns)
    return true;

  KServiceTypeProfile::OfferList offerList = 
    KServiceTypeProfile::offers(m_mimetype->name());
  QValueListIterator<KServiceOffer> it(offerList.begin());
  QStringList oldservices;
  for (; it != offerList.end(); ++it) {
    if ((*it).allowAsDefault())
      oldservices.append((*it).service()->name());
  }

  if (oldservices != m_services)
    return true;

  // nothing seems to have changed, it's not dirty.
  return false;
}


kcontrol'TypesListItem::sync() (./kdebase/kcontrol/filetypes/typeslistitem.cpp:84)

void TypesListItem::sync()
{
  QString loc = name() + ".desktop";
  loc = locateLocal("mime", loc);

  KDesktopFile config(loc, false, "mime");
  config.writeEntry("Type", "MimeType");
  config.writeEntry("MimeType", name());
  config.writeEntry("Icon", m_icon);
  config.writeEntry("Patterns", m_patterns);
  config.writeEntry("Comment", m_comment);

  KSimpleConfig profile("profilerc");
  QStringList::Iterator it(m_services.begin());
  for (int i = m_services.count(); it != m_services.end(); ++it, i--) {
    profile.setGroup(*it);
    profile.writeEntry("ServiceType", name());
    profile.writeEntry("AllowAsDefault", true);
    profile.writeEntry("Preference", i);
    
    KService::Ptr pService = KService::serviceByName(*it);
    ASSERT(pService);

    QString serviceLoc = locateLocal("apps", pService->desktopEntryPath());
    KDesktopFile desktop(serviceLoc);
    desktop.writeEntry("Type", pService->type());
    desktop.writeEntry("Icon", pService->icon());
    desktop.writeEntry("Name", *it);
    desktop.writeEntry("Comment", pService->comment());
    desktop.writeEntry("Exec", pService->exec());

    // merge new mimetype
    QStringList serviceList = pService->serviceTypes();
    if (!serviceList.contains(name()))
      serviceList.append(name());
    desktop.writeEntry("MimeType", serviceList, ';');
   }
}