Krita Source Code Documentation
Loading...
Searching...
No Matches
TextPropertyConfigModel Class Reference

#include <TextPropertyConfigModel.h>

+ Inheritance diagram for TextPropertyConfigModel:

Classes

struct  Private
 
struct  TextPropertyData
 

Public Types

enum  PropertyType { Character , Paragraph , Mixed }
 
enum  Roles { Visibility = Qt::UserRole + 1 , SearchTerms , Type , Name }
 
enum  VisibilityState {
  FollowDefault = 0 , WhenRelevant = 1 , WhenSet = 2 , AlwaysVisible = 3 ,
  NeverVisible = 4
}
 

Signals

void defaultVisibilityStateChanged ()
 
void shouldFilterChanged ()
 

Public Member Functions

Q_INVOKABLE void addProperty (const QString &name, const int propertyType=0, const QString title=QString(), const QString toolTip=QString(), const QString searchTerms=QString(), const int visibilityState=-1)
 
QVariant data (const QModelIndex &index, int role) const override
 
VisibilityState defaultVisibilityState () const
 
Q_INVOKABLE void loadFromConfiguration ()
 
bool moveRows (const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) override
 
QHash< int, QByteArray > roleNames () const override
 
int rowCount (const QModelIndex &parent) const override
 
void saveConfiguration ()
 
bool setData (const QModelIndex &index, const QVariant &value, int role) override
 
void setDefaultVisibilityState (const VisibilityState state)
 
bool shouldFilter () const
 
 TextPropertyConfigModel (QObject *parent=nullptr)
 
Q_INVOKABLE int visibilityStateForName (const QString &name) const
 
 ~TextPropertyConfigModel ()
 

Properties

VisibilityState defaultVisibilityState
 
bool shouldFilter
 

Private Attributes

const QScopedPointer< Privated
 

Detailed Description

Definition at line 15 of file TextPropertyConfigModel.h.

Member Enumeration Documentation

◆ PropertyType

Enumerator
Character 

This property can be applied on a character level.

Paragraph 

This property only does something when applied to a paragraph.

Mixed 

This property can be in either.

Definition at line 31 of file TextPropertyConfigModel.h.

31 {
32 Character,
33 Paragraph,
34 Mixed
35 };
@ Character
This property can be applied on a character level.
@ Paragraph
This property only does something when applied to a paragraph.
@ Mixed
This property can be in either.

◆ Roles

Enumerator
Visibility 
SearchTerms 
Type 
Name 

Definition at line 38 of file TextPropertyConfigModel.h.

◆ VisibilityState

Enumerator
FollowDefault 

Follow the default property.

WhenRelevant 

Show when either set or inherited.

WhenSet 

Show only when set.

AlwaysVisible 

Always show property.

NeverVisible 

Never show property.

Definition at line 22 of file TextPropertyConfigModel.h.

22 {
23 FollowDefault = 0,
24 WhenRelevant = 1,
25 WhenSet = 2,
26 AlwaysVisible = 3,
27 NeverVisible = 4,
28 };
@ NeverVisible
Never show property.
@ FollowDefault
Follow the default property.
@ AlwaysVisible
Always show property.
@ WhenRelevant
Show when either set or inherited.

Constructor & Destructor Documentation

◆ TextPropertyConfigModel()

TextPropertyConfigModel::TextPropertyConfigModel ( QObject * parent = nullptr)
explicit

Definition at line 35 of file TextPropertyConfigModel.cpp.

36 : QAbstractListModel{parent}
37 , d(new Private)
38{
39}
const QScopedPointer< Private > d
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327

◆ ~TextPropertyConfigModel()

TextPropertyConfigModel::~TextPropertyConfigModel ( )

Definition at line 41 of file TextPropertyConfigModel.cpp.

42{
43}

Member Function Documentation

◆ addProperty()

void TextPropertyConfigModel::addProperty ( const QString & name,
const int propertyType = 0,
const QString title = QString(),
const QString toolTip = QString(),
const QString searchTerms = QString(),
const int visibilityState = -1 )

Definition at line 160 of file TextPropertyConfigModel.cpp.

