Anatomy of the style manager

Elvis Stansvik elvstone at gmail.com
Tue May 28 18:04:11 BST 2013


Hi again,

Some more questions about the style manager :)

The style manager currently contains, among other things:

    QHash<int, KoCharacterStyle*> charStyles;
    QHash<int, KoParagraphStyle*> paragStyles;
    QHash<int, KoParagraphStyle *> unusedParagraphStyles;
    QVector<int> m_usedCharacterStyles;
    QVector<int> m_usedParagraphStyles;

The first two are the ones that holds all char/parag styles currently in
the manager, and they have been there since a long time.

The unusedParagraphStyles, along with the associated
API addUnusedStyle(...) and moveToUsedStyles(...) was added later by
Gopalakrishna.

The last two are the most recently added, by Pierre, for use in the
DockerStylesComboModel.

Taking a paragraph style as example, when it is added to the manager
normally using add(...), it's added to paragStyles, and if it's used
(isApplied() returns true), its ID is also added to m_usedParagraphStyles.
The manager also starts listening on the styleApplied signal of the style,
and adds the ID to m_usedParagraphStyles when the signal fires. It also
seems that these IDs are never removed from m_usedParagraphStyles, but
since style IDs are monotonically increasing, I don't think this is a
practical problem (just a slight memory/performance bug).

However, in KoStyleManager::moveToUsedStyles(...), which seems to be used
for transporting a style from unusedParagraphStyles into paragStyles, the
corresponding ID is never added to m_usedParagraphStyles, and the manager
does not connect to the styleApplied signal. Is this a bug or intended?

It would be great if someone who's more experienced with the SM could shed
some light on the motivation for these different containers, and also point
out if I have gotten something wrong.

Cheers,
Elvis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/calligra-devel/attachments/20130528/6b26e99b/attachment.htm>


More information about the calligra-devel mailing list