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

KritaWidgets

  • sources
  • kfour-appscomplete
  • krita
  • libs
  • widgets
KoMarkerModel.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2  * SPDX-FileCopyrightText: 2011 Thorsten Zachmann <[email protected]>
3  *
4  * SPDX-License-Identifier: LGPL-2.0-or-later
5  */
6 
7 #include "KoMarkerModel.h"
8 
9 // Calligra
10 #include <KoMarker.h>
11 // Qt
12 #include <QSize>
13 
14 
15 KoMarkerModel::KoMarkerModel(const QList<KoMarker*> markers, KoFlake::MarkerPosition position, QObject *parent)
16  : QAbstractListModel(parent)
17  , m_markerPosition(position)
18  , m_temporaryMarkerPosition(-1)
19 {
20  Q_FOREACH (KoMarker *marker, markers) {
21  m_markers.append(QExplicitlySharedDataPointer<KoMarker>(marker));
22  }
23 }
24 
25 KoMarkerModel::~KoMarkerModel()
26 {
27 }
28 
29 int KoMarkerModel::rowCount(const QModelIndex &parent) const
30 {
31  Q_UNUSED(parent);
32  return m_markers.count();
33 }
34 
35 QVariant KoMarkerModel::data(const QModelIndex &index, int role) const
36 {
37  if (!index.isValid()) {
38  return QVariant();
39  }
40 
41  switch(role) {
42  case Qt::DecorationRole:
43  if (index.row() < m_markers.size()) {
44  return QVariant::fromValue<KoMarker*>(m_markers.at(index.row()).data());
45  }
46  return QVariant();
47  case Qt::SizeHintRole:
48  return QSize(80,30);
49  default:
50  return QVariant();
51  }
52 }
53 
54 int KoMarkerModel::markerIndex(KoMarker *marker) const
55 {
56  for (int i = 0; i < m_markers.size(); i++) {
57  if (m_markers[i] == marker) return i;
58  if (m_markers[i] && marker && *m_markers[i] == *marker) return i;
59  }
60 
61  return false;
62 }
63 
64 int KoMarkerModel::addTemporaryMarker(KoMarker *marker)
65 {
66  if (m_temporaryMarkerPosition >= 0) {
67  removeTemporaryMarker();
68  }
69 
70  m_temporaryMarkerPosition = m_markers.size() > 0 ? 1 : 0;
71  beginInsertRows(QModelIndex(), m_temporaryMarkerPosition, m_temporaryMarkerPosition);
72  m_markers.prepend(QExplicitlySharedDataPointer<KoMarker>(marker));
73 
74  endInsertRows();
75 
76  return m_temporaryMarkerPosition;
77 }
78 
79 void KoMarkerModel::removeTemporaryMarker()
80 {
81  if (m_temporaryMarkerPosition >= 0) {
82  beginRemoveRows(QModelIndex(), m_temporaryMarkerPosition, m_temporaryMarkerPosition);
83  m_markers.removeAt(m_temporaryMarkerPosition);
84  m_temporaryMarkerPosition = -1;
85  endRemoveRows();
86  }
87 }
88 
89 int KoMarkerModel::temporaryMarkerPosition() const
90 {
91  return m_temporaryMarkerPosition;
92 }
93 
94 QVariant KoMarkerModel::marker(int index, int role) const
95 {
96  if (index < 0){
97  return QVariant();
98  }
99 
100  switch(role) {
101  case Qt::DecorationRole:
102  if (index< m_markers.size()) {
103  return QVariant::fromValue<KoMarker*>(m_markers.at(index).data());
104  }
105  return QVariant();
106  case Qt::SizeHintRole:
107  return QSize(80, 30);
108  default:
109  return QVariant();
110  }
111 }
112 
113 KoFlake::MarkerPosition KoMarkerModel::position() const
114 {
115  return m_markerPosition;
116 }
QList::append
void append(const T &value)
KoMarkerModel::markerIndex
int markerIndex(KoMarker *marker) const
Definition: KoMarkerModel.cpp:54
KoMarkerModel::position
KoFlake::MarkerPosition position() const
Definition: KoMarkerModel.cpp:113
QAbstractItemModel::beginRemoveRows
void beginRemoveRows(const QModelIndex &parent, int first, int last)
QList::count
int count(const T &value) const
KoMarkerModel::KoMarkerModel
KoMarkerModel(const QList< KoMarker * > markers, KoFlake::MarkerPosition position, QObject *parent=0)
Definition: KoMarkerModel.cpp:15
QSize
QAbstractListModel
QList
KoMarkerModel::temporaryMarkerPosition
int temporaryMarkerPosition() const
Definition: KoMarkerModel.cpp:89
QList::removeAt
void removeAt(int i)
QAbstractItemModel::beginInsertRows
void beginInsertRows(const QModelIndex &parent, int first, int last)
QExplicitlySharedDataPointer
QList::size
int size() const
QList::prepend
void prepend(const T &value)
KoMarkerModel::removeTemporaryMarker
void removeTemporaryMarker()
Definition: KoMarkerModel.cpp:79
QObject
KoMarkerModel::rowCount
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition: KoMarkerModel.cpp:29
QList::at
const T & at(int i) const
QAbstractItemModel::endInsertRows
void endInsertRows()
QModelIndex::isValid
bool isValid() const
QModelIndex::row
int row() const
KoMarkerModel::data
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition: KoMarkerModel.cpp:35
KoMarkerModel.h
QAbstractItemModel::endRemoveRows
void endRemoveRows()
KoMarkerModel::marker
QVariant marker(int index, int role=Qt::UserRole) const
Definition: KoMarkerModel.cpp:94
QAbstractListModel::index
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
KoMarkerModel::~KoMarkerModel
~KoMarkerModel() override
Definition: KoMarkerModel.cpp:25
QModelIndex
QVariant
QObject::parent
QObject * parent() const
KoMarkerModel::addTemporaryMarker
int addTemporaryMarker(KoMarker *marker)
Definition: KoMarkerModel.cpp:64
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Tue Jan 19 2021 23:44:00 by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KritaWidgets

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

krita API Reference

Skip menu "krita API Reference"
  • libs
  •   KritaBasicFlakes
  •   brush
  •   KritaUndo2
  •   KritaFlake
  •   image
  •   KritaPlugin
  •   Krita
  •   KritaPigment
  •   KritaResources
  •   KritaStore
  •   ui
  •   KritaWidgets
  •   KritaWidgetUtils
  • plugins
  •   Assitants
  •   Extensions
  •   Filters
  •   Generators
  •   Formats
  •           src
  •   PaintOps
  •     libpaintop

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