161{
162 if (d->propertyNames.contains(name)) return;
163 beginInsertRows(QModelIndex(), d->propertyNames.size(), d->propertyNames.size());
164 TextPropertyData data = d->propertyData.value(name, TextPropertyData());
165
166 data.title = title;
167 data.propertyType = PropertyType(propertyType);
168 data.toolTip = toolTip;
169 data.searchTerms = searchTerms.split(",");
170 data.visibilityState = VisibilityState(qMax(visibilityState, 0));
171
172 d->propertyData.insert(name, data);
173 d->propertyNames.append(name);
174 endInsertRows();
175}
QVariant data(const QModelIndex &index, int role) const override

References d, and data().

◆ data()

QVariant TextPropertyConfigModel::data ( const QModelIndex & index,
int role ) const
override

Definition at line 78 of file TextPropertyConfigModel.cpp.

79{
80 if (!index.isValid()) return QVariant();
81 if (index.row() < 0 || index.row() >= d->propertyNames.size()) return QVariant();
82
83 const QString name = d->propertyNames.at(index.row());
84
85 const TextPropertyData data = d->propertyData.value(name);
86 if (role == Name) {
87 return name;
88 } else if (role == Qt::DisplayRole) {
89 return data.title;
90 } else if (role == Qt::ToolTipRole) {
91 return data.toolTip;
92 } else if (role == Visibility) {
93 return data.visibilityState;
94 } else if (role == SearchTerms) {
95 return data.searchTerms;
96 } else if (role == Type) {
97 return int (data.propertyType);
98 }
99 return QVariant();
100}
const char * name(StandardAction id)

References d, data(), Name, SearchTerms, Type, and Visibility.

◆ defaultVisibilityState()

TextPropertyConfigModel::VisibilityState TextPropertyConfigModel::defaultVisibilityState ( ) const

Definition at line 45 of file TextPropertyConfigModel.cpp.

45 {
46 return d->defaultVisibilityState;
47}

References d.

◆ defaultVisibilityStateChanged

void TextPropertyConfigModel::defaultVisibilityStateChanged ( )
signal

◆ loadFromConfiguration()

void TextPropertyConfigModel::loadFromConfiguration ( )

Definition at line 152 of file TextPropertyConfigModel.cpp.

152 {
153 KConfigGroup configGroup = KSharedConfig::openConfig()->group("TextProperties");
154 d->defaultVisibilityState = visibilityConfigNames.key(configGroup.readEntry(DEFAULT_VISIBILITY_STATE, visibilityConfigNames.value(d->defaultVisibilityState)));
155 Q_FOREACH (const QString name, d->propertyNames) {
156 d->propertyData[name].visibilityState = visibilityConfigNames.key(configGroup.readEntry(name, visibilityConfigNames.value(d->propertyData[name].visibilityState)));
157 }
158}
const QMap< TextPropertyConfigModel::VisibilityState, QString > visibilityConfigNames
const QString DEFAULT_VISIBILITY_STATE

References d, DEFAULT_VISIBILITY_STATE, and visibilityConfigNames.

◆ moveRows()

bool TextPropertyConfigModel::moveRows ( const QModelIndex & sourceParent,
int sourceRow,
int count,
const QModelIndex & destinationParent,
int destinationChild )
override

Definition at line 120 of file TextPropertyConfigModel.cpp.

121{
122 if (sourceParent != destinationParent) return false;
123 beginMoveRows(sourceParent, sourceRow, sourceRow+count, destinationParent, destinationChild);
124 for (int i = 0; i < count; i++) {
125 d->propertyNames.move(sourceRow+i, destinationChild+i);
126 }
127 endMoveRows();
128 return true;
129}

References d.

◆ roleNames()

QHash< int, QByteArray > TextPropertyConfigModel::roleNames ( ) const
override

Definition at line 131 of file TextPropertyConfigModel.cpp.

132{
133 QHash<int, QByteArray> roles = QAbstractItemModel::roleNames();
134 roles[Visibility] = "visibility";
135 roles[SearchTerms] = "searchTerms";
136 roles[Type] = "type";
137 roles[Name] = "name";
138 roles[Qt::DisplayRole] = "title";
139 return roles;
140}

