Anatomy of the style manager

Elvis Stansvik elvstone at gmail.com
Fri May 31 16:00:56 BST 2013


2013/5/30 Pierre Stirnweiss <pstirnweiss at googlemail.com>

> Hello Elvis,
>
> I am unfortunately kept away from coding by non hobby stuff at the moment.
> I have been working for quite a while on a new style manager. The current
> style manager is a mix of several partial rewrites on top of each other. I
> have started from scratch completely, using a QAbstractModel approach (so
> we can later easily go to QML stuff). The style manager is actually nearly
> rewritten (for paragraph style stuff). I would however really welcome help
> in that. If you are interested in this part of calligra, you can find my
> stuff in the branch: textshape_stylesWidget_pierreSt.
>

That sounds great. Unfortunately I have just started my summer job, so I
only had time for some small fixes in the days leading up to this, and now
I'm busy with the job :/ I briefly looked at the branch though, and it
seems it's on the right track. My mail below was about the underlying style
manager though (KoStyleManager).

Let me know, if you want to help me with this. To start with I have only
> tried to replicate the current dialog. However, I don't think they are
> particularly good, so the second step should probably be to improve them.
> Also there are some really good wish items for the style manager which
> ought to be implemented.
>

Perhaps I'll have some time over this summer despite my job, but no
guarantees

PierreSt, who is actually still alive
>

Good news indeed! :)

Elvis


>
> On Tue, May 28, 2013 at 7:04 PM, Elvis Stansvik <elvstone at gmail.com>wrote:
>
>> 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
>>
>> _______________________________________________
>> calligra-devel mailing list
>> calligra-devel at kde.org
>> https://mail.kde.org/mailman/listinfo/calligra-devel
>>
>>
>
> _______________________________________________
> calligra-devel mailing list
> calligra-devel at kde.org
> https://mail.kde.org/mailman/listinfo/calligra-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/calligra-devel/attachments/20130531/1b15cbec/attachment.htm>


More information about the calligra-devel mailing list