References Name, SearchTerms, Type, and Visibility.

◆ rowCount()

int TextPropertyConfigModel::rowCount ( const QModelIndex & parent) const
override

Definition at line 72 of file TextPropertyConfigModel.cpp.

73{
74 Q_UNUSED(parent)
75 return d->propertyNames.size();
76}

References d.

◆ saveConfiguration()

void TextPropertyConfigModel::saveConfiguration ( )

Definition at line 142 of file TextPropertyConfigModel.cpp.

143{
144 KConfigGroup configGroup = KSharedConfig::openConfig()->group("TextProperties");
145 configGroup.writeEntry(DEFAULT_VISIBILITY_STATE, visibilityConfigNames.value(d->defaultVisibilityState));
146 Q_FOREACH (const QString name, d->propertyNames) {
147 const TextPropertyData data = d->propertyData.value(name);
148 configGroup.writeEntry(name, visibilityConfigNames.value(data.visibilityState));
149 }
150}

References d, data(), DEFAULT_VISIBILITY_STATE, and visibilityConfigNames.

◆ setData()

bool TextPropertyConfigModel::setData ( const QModelIndex & index,
const QVariant & value,
int role )
override

Definition at line 102 of file TextPropertyConfigModel.cpp.

103{
104 if (!index.isValid() || !value.isValid()) return false;
105 if (index.row() < 0 || index.row() >= d->propertyNames.size()) return false;
106
107 if (role == Visibility) {
108 VisibilityState newState = VisibilityState(value.toInt());
109 const QString name = d->propertyNames.at(index.row());
110 if (d->propertyData[name].visibilityState != newState) {
111 d->propertyData[name].visibilityState = VisibilityState(value.toInt());
112 emit dataChanged(index, index, {role});
113 emit shouldFilterChanged();
114 return true;
115 }
116 }
117 return false;
118}
float value(const T *src, size_t ch)

References d, shouldFilterChanged(), value(), and Visibility.

◆ setDefaultVisibilityState()

void TextPropertyConfigModel::setDefaultVisibilityState ( const VisibilityState state)

Definition at line 49 of file TextPropertyConfigModel.cpp.

49 {
50 if (state == d->defaultVisibilityState)
51 return;
52 d->defaultVisibilityState = state;
55}
void defaultVisibilityStateChanged()

References d, defaultVisibilityStateChanged(), and shouldFilterChanged().

◆ shouldFilter()

bool TextPropertyConfigModel::shouldFilter ( ) const

Definition at line 57 of file TextPropertyConfigModel.cpp.

58{
59 bool shouldFilter = d->defaultVisibilityState == AlwaysVisible;
60 if (!shouldFilter) return false;
61
62 for (int i = 0; i < d->propertyData.size(); i++) {
63 VisibilityState state = d->propertyData.values().at(i).visibilityState;
64 if (state == WhenRelevant || state == WhenSet) {
65 return false;
66 break;
67 }
68 }
69 return shouldFilter;
70}

References AlwaysVisible, d, shouldFilter, WhenRelevant, and WhenSet.

◆ shouldFilterChanged

void TextPropertyConfigModel::shouldFilterChanged ( )
signal

◆ visibilityStateForName()

int TextPropertyConfigModel::visibilityStateForName ( const QString & name) const

Definition at line 177 of file TextPropertyConfigModel.cpp.

178{
179 TextPropertyData data = d->propertyData.value(name, TextPropertyData());
180 return int(data.visibilityState);
181}

References d, and data().

Member Data Documentation

◆ d

const QScopedPointer<Private> TextPropertyConfigModel::d
private

Definition at line 81 of file TextPropertyConfigModel.h.

Property Documentation

◆ defaultVisibilityState

VisibilityState TextPropertyConfigModel::defaultVisibilityState
readwrite

Definition at line 18 of file TextPropertyConfigModel.h.

◆ shouldFilter

bool TextPropertyConfigModel::shouldFilter
read

Definition at line 19 of file TextPropertyConfigModel.h.


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