[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [calligra/calligra/2.9] /: Merge the branch words-sections-deniskup
From:       Inge Wallin <inge () lysator ! liu ! se>
Date:       2015-02-22 19:55:35
Message-ID: E1YPccp-0003g4-V6 () scm ! kde ! org
[Download RAW message or body]

Git commit b62e5f48ca2783690cc82d9546f21db3ae3b3782 by Inge Wallin.
Committed on 22/02/2015 at 19:51.
Pushed by ingwa into branch 'calligra/2.9'.

Merge the branch words-sections-deniskup

This commit merges the branch words-sections-deniskup. It was
originally merged to master, but without --squash, which this commit
contains.  This branch only contains fixes to handling of text
sections and no other things, in particular nothing to do with the
text outliner which will be merged to master during the merge window.

I have looked through all the changes line by line and I *think* that
I have checked everything.  I could find no new strings but I may have
missed something.  There are a number of new translations of old ones
because the branch has gotten master merged into it at some points.
Because of the freeze there should be no other new features but also
that could have slipped through my checks. If so, I hope that I can be
forgiven for missing it.

Conflicts:
	krita/integration/thumbnail/kritaanimation_kranim_thumbnail.desktop
	krita/plugins/extensions/dockers/animator/krita_animator.desktop
	krita/plugins/formats/kranimseq/kranimseq_export.desktop

M  +2    -0    braindump/data/braindump.appdata.xml
M  +2    -0    extras/okularodtgenerator/libokularGenerator_odt.desktop
M  +1    -1    extras/properties/calligradocinfopropspage.desktop
M  +1    -0    filters/stage/keynote/import/calligra_filter_key2odp.desktop
M  +1    -0    filters/stage/keynote/import/stage_key_thumbnail.desktop
M  +2    -0    filters/stage/powerpoint/libokularGenerator_powerpoint_calligra.desktop
 M  +2    -0    filters/stage/pptx/libokularGenerator_pptx_calligra.desktop
M  +1    -0    filters/words/docx/export/calligra_filter_odt2docx.desktop
M  +1    -0    filters/words/docx/import/libokularGenerator_docx_calligra.desktop
M  +1    -0    filters/words/msword-odf/libokularGenerator_doc_calligra.desktop
M  +1    -0    filters/words/wiki/export/calligra_filter_odt2wiki.desktop
M  +2    -0    filters/words/wordperfect/import/libokularGenerator_wpd_calligra.desktop
 M  +5    -0    gemini/calligragemini.desktop
M  +5    -6    karbon/data/karbon.appdata.xml
M  +1    -1    kexi/kexi.appdata.xml
M  +2    -0    kexi/migration/txt/keximigrate_txt.desktop
M  +1    -1    kexi/plugins/tables/kexitabledesignerview.cpp
M  +5    -0    krita/data/krita_filefilter.desktop
M  +1    -0    krita/data/templates/design/web_design.desktop
M  +1    -0    krita/data/templates/texture/Texture1024x10248bitsrgb.desktop
M  +1    -0    krita/data/templates/texture/Texture2048x20488bitsrgb.desktop
M  +1    -0    krita/data/templates/texture/Texture256x2568bitsrgb.desktop
M  +1    -0    krita/data/templates/texture/Texture4096x40968bitsrgb.desktop
M  +1    -0    krita/data/templates/texture/Texture512x5128bitsrgb.desktop
M  +1    -1    krita/gemini/kritagemini.desktop
A  +30   -0    krita/integration/thumbnail/kritaanimation_kranim_thumbnail.desktop
M  +1    -0    krita/krita.appdata.xml
M  +2    -2    krita/krita.desktop
A  +41   -0    krita/plugins/extensions/dockers/animator/krita_animator.desktop
M  +2    -1    krita/plugins/extensions/dockers/colorslider/krita_colorslider.desktop
M  +6    -0    krita/plugins/extensions/layersplit/kritalayersplit.desktop
M  +1    -0    krita/plugins/extensions/resourcemanager/kritaresourcemanager.desktop
M  +2    -0    krita/plugins/filters/indexcolors/kritaindexcolors.desktop
M  +2    -0    krita/plugins/filters/posterize/kritaposterize.desktop
M  +1    -0    krita/plugins/formats/heightmap/krita_heightmap_export.desktop
M  +1    -0    krita/plugins/formats/heightmap/krita_heightmap_import.desktop
A  +26   -0    krita/plugins/formats/kranimseq/kranimseq_export.desktop
M  +1    -0    krita/plugins/formats/tga/krita_tga_export.desktop
M  +1    -0    krita/plugins/formats/tga/krita_tga_import.desktop
M  +1    -0    krita/plugins/paintops/gridbrush/kritagridpaintop.desktop
M  +1    -1    krita/plugins/tools/tool_transform2/kis_free_transform_strategy_gsl_helpers.cpp
 M  +1    -1    krita/sketch/kritasketch.desktop
M  +0    -3    krita/ui/forms/wdg_url_requester.ui
M  +1    -0    libs/kopageapp/tools/kopa_tool.desktop
M  +1    -1    libs/koreport/koreport_itemplugin.desktop
M  +1    -15   libs/kotext/KoSection.cpp
M  +5    -3    libs/kotext/KoSection.h
M  +1    -1    libs/kotext/KoSectionEnd.cpp
M  +5    -0    libs/kotext/KoSectionEnd.h
M  +85   -81   libs/kotext/KoSectionManager.cpp
M  +14   -27   libs/kotext/KoSectionManager.h
M  +33   -6    libs/kotext/KoSectionUtils.cpp
M  +32   -14   libs/kotext/KoSectionUtils.h
M  +4    -0    libs/kotext/KoTextPaste.cpp
M  +45   -85   libs/kotext/commands/DeleteCommand.cpp
M  +7    -14   libs/kotext/commands/NewSectionCommand.cpp
M  +13   -35   libs/kotext/opendocument/KoTextLoader.cpp
M  +11   -28   libs/kotext/opendocument/KoTextWriter_p.cpp
M  +12   -18   libs/kotext/tests/TestKoTextEditor.cpp
M  +21   -28   libs/textlayout/KoTextLayoutArea_paint.cpp
M  +2    -2    plugins/reporting/barcode/koreport_barcodeplugin.desktop
M  +4    -2    plugins/reporting/chart/koreport_chartplugin.desktop
M  +2    -2    plugins/reporting/maps/koreport_mapsplugin.desktop
M  +4    -2    plugins/reporting/web/koreport_webplugin.desktop
M  +2    -0    plugins/semanticitems/event/KoRdfCalendarEvent.h
M  +13   -8    plugins/textshape/dialogs/SectionFormatDialog.cpp
M  +2    -0    plugins/textshape/dialogs/SimpleInsertWidget.cpp
M  +1    -1    servicetypes/calligra_deferred_plugin.desktop
M  +2    -0    stage/data/kpr_tool.desktop
M  +4    -0    stage/templates/odf/cohere-blue.desktop
M  +4    -0    stage/templates/odf/cohere-gold.desktop
M  +4    -0    stage/templates/odf/cohere-magenta.desktop
M  +4    -0    stage/templates/odf/cohere-red.desktop
M  +3    -1    stage/templates/odf/skyline_monotone.desktop
M  +3    -1    stage/templates/odf/skyline_monotone_wide.desktop
M  +4    -2    stage/templates/odf/skyline_morning.desktop
M  +4    -2    stage/templates/odf/skyline_morning_wide.desktop
M  +4    -2    stage/templates/odf/skyline_night.desktop
M  +4    -2    stage/templates/odf/skyline_night_wide.desktop
M  +2    -0    words/app/words.appdata.xml
M  +1    -1    words/part/author/author.desktop
M  +1    -1    words/part/author/authorpart.desktop
M  +9    -21   words/part/dockers/KWDebugWidget.cpp

http://commits.kde.org/calligra/b62e5f48ca2783690cc82d9546f21db3ae3b3782

diff --git a/braindump/data/braindump.appdata.xml \
b/braindump/data/braindump.appdata.xml index 800e14a..a0efd72 100644
--- a/braindump/data/braindump.appdata.xml
+++ b/braindump/data/braindump.appdata.xml
@@ -11,6 +11,7 @@
   <name xml:lang="en-GB">Braindump</name>
   <name xml:lang="es">Braindump</name>
   <name xml:lang="fi">Braindump</name>
+  <name xml:lang="fr">Braindump</name>
   <name xml:lang="hu">Braindump</name>
   <name xml:lang="ia">Braindump</name>
   <name xml:lang="it">Braindump</name>
@@ -31,6 +32,7 @@
     <p xml:lang="en-GB">Braindump is a tool to dump and organise the content of your \
brain (ideas, drawings, images, texts…) to your computer. It works by allowing to \
create and edit whiteboards, which are infinite canvas on which you can add texts, \
images, charts, drawings, etc.</p>  <p xml:lang="es">Braindump es una herramienta \
para volcar y organizar el contenido de su cerebro (ideas, dibujos, imágenes, \
texto...) en su equipo. Permite crear y editar pizarras en blanco, es decir, lienzos \
infinitos en los que puede añadir textos, imágenes, diagramas, dibujos, etc.</p>  \
<p xml:lang="fi">Braindump on työkalu aivojesi sisällön (ajatusten, piirrosten, \
kuvien, tekstin…) purkamiseksi ja järjestämiseksi. Se toimii antamalla sinun \
luoda ja muokata valkotauluja, jotka ovat rajaton kangas tekstillesi, kuvillesi, \
kaavioillesi, piirroksillesi jne.</p> +    <p xml:lang="fr">Braindump est un outil \
pour mettre en ordre le contenu de votre cerveau (idées, dessins, images, textes…) \
sur votre ordinateur. Il vous permet de créer et d'éditer des tableaux blancs \
illimités sur lesquels vous pouvez ajouter des textes, des images, des graphiques, \
des dessins, etc.</p>  <p xml:lang="ia">Braindump es un instrumento pro discargar e \
organizar le contento de tu cerebro (ideas, designos, imagines, textos...) in tu \
computator. Illo functiona per permitter crear e modificar tabula blanc, que es telas \
infinite sur le qual on pote adder textos, imagines, diagrammas, designos, etc.</p>  \
<p xml:lang="it">Braindump è uno strumento per estrarre e organizzare il contenuto \
del tuo cervello (idee, disegni, immagini, testi...) sul tuo computer. Ti consente di \
creare e modificare lavagne bianche, che sono tele infinite sulle quali puoi \
aggiungere testi, immagini, grafici, disegni, ecc.</p>  <p xml:lang="nl">Braindump is \
een hulpmiddel om de inhoud van uw brein te dumpen en te organiseren (ideeën, \
tekeningen, afbeeldingen, teksten…) naar uw computer. Het werkt door u instaat te \
stellen whiteboards te bewerken, die oneindige werkvelden zijn waarop u teksten, \
                afbeeldingen, grafieken, tekeningen, etc. kunt toevoegen.</p>
diff --git a/extras/okularodtgenerator/libokularGenerator_odt.desktop \
b/extras/okularodtgenerator/libokularGenerator_odt.desktop index f9431ee..f174e63 \
                100644
--- a/extras/okularodtgenerator/libokularGenerator_odt.desktop
+++ b/extras/okularodtgenerator/libokularGenerator_odt.desktop
@@ -3,6 +3,7 @@ Type=Service
 Name=OpenDocument Text Document
 Name[ca]=Document de text OpenDocument
 Name[cs]=Textový dokument OpenDocument
+Name[da]=OpenDocument tekstdokument
 Name[de]=OpenDocument-Text-Dokument
 Name[en_GB]=OpenDocument Text Document
 Name[es]=Documento de texto OpenDocument
@@ -23,6 +24,7 @@ Name[x-test]=xxOpenDocument Text Documentxx
 Comment=Odt for okular
 Comment[ca]=ODT per a l'Okular
 Comment[cs]=Odt pro Okular
+Comment[da]=Odt til okular
 Comment[de]=Odt für Okular
 Comment[en_GB]=ODT for okular
 Comment[es]=Odt para Okular
diff --git a/extras/properties/calligradocinfopropspage.desktop \
b/extras/properties/calligradocinfopropspage.desktop index cb7dbeb..a5545ae 100644
--- a/extras/properties/calligradocinfopropspage.desktop
+++ b/extras/properties/calligradocinfopropspage.desktop
@@ -25,7 +25,7 @@ Name[ko]=Calligra 문서  보 속성 페이지
 Name[nb]=Calligra dokumentinformasjonsside
 Name[nds]=Dokmentinformatschonen-Egenschappensiet för Calligra
 Name[nl]=Document-info-eigenschappen-pagina van Calligra
-Name[pl]=Strona właściwości informacji o dokumencie dla Calligry
+Name[pl]=Strona właściwości dokumentu Calligry
 Name[pt]=Página de Propriedades do Documento do Calligra
 Name[pt_BR]=Página de propriedades do documento do Calligra
 Name[ru]=Страница сведений о документе Calligra
diff --git a/filters/stage/keynote/import/calligra_filter_key2odp.desktop \
b/filters/stage/keynote/import/calligra_filter_key2odp.desktop index b5a6aa1..241ba79 \
                100644
--- a/filters/stage/keynote/import/calligra_filter_key2odp.desktop
+++ b/filters/stage/keynote/import/calligra_filter_key2odp.desktop
@@ -3,6 +3,7 @@ Type=Service
 Name=Stage Apple Keynote Import Filter
 Name[ca]=Filtre d'importació de l'Apple Keynote per l'Stage
 Name[cs]=Importní filtr Apple Keynote do Stage
+Name[da]=Apple Keynote-importfilter til Stage
 Name[de]=Stage-Importfilter für Apple Keynote
 Name[en_GB]=Stage Apple Keynote Import Filter
 Name[es]=Filtro de Stage de importación de Apple Keynote
diff --git a/filters/stage/keynote/import/stage_key_thumbnail.desktop \
b/filters/stage/keynote/import/stage_key_thumbnail.desktop index a1676b8..35dc28a \
                100644
--- a/filters/stage/keynote/import/stage_key_thumbnail.desktop
+++ b/filters/stage/keynote/import/stage_key_thumbnail.desktop
@@ -3,6 +3,7 @@ Type=Service
 Name=Apple Keynote Documents
 Name[ca]=Documents de l'Apple Keynote
 Name[cs]=Dokumenty Apple Keynote
+Name[da]=Apple Keynote-dokumenter
 Name[de]=Apple Keynote Dokumente
 Name[en_GB]=Apple Keynote Documents
 Name[es]=Documentos de Apple Keynote
diff --git a/filters/stage/powerpoint/libokularGenerator_powerpoint_calligra.desktop \
b/filters/stage/powerpoint/libokularGenerator_powerpoint_calligra.desktop index \
                6b9ef46..70ced07 100644
--- a/filters/stage/powerpoint/libokularGenerator_powerpoint_calligra.desktop
+++ b/filters/stage/powerpoint/libokularGenerator_powerpoint_calligra.desktop
@@ -3,6 +3,7 @@ Type=Service
 Name=Microsoft PowerPoint Presentation
 Name[ca]=Presentacions del Microsoft PowerPoint
 Name[cs]=Prezentace Microsoft PowerPoint
+Name[da]=Microsoft Powerpoint-præsentation
 Name[de]=Microsoft-Powerpoint-Präsentation
 Name[en_GB]=Microsoft PowerPoint Presentation
 Name[es]=Presentación Microsoft Powerpoint
@@ -22,6 +23,7 @@ Name[x-test]=xxMicrosoft PowerPoint Presentationxx
 Comment=PPT for Okular
 Comment[ca]=PPT per a l'Okular
 Comment[cs]=PPT pro Okular
+Comment[da]=PPT til Okular
 Comment[de]=PPT für Okular
 Comment[en_GB]=PPT for Okular
 Comment[es]=PPT para Okular
diff --git a/filters/stage/pptx/libokularGenerator_pptx_calligra.desktop \
b/filters/stage/pptx/libokularGenerator_pptx_calligra.desktop index 98a620f..5cb6370 \
                100644
--- a/filters/stage/pptx/libokularGenerator_pptx_calligra.desktop
+++ b/filters/stage/pptx/libokularGenerator_pptx_calligra.desktop
@@ -3,6 +3,7 @@ Type=Service
 Name=Microsoft PowerPoint Presentation
 Name[ca]=Presentacions del Microsoft PowerPoint
 Name[cs]=Prezentace Microsoft PowerPoint
+Name[da]=Microsoft Powerpoint-præsentation
 Name[de]=Microsoft-Powerpoint-Präsentation
 Name[en_GB]=Microsoft PowerPoint Presentation
 Name[es]=Presentación Microsoft Powerpoint
@@ -22,6 +23,7 @@ Name[x-test]=xxMicrosoft PowerPoint Presentationxx
 Comment=PPTX for Okular
 Comment[ca]=PPTX per a l'Okular
 Comment[cs]=PPTX pro Okular
+Comment[da]=PPTX til Okular
 Comment[de]=PPTX für Okular
 Comment[en_GB]=PPTX for Okular
 Comment[es]=PPTX para Okular
diff --git a/filters/words/docx/export/calligra_filter_odt2docx.desktop \
b/filters/words/docx/export/calligra_filter_odt2docx.desktop index 48a6174..106d851 \
                100644
--- a/filters/words/docx/export/calligra_filter_odt2docx.desktop
+++ b/filters/words/docx/export/calligra_filter_odt2docx.desktop
@@ -3,6 +3,7 @@ Type=Service
 Name=MS Word DOCX Export Filter
 Name[ca]=Filtre d'exportació DOCX per al Word de MS
 Name[cs]=Exportní filtr MS Word DOCX
+Name[da]=MS Word DOCX-eksportfilter
 Name[de]=MS Word DOCX-Exportfilter
 Name[en_GB]=MS Word DOCX Export Filter
 Name[es]=Filtro de exportación a DOCX de MS Word
diff --git a/filters/words/docx/import/libokularGenerator_docx_calligra.desktop \
b/filters/words/docx/import/libokularGenerator_docx_calligra.desktop index \
                e3fcf6a..5017a01 100644
--- a/filters/words/docx/import/libokularGenerator_docx_calligra.desktop
+++ b/filters/words/docx/import/libokularGenerator_docx_calligra.desktop
@@ -37,6 +37,7 @@ Name[zh_CN]=Microsoft Word 2007 文本文档
 Comment=DOCX for Okular
 Comment[ca]=DOCX per a l'Okular
 Comment[cs]=DOCX pro Okular
+Comment[da]=DOCX til Okular
 Comment[de]=DOCX für Okular
 Comment[en_GB]=DOCX for Okular
 Comment[es]=DOCX para Okular
diff --git a/filters/words/msword-odf/libokularGenerator_doc_calligra.desktop \
b/filters/words/msword-odf/libokularGenerator_doc_calligra.desktop index \
                4a63da8..61ae3d4 100644
--- a/filters/words/msword-odf/libokularGenerator_doc_calligra.desktop
+++ b/filters/words/msword-odf/libokularGenerator_doc_calligra.desktop
@@ -36,6 +36,7 @@ Name[zh_CN]=Microsoft Word 文本文档
 Comment=DOC for Okular
 Comment[ca]=DOC per a l'Okular
 Comment[cs]=DOC pro Okular
+Comment[da]=DOC til Okular
 Comment[de]=DOC für Okular
 Comment[en_GB]=DOC for Okular
 Comment[es]=DOC para Okular
diff --git a/filters/words/wiki/export/calligra_filter_odt2wiki.desktop \
b/filters/words/wiki/export/calligra_filter_odt2wiki.desktop index e3f8b690..6e28a8b \
                100644
--- a/filters/words/wiki/export/calligra_filter_odt2wiki.desktop
+++ b/filters/words/wiki/export/calligra_filter_odt2wiki.desktop
@@ -3,6 +3,7 @@ Type=Service
 Name=Words Wiki Export Filter
 Name[ca]=Filtre d'exportació Wiki per al Words
 Name[cs]=Exportní filtr Words Wiki
+Name[da]=Words Wiki-eksportfilter
 Name[de]=Words Wiki-Exportfilter
 Name[en_GB]=Words Wiki Export Filter
 Name[es]=Filtro de Words de exportación a Wiki
diff --git a/filters/words/wordperfect/import/libokularGenerator_wpd_calligra.desktop \
b/filters/words/wordperfect/import/libokularGenerator_wpd_calligra.desktop index \
                c89e518..b9d2334 100644
--- a/filters/words/wordperfect/import/libokularGenerator_wpd_calligra.desktop
+++ b/filters/words/wordperfect/import/libokularGenerator_wpd_calligra.desktop
@@ -34,10 +34,12 @@ Name[zh_CN]=WordPerfect 文本文档
 Comment=WPD for Okular
 Comment[ca]=WPD per a l'Okular
 Comment[cs]=WPD pro Okular
+Comment[da]=WPD til Okular
 Comment[de]=WPD für Okular
 Comment[en_GB]=WPD for Okular
 Comment[es]=WPD para Okular
 Comment[fi]=WPD Okulariin
+Comment[ia]=WPD pro Okular
 Comment[it]=WPD per Okular
 Comment[ja]=Okular 用 WPD
 Comment[nb]=WPD for Okular
diff --git a/gemini/calligragemini.desktop b/gemini/calligragemini.desktop
index cc4fa73..8d602b4 100644
--- a/gemini/calligragemini.desktop
+++ b/gemini/calligragemini.desktop
@@ -3,22 +3,26 @@ Type=Application
 Name=Calligra Gemini
 Name[ca]=Calligra Gemini
 Name[cs]=Calligra Gemini
+Name[da]=Calligra Gemini
 Name[de]=Calligra Gemini
 Name[en_GB]=Calligra Gemini
 Name[es]=Calligra Gemini
 Name[fi]=Calligra Gemini
+Name[ia]=Calligra Gemini
 Name[it]=Calligra Gemini
 Name[nl]=Calligra Gemini
 Name[pl]=Calligra Gemini
 Name[pt]=Calligra Gemini
 Name[pt_BR]=Calligra Gemini
 Name[sk]=Calligra Gemini
+Name[sv]=Calligra Gemini
 Name[uk]=Calligra Gemini
 Name[x-test]=xxCalligra Geminixx
 Version=1.0
 GenericName=Word Processing and Presentation
 GenericName[ca]=Processament de texts i presentacions
 GenericName[cs]=Práce s textem a prezentacemi
+GenericName[da]=Tekstbehandling og præsentation
 GenericName[de]=Textverarbeitung und Präsentation
 GenericName[en_GB]=Word Processing and Presentation
 GenericName[es]=Procesador de texto y presentaciones
@@ -29,6 +33,7 @@ GenericName[pl]=Edytor tekstu i prezentacji
 GenericName[pt]=Processamento de Texto e Apresentações
 GenericName[pt_BR]=Processamento de Texto e Apresentação
 GenericName[sk]=Spracovanie textu a prezentácie
+GenericName[sv]=Ordbehandling och presentation
 GenericName[uk]= обота з текстом і презентації
 GenericName[x-test]=xxWord Processing and Presentationxx
 Exec=calligragemini %u
diff --git a/karbon/data/karbon.appdata.xml b/karbon/data/karbon.appdata.xml
index f17b95b..62afbcf 100644
--- a/karbon/data/karbon.appdata.xml
+++ b/karbon/data/karbon.appdata.xml
@@ -42,16 +42,14 @@
   <summary xml:lang="x-test">xxScalable Graphicsxx</summary>
   <description>
     <p>
-      Karbon is a vector drawing application with an user interface that is easy to \
use, highly customizable and extensible. +      Karbon is a vector drawing \
application with a user interface that is easy to use, highly customizable and \
                extensible.
       That makes Karbon a great application for users starting to explore the world \
of vector graphics as well as for artists  wanting to create breathtaking vector art.
     </p>
     <p xml:lang="ca">El Karbon és una aplicació de dibuix vectorial amb una \
interfície d'usuari senzilla d'utilitzar, que es pot personalitzar i ampliar molt. \
Això converteix el Karbon en una gran aplicació per usuaris que comencin a explorar \
el món dels gr fics vectorial i també pels artistes que volen crear art vectorial \
                que deixi bocabadat.</p>
-    <p xml:lang="en-GB">Karbon is a vector drawing application with an user \
interface that is easy to use, highly customisable and extensible. That makes Karbon \
a great application for users starting to explore the world of vector graphics as \
                well as for artists wanting to create breathtaking vector art.</p>
-    <p xml:lang="es">Karbon es una aplicación de dibujo vectorial que dispone de \
una interfaz de usuario intuitiva, altamente personalizable y extensible. Todo ello \
hace que Karbon sea una gran aplicación para aquellos usuarios que empiezan a \
explorar el mundo de los gráficos vectoriales así como para los artistas que desean \
crear impresionantes piezas de arte vectorial.</p> +    <p xml:lang="en-GB">Karbon is \
a vector drawing application with a user interface that is easy to use, highly \
customisable and extensible. That makes Karbon a great application for users starting \
to explore the world of vector graphics as well as for artists wanting to create \
breathtaking vector art.</p>  <p xml:lang="fi">Karbon on vektorigrafiikkasovellus, \
jonka käyttöliittymä on helppo ja laajasti mukautettavissa ja laajennettavissa. \
Karbon on näin loistava sovellus vektorigrafiikan maailmaan vasta tutustuville \
käyttäjille samoin kuin henkeäsalpaavaa vektoritaidetta luoville \
                taiteilijoille.</p>
-    <p xml:lang="it">Karbon è un'applicazione di disegno vettoriale con \
un'interfaccia utente facile da utilizzare, altamente personalizzabile ed \
estendibile. Ciò rende Karbon una grande applicazione per gli utenti che iniziano a \
esplorare il mondo della grafica vettoriale così come per gli artisti che vogliono \
                creare straordinarie opere vettoriali. </p>
-    <p xml:lang="ja">Karbon \
は使いやすさを重視したベクタードローイングアプリケーショ \
で、高度なカスタマイズ性と拡張機能を備えています。初めてベクターグラフィックスの世界に入る方 \
けではなく、息を飲むようなベクターアートを作成したいアーティストにも最適なアプリケーションです</p>
 +    <p xml:lang="it">Karbon è un'applicazione di disegno vettoriale con \
un'interfaccia utente facile da utilizzare, altamente personalizzabile ed \
estendibile. Ciò rende Karbon un'ottima applicazione per gli utenti che iniziano a \
esplorare il mondo della grafica vettoriale così come per gli artisti che vogliono \
creare straordinarie opere vettoriali. </p>  <p xml:lang="nl">Karbon is een \
toepassing voor tekenen met vectoren met een gebruikersinterface dat gemakkelijk is \
te gebruiken, zeer goed aan te passen en uit te breiden. Dit maakt Karbon een \
geweldige toepassing voor gebruikers die de wereld van grafiek met vectoren aan het \
verkennen zijn evenals voor kunstenaars die adembenemende vectorkunst willen \
maken.</p>  <p xml:lang="pl">Karbon jest programem do rysowania wektorowego z \
układem sterowania, który jest łatwy w użyciu, wysoce dostosowywalny i \
rozszerzalny. To czyni Karbon wspaniałym programem dla użytkowników zaczynających \
poznawanie świata grafiki wektorowej, a artystów zachęca do tworzenie sztuki \
wektorowej zapierającej dech w piersiach.</p>  <p xml:lang="pt">O Karbon é uma \
aplicação de desenho vectorial com uma interface simples de usar, facilmente \
configurável e modular. Isto torna o Karbon uma óptima aplicação para os \
utilizadores que começam a explorar o mundo dos gráficos vectoriais, assim como \
para os artistas que desejam criar arte vectorial espectacular.</p> @@ -59,7 +57,7 @@
     <p xml:lang="sk">Karbon je vektorová kresliaca aplikácia s používateľským \
rozhraním jednoduchým na používanie, veľmi prispôsobiteľná a \
rozšíriteľná. Toto robí z Karbonu výbornú aplikáciu pre používateľov, \
ktorí začínajú objavovať sveet vektorovej grafiky, ako aj pre umelcov, ktorí \
chcú vytvárať dych vyrážajúce vektorové umenie.</p>  <p xml:lang="sv">Karbon \
är ett vektorritprogram med ett användargränssnitt som är lätt att använda, \
ytterst anpassningsbart och utökningsbart. Det gör Karbon till ett utmärkt program \
för användare som börjar utforska vektorgrafikvärlden samt för konstnärer som \
vill skapa hänförande vektorkonst.</p>  <p xml:lang="uk">Karbon — \
програма для векторного малювання з простим, \
гнучким та придатним до розширення \
інтерфейсом користувача. Це робить Karbon \
чудовою програмою для користувачів, які \
починають знайомитися зі світом векторної \
графіки, а також для художників, які хочуть \
                створити захоплюючі векторні \
                твори.</p>
-    <p xml:lang="x-test">xxKarbon is a vector drawing application with an user \
interface that is easy to use, highly customizable and extensible. That makes Karbon \
a great application for users starting to explore the world of vector graphics as \
well as for artists wanting to create breathtaking vector art.xx</p> +    <p \
xml:lang="x-test">xxKarbon is a vector drawing application with a user interface that \
is easy to use, highly customizable and extensible. That makes Karbon a great \
application for users starting to explore the world of vector graphics as well as for \
artists wanting to create breathtaking vector art.xx</p>  <p>Features:</p>
     <p xml:lang="ca">Característiques:</p>
     <p xml:lang="cs">Vlastnosti:</p>
@@ -124,6 +122,7 @@
       <li xml:lang="en-GB">Customisable user interface with freely placeable \
                toolbars and dockers</li>
       <li xml:lang="es">Interfaz de usuario personalizable con barras de \
herramientas y acoplables que se pueden posicionar libremente en cualquier \
                lugar.</li>
       <li xml:lang="fi">Mukautettava käyttöliittymä, jonka työkalurivit ja \
telakat ovat vapaasti sijoitettavissa</li> +      <li xml:lang="ia">Interfacie de \
usator personalisabile con barra de instrumentos e stivatores (dockers) liberemente \
                positionabile</li>
       <li xml:lang="it">Interfaccia utente personalizzabile con barre degli \
                strumenti posizionabili liberamente e aree di aggancio</li>
       <li xml:lang="nl">Aan te passen gebruikersinterface met vrij te plaatsen \
                werkbalken en verankeringen</li>
       <li xml:lang="pl">Układ sterowania z dowolnie umieszczanymi paskami narzędzi \
                i dokowaniami</li>
diff --git a/kexi/kexi.appdata.xml b/kexi/kexi.appdata.xml
index 97e6622..60d0676 100644
--- a/kexi/kexi.appdata.xml
+++ b/kexi/kexi.appdata.xml
@@ -92,7 +92,7 @@
       <li xml:lang="it">Progettazione completamente visuale di tabelle, query e \
                report</li>
       <li xml:lang="ja">テーブル、クエリー、フォー \
                およびレポートをすべて視覚的にでデザインできます</li>
                
       <li xml:lang="nl">Volledige visueel ontwerpen van tabellen, zoekopdrachten, \
                formulieren en rapporten</li>
-      <li xml:lang="pl">W pełni wizualna możliwość tworzenia tabel, zapytań, \
formularzy i sprawozdań</li> +      <li xml:lang="pl">W pełni wizualna możliwość \
                tworzenia tabel, zapytań, formularzy i raportów</li>
       <li xml:lang="pt">Desenhadores visuais completos para tabelas, pesquisas, \
                formulários e relatórios</li>
       <li xml:lang="pt-BR">Desenhos visuais completos para tabelas, pesquisas, \
                formulários e relatórios</li>
       <li xml:lang="sk">Plne vizuálny návrh pre tabuľky, dotazy, formuláre a \
                správy</li>
diff --git a/kexi/migration/txt/keximigrate_txt.desktop \
b/kexi/migration/txt/keximigrate_txt.desktop index 03147fa..df20ca5 100644
--- a/kexi/migration/txt/keximigrate_txt.desktop
+++ b/kexi/migration/txt/keximigrate_txt.desktop
@@ -1,6 +1,7 @@
 [Desktop Entry]
 Name=TSV
 Name[ca]=TSV
+Name[da]=TSV
 Name[de]=TSV
 Name[en_GB]=TSV
 Name[es]=TSV
@@ -20,6 +21,7 @@ Name[uk]=TSV
 Name[x-test]=xxTSVxx
 Comment="Tab Separated Values" Document Import Plugin for Kexi
 Comment[ca]=Connector d'importació de documents  Valors separats per tabulacions  \
(TSV) pel Kexi +Comment[da]=Importplugin til "tabulatorseparerede \
værdier"-dokumenter (TSV) til Kexi  Comment[de]=„Durch Tabulator getrennte \
Werte"-Dokument-Importmodul für Kexi  Comment[en_GB]="Tab Separated Values" Document \
Import Plugin for Kexi  Comment[es]=Complemento de importación de documentos de  \
                valores separados por tabuladores  para Kexi
diff --git a/kexi/plugins/tables/kexitabledesignerview.cpp \
b/kexi/plugins/tables/kexitabledesignerview.cpp index 8352408..f9d761e 100644
--- a/kexi/plugins/tables/kexitabledesignerview.cpp
+++ b/kexi/plugins/tables/kexitabledesignerview.cpp
@@ -1193,7 +1193,7 @@ tristate KexiTableDesignerView::buildSchema(KexiDB::TableSchema \
&schema, bool be  "for creating relations between database tables. "
                      "Do you want a primary key to be automatically added \
                now?</note></para>"
                      "<para>If you want to add a primary key by hand, press \
                <interface>Cancel</interface> "
-                     "to cancel saving table design.</para></note>", schema.name()),
+                     "to cancel saving table design.</para>", schema.name()),
                 QString(),
                 KGuiItem(i18nc("Add Database Primary Key to a Table", "&Add Primary \
                Key"), koIconName("key")),
                 KGuiItem(i18nc("Do Not Add Database Primary Key to a Table", "Do \
                &Not Add"), KStandardGuiItem::no().icon()),
diff --git a/krita/data/krita_filefilter.desktop \
b/krita/data/krita_filefilter.desktop index 808a8c7..d5f4885 100644
--- a/krita/data/krita_filefilter.desktop
+++ b/krita/data/krita_filefilter.desktop
@@ -4,11 +4,16 @@ X-KDE-ServiceType=Krita/FileFilter
 Comment=Krita FileFilter
 Comment[ca]=Filtre de fitxers per al Krita
 Comment[cs]=Krita FileFilter
+Comment[da]=Krita filfilter
 Comment[de]=Krita-Dateifilter
+Comment[en_GB]=Krita FileFilter
+Comment[it]=Filtro file per Krita
 Comment[nl]=Bestandsfilter voor Krita
 Comment[pl]=Filtr plików Krita
 Comment[pt]=Filtro de Ficheiros do Krita
+Comment[pt_BR]=Filtro de arquivos do Krita
 Comment[sk]=Filter súborov Krita
+Comment[sv]=Krita filfilter
 Comment[uk]=Фільтр файлів для Krita
 Comment[x-test]=xxKrita FileFilterxx
 
diff --git a/krita/data/templates/design/web_design.desktop \
b/krita/data/templates/design/web_design.desktop index cdc74ce..fe48671 100644
--- a/krita/data/templates/design/web_design.desktop
+++ b/krita/data/templates/design/web_design.desktop
@@ -3,6 +3,7 @@ Icon=template_web_design
 Name=Web Design [ 2160x1440 , 72ppi RGB , 8bit ]
 Name[ca]=Disseny Web [ 2160x1440 / 72ppi RGB / 8bit ]
 Name[cs]=Návrh webu [ 2160x1440 , 72ppi RGB , 8bit ]
+Name[da]=Webdesign [ 2160x1440 , 72ppi RGB , 8bit ]
 Name[de]=Web-Design [ 2160x1440 , 72ppi RGB , 8bit ]
 Name[en_GB]=Web Design [ 2160x1440 , 72ppi RGB , 8bit ]
 Name[es]=Diseño de web 4:3 [ 2160x1440 , 72ppi RGB , 8bit ]
diff --git a/krita/data/templates/texture/Texture1024x10248bitsrgb.desktop \
b/krita/data/templates/texture/Texture1024x10248bitsrgb.desktop index \
                18ecc7e..7282e94 100644
--- a/krita/data/templates/texture/Texture1024x10248bitsrgb.desktop
+++ b/krita/data/templates/texture/Texture1024x10248bitsrgb.desktop
@@ -3,6 +3,7 @@ Icon=template_texture
 Name=Texture 1024x1024 8bit srgb
 Name[ca]=Textura 1024x1024 8bit SRGB
 Name[cs]=Textura 1024x1024 8bit srgb
+Name[da]=Tekstur 1024x1024 8bit srgb
 Name[de]=Textur 1024x1024 8bit srgb
 Name[en_GB]=Texture 1024x1024 8bit srgb
 Name[es]=Textura 1024x1024 8bits srgb
diff --git a/krita/data/templates/texture/Texture2048x20488bitsrgb.desktop \
b/krita/data/templates/texture/Texture2048x20488bitsrgb.desktop index \
                3b50404..ad213d7 100644
--- a/krita/data/templates/texture/Texture2048x20488bitsrgb.desktop
+++ b/krita/data/templates/texture/Texture2048x20488bitsrgb.desktop
@@ -3,6 +3,7 @@ Icon=template_texture
 Name=Texture 2048x2048 8bit srgb
 Name[ca]=Textura 2048x2048 8bit SRGB
 Name[cs]=Textura 2048x2048 8bit srgb
+Name[da]=Tekstur 2048x2048 8bit srgb
 Name[de]=Textur 2048x2048 8bit srgb
 Name[en_GB]=Texture 2048x2048 8bit srgb
 Name[es]=Textura 2048x2048 8bits srgb
diff --git a/krita/data/templates/texture/Texture256x2568bitsrgb.desktop \
b/krita/data/templates/texture/Texture256x2568bitsrgb.desktop index f85ea06..d4f9b58 \
                100644
--- a/krita/data/templates/texture/Texture256x2568bitsrgb.desktop
+++ b/krita/data/templates/texture/Texture256x2568bitsrgb.desktop
@@ -3,6 +3,7 @@ Icon=template_texture
 Name=Texture 256x256 8bit srgb
 Name[ca]=Textura 256x256 8bit SRGB
 Name[cs]=Textura 256x256 8bit srgb
+Name[da]=Tekstur 256x256 8bit srgb
 Name[de]=Textur 256x256 8bit srgb
 Name[en_GB]=Texture 256x256 8bit srgb
 Name[es]=Textura 256x256 8bits srgb
diff --git a/krita/data/templates/texture/Texture4096x40968bitsrgb.desktop \
b/krita/data/templates/texture/Texture4096x40968bitsrgb.desktop index \
                1884f06..c94a155 100644
--- a/krita/data/templates/texture/Texture4096x40968bitsrgb.desktop
+++ b/krita/data/templates/texture/Texture4096x40968bitsrgb.desktop
@@ -3,6 +3,7 @@ Icon=template_texture
 Name=Texture 4096x4096 8bit srgb
 Name[ca]=Textura 4096x4096 8bit SRGB
 Name[cs]=Textura 4096x4096 8bit srgb
+Name[da]=Tekstur 4096x4096 8bit srgb
 Name[de]=Textur 4096x4096 8bit srgb
 Name[en_GB]=Texture 4096x4096 8bit srgb
 Name[es]=Textura 4096x4096 8bits srgb
diff --git a/krita/data/templates/texture/Texture512x5128bitsrgb.desktop \
b/krita/data/templates/texture/Texture512x5128bitsrgb.desktop index e991d9c..8d5833c \
                100644
--- a/krita/data/templates/texture/Texture512x5128bitsrgb.desktop
+++ b/krita/data/templates/texture/Texture512x5128bitsrgb.desktop
@@ -3,6 +3,7 @@ Icon=template_texture
 Name=Texture 512x512 8bit srgb
 Name[ca]=Textura 512x512 8bit SRGB
 Name[cs]=Textura 512x512 8bit srgb
+Name[da]=Tekstur 512x512 8bit srgb
 Name[de]=Textur 512x512 8bit srgb
 Name[en_GB]=Texture 512x512 8bit srgb
 Name[es]=Textura 512x512 8bits srgb
diff --git a/krita/gemini/kritagemini.desktop b/krita/gemini/kritagemini.desktop
index 8ab9a82..f20da78 100644
--- a/krita/gemini/kritagemini.desktop
+++ b/krita/gemini/kritagemini.desktop
@@ -23,7 +23,7 @@ GenericName[lt]=Skaitmeninis piešimas
 GenericName[mr]=डिजिटल पेंटिंग
 GenericName[nb]=Digital maling
 GenericName[nl]=Digitaal schilderen
-GenericName[pl]=Cyfrowe malowanie 
+GenericName[pl]=Cyfrowe malowanie
 GenericName[pt]=Pintura Digital
 GenericName[pt_BR]=Pintura digital
 GenericName[ru]=Цифровая живопись
diff --git a/krita/integration/thumbnail/kritaanimation_kranim_thumbnail.desktop \
b/krita/integration/thumbnail/kritaanimation_kranim_thumbnail.desktop new file mode \
100644 index 0000000..1f9dd72
--- /dev/null
+++ b/krita/integration/thumbnail/kritaanimation_kranim_thumbnail.desktop
@@ -0,0 +1,30 @@
+
+[Desktop Entry]
+Type=Service
+Name=Krita Animation Documents
+Name[ca]=Documents d'animació del Krita
+Name[cs]=Dokumenty animace Krita
+Name[da]=Krita Animation-dokumenter
+Name[de]=Krita-Animationsdokumente
+Name[en_GB]=Krita Animation Documents
+Name[es]=Documentos de Krita animación
+Name[fi]=Krita-animaatiotiedostot
+Name[ia]=Documentos de animation de Krita
+Name[it]=Documenti di animazione di Krita
+Name[ja]=Krita Animation 文書
+Name[nb]=Krita animasjonsdokumenter
+Name[nl]=Animatiedocumenten van Krita
+Name[pl]=Dokumenty animacji Krita
+Name[pt]=Documentos do Krita Animação
+Name[pt_BR]=Documentos de animação do Krita
+Name[sk]=Dokumenty animácií Krita
+Name[sv]=Krita-animeringsdokument
+Name[uk]=Документи анімації Krita
+Name[x-test]=xxKrita Animation Documentsxx
+
+
+X-KDE-ServiceTypes=ThumbCreator
+MimeType=application/x-krita-animation;
+
+X-KDE-Library=kritathumbnail
+CacheThumbnail=true
diff --git a/krita/krita.appdata.xml b/krita/krita.appdata.xml
index 6556f7a..9b91f5e 100644
--- a/krita/krita.appdata.xml
+++ b/krita/krita.appdata.xml
@@ -44,6 +44,7 @@
     <p xml:lang="en-GB">It is perfect for sketching and painting, and presents an \
end–to–end solution for creating digital painting files from scratch by \
masters.</p>  <p xml:lang="es">Es perfecto para diseñar y pintar, y ofrece una \
solución completa para crear desde cero archivos de pintura digital apta para \
                profesionales.</p>
     <p xml:lang="fi">Se on täydellinen luonnosteluun ja maalaukseen ja tarjoaa \
kokonaisratkaisun digitaalisten kuvatiedostojen luomiseen alusta alkaen.</p> +    <p \
xml:lang="ia">Illo es perfecte pro schizzar e pinger, e presenta un solution ab fin \
al fin pro crear files de pictura digital ab grattamentos per maestros.</p>  <p \
xml:lang="it">Perfetto per fare schizzi e dipingere, prevede una soluzione completa \
che consente agli artisti di creare file di dipinti digitali partendo da zero.</p>  \
<p xml:lang="nl">Het is perfect voor schetsen en schilderen en zet een end–to–end \
oplossing voor het maken van digitale bestanden voor schilderingen vanuit het niets \
door meesters.</p>  <p xml:lang="pl">Nadaje się perfekcyjnie do szkicowania i \
malowania i dostarcza zupełnego rozwiązania dla tworzenia plików malowideł \
                cyfrowych od zalążka.</p>
diff --git a/krita/krita.desktop b/krita/krita.desktop
index f0a74ee..0a7d90b 100644
--- a/krita/krita.desktop
+++ b/krita/krita.desktop
@@ -84,7 +84,7 @@ GenericName[lt]=Skaitmeninis piešimas
 GenericName[mr]=डिजिटल पेंटिंग
 GenericName[nb]=Digital maling
 GenericName[nl]=Digitaal schilderen
-GenericName[pl]=Cyfrowe malowanie 
+GenericName[pl]=Cyfrowe malowanie
 GenericName[pt]=Pintura Digital
 GenericName[pt_BR]=Pintura digital
 GenericName[ru]=Цифровая живопись
@@ -117,7 +117,7 @@ Comment[lt]=Skaitmeninis piešimas
 Comment[mr]=डिजिटल पेंटिंग
 Comment[nb]=Digital maling
 Comment[nl]=Digitaal schilderen
-Comment[pl]=Cyfrowe malowanie 
+Comment[pl]=Cyfrowe malowanie
 Comment[pt]=Pintura Digital
 Comment[pt_BR]=Pintura digital
 Comment[ru]=Цифровая живопись
diff --git a/krita/plugins/extensions/dockers/animator/krita_animator.desktop \
b/krita/plugins/extensions/dockers/animator/krita_animator.desktop new file mode \
100644 index 0000000..7856afd
--- /dev/null
+++ b/krita/plugins/extensions/dockers/animator/krita_animator.desktop
@@ -0,0 +1,41 @@
+[Desktop Entry]
+Name=Animator
+Name[ca]=Animador
+Name[cs]=Nástroj pro animace
+Name[da]=Animator
+Name[de]=Animator
+Name[en_GB]=Animator
+Name[es]=Animador
+Name[it]=Animatore
+Name[ja]=アニメータ
+Name[nb]=Animator
+Name[nl]=Animator
+Name[pl]=Animator
+Name[pt]=Animador
+Name[pt_BR]=Animador
+Name[sk]=Animátor
+Name[sv]=Animeringsverktyg
+Name[uk]=Animator
+Name[x-test]=xxAnimatorxx
+Comment=Animator
+Comment[ca]=Animador
+Comment[cs]=Nástroj pro animace
+Comment[da]=Animator
+Comment[de]=Animator
+Comment[en_GB]=Animator
+Comment[es]=Animador
+Comment[it]=Animatore
+Comment[ja]=アニメータ
+Comment[nb]=Animator
+Comment[nl]=Animator
+Comment[pl]=Animator
+Comment[pt]=Animador
+Comment[pt_BR]=Animador
+Comment[sk]=Animátor
+Comment[sv]=Animeringsverktyg
+Comment[uk]=Аніматор
+Comment[x-test]=xxAnimatorxx
+X-KDE-ServiceTypes=Krita/Dock
+Type=Service
+X-KDE-Library=kritaanimator
+X-Krita-Version=28
diff --git a/krita/plugins/extensions/dockers/colorslider/krita_colorslider.desktop \
b/krita/plugins/extensions/dockers/colorslider/krita_colorslider.desktop index \
                73ce1c0..672db44 100644
--- a/krita/plugins/extensions/dockers/colorslider/krita_colorslider.desktop
+++ b/krita/plugins/extensions/dockers/colorslider/krita_colorslider.desktop
@@ -1,6 +1,7 @@
 [Desktop Entry]
 Name=ColorSlider
 Name[ca]=ControlLliscantColor
+Name[da]=ColorSlider
 Name[de]=Farbschieber
 Name[en_GB]=ColourSlider
 Name[es]=Selector de color
@@ -8,7 +9,7 @@ Name[it]=Cursore del colore
 Name[ja]=カラースライダー
 Name[nb]=ColorSlider
 Name[nl]=KleurSchuifknop
-Name[pl]=Suwa koloru
+Name[pl]=Suwak koloru
 Name[pt]=Barras de Cores
 Name[pt_BR]=Seletor de Cores
 Name[sk]=Posuvník farieb
diff --git a/krita/plugins/extensions/layersplit/kritalayersplit.desktop \
b/krita/plugins/extensions/layersplit/kritalayersplit.desktop index 427dbeb..3605bda \
                100644
--- a/krita/plugins/extensions/layersplit/kritalayersplit.desktop
+++ b/krita/plugins/extensions/layersplit/kritalayersplit.desktop
@@ -1,9 +1,15 @@
 [Desktop Entry]
 Name=Layer Splitter
 Name[ca]=Separador de capes
+Name[da]=Lagopdeler
+Name[en_GB]=Layer Splitter
+Name[it]=Divisore di livelli
 Name[nl]=Splitser van lagen
+Name[pl]=Podzielnik warstwy
 Name[pt]=Divisor de Camadas
+Name[pt_BR]=Divisor de camadas
 Name[sk]=Rozdeľovač vrstiev
+Name[sv]=Lagerdelning
 Name[uk]= оздільник шарів
 Name[x-test]=xxLayer Splitterxx
 X-KDE-ServiceTypes=Krita/ViewPlugin
diff --git a/krita/plugins/extensions/resourcemanager/kritaresourcemanager.desktop \
b/krita/plugins/extensions/resourcemanager/kritaresourcemanager.desktop index \
                09ff26a..aebe72c 100644
--- a/krita/plugins/extensions/resourcemanager/kritaresourcemanager.desktop
+++ b/krita/plugins/extensions/resourcemanager/kritaresourcemanager.desktop
@@ -2,6 +2,7 @@
 Name=Resource Manager
 Name[ca]=Gestor de recursos
 Name[cs]=Správce zdrojů
+Name[da]=Håndtering af ressourcer
 Name[de]=Ressourcenverwaltung
 Name[en_GB]=Resource Manager
 Name[es]=Gestor de recursos
diff --git a/krita/plugins/filters/indexcolors/kritaindexcolors.desktop \
b/krita/plugins/filters/indexcolors/kritaindexcolors.desktop index 732ef12..05d153b \
                100644
--- a/krita/plugins/filters/indexcolors/kritaindexcolors.desktop
+++ b/krita/plugins/filters/indexcolors/kritaindexcolors.desktop
@@ -1,6 +1,7 @@
 [Desktop Entry]
 Name=Index Colors Filter
 Name[ca]=Filtre de colors indexats
+Name[da]=Indeksfarvefilter
 Name[de]=Farbfilter-Index
 Name[en_GB]=Index Colours Filter
 Name[es]=Filtros de colores indexados
@@ -18,6 +19,7 @@ Name[uk]=Фільтр індексованих кольорів
 Name[x-test]=xxIndex Colors Filterxx
 Comment=Reduce the amount of colors in the picture to a pre-defined palette.
 Comment[ca]=Redueix la quantitat de colors en la imatge a una paleta predefinida.
+Comment[da]=Reducér mængden af farver i billedet til en prædefineret palette.
 Comment[de]=Reduziert die Anzahl der Farben im Bild auf eine vordefinierte Palette.
 Comment[en_GB]=Reduce the amount of colours in the picture to a pre-defined palette.
 Comment[es]=Reduce la cantidad de colores que hay en una imagen a una paleta \
                predefinida.
diff --git a/krita/plugins/filters/posterize/kritaposterize.desktop \
b/krita/plugins/filters/posterize/kritaposterize.desktop index ab98f09..fb12ea2 \
                100644
--- a/krita/plugins/filters/posterize/kritaposterize.desktop
+++ b/krita/plugins/filters/posterize/kritaposterize.desktop
@@ -1,6 +1,7 @@
 [Desktop Entry]
 Name=Posterize Filter
 Name[ca]=Filtre de posterització
+Name[da]=Posteriseringsfilter
 Name[de]=Posterisation-Filter
 Name[en_GB]=Posterise Filter
 Name[es]=Filtro posterizar
@@ -19,6 +20,7 @@ Name[uk]=Фільтр постеризації
 Name[x-test]=xxPosterize Filterxx
 Comment=Reduce the amount of colors in the picture to a fixed interval
 Comment[ca]=Redueix la quantitat de colors en la imatge a un interval fix
+Comment[da]=Reducér mængden af farver i billedet til et fast interval
 Comment[de]=Reduziert die Anzahl der Farben im Bild auf ein festgelegtes Intervall \
(Tontrennung)  Comment[en_GB]=Reduce the amount of colours in the picture to a fixed \
interval  Comment[es]=Reduce la cantidad de colores que hay en una imagen a un \
                intervalo fijo
diff --git a/krita/plugins/formats/heightmap/krita_heightmap_export.desktop \
b/krita/plugins/formats/heightmap/krita_heightmap_export.desktop index \
                b1d128a..550d69e 100644
--- a/krita/plugins/formats/heightmap/krita_heightmap_export.desktop
+++ b/krita/plugins/formats/heightmap/krita_heightmap_export.desktop
@@ -3,6 +3,7 @@ Icon=
 Name=Krita HeightMap Export Filter
 Name[ca]=Filtre d'exportació HeightMap per al Krita
 Name[cs]=Exportní filtr výškové mapy pro Krita
+Name[da]=HeightMap-eksportfilter til Krita
 Name[de]=Krita Höhenkarten-Exportfilter
 Name[en_GB]=Krita HeightMap Export Filter
 Name[es]=Filtro de Krita de exportación a HeightMap
diff --git a/krita/plugins/formats/heightmap/krita_heightmap_import.desktop \
b/krita/plugins/formats/heightmap/krita_heightmap_import.desktop index \
                fe3454f..fb59c15 100644
--- a/krita/plugins/formats/heightmap/krita_heightmap_import.desktop
+++ b/krita/plugins/formats/heightmap/krita_heightmap_import.desktop
@@ -3,6 +3,7 @@ Icon=
 Name=Krita HeightMap Import Filter
 Name[ca]=Filtre d'importació HeightMap per al Krita
 Name[cs]=Importní filtr výškové mapy pro Kritu
+Name[da]=HeightMap-importfilter til Krita
 Name[de]=Krita-Höhenkarten-Importfilter
 Name[en_GB]=Krita HeightMap Import Filter
 Name[es]=Filtro de Krita de importación de HeightMap
diff --git a/krita/plugins/formats/kranimseq/kranimseq_export.desktop \
b/krita/plugins/formats/kranimseq/kranimseq_export.desktop new file mode 100644
index 0000000..4d9edca
--- /dev/null
+++ b/krita/plugins/formats/kranimseq/kranimseq_export.desktop
@@ -0,0 +1,26 @@
+[Desktop Entry]
+Name=Krita PNG Sequence Export Filter
+Name[ca]=Filtre d'exportació de seqüències PNG per al Krita
+Name[cs]=Exportní filtr sekvence PNG pro Kritu
+Name[da]=PNG-sekvens-eksportfilter til Krita
+Name[en_GB]=Krita PNG Sequence Export Filter
+Name[es]=Filtro de Krita de exportación a  secuencia PNG
+Name[fi]=Kritan PNG Sequence -vientisuodatin
+Name[it]=Filtro di esportazione sequenza PNG per Krita
+Name[ja]=Krita PNG シーケンスエクスポートフィルタ
+Name[nb]=PNG sekvens-eksportfilter for Krita
+Name[nl]=PNG volgorde exportfilter voor Krita
+Name[pl]=Filtr eksportu szeregu PNG z Krita
+Name[pt]=Filtro de Exportação de Sequências em PNG para o Krita
+Name[pt_BR]=Filtro de exportação sequências em PNG para Krita
+Name[sk]=Exportný filter Krita PNG sekvencia
+Name[sv]=Krita PNG-sekvensexportfilter
+Name[uk]=Фільтр експорту послідовності зображень \
PNG для Krita +Name[x-test]=xxKrita PNG Sequence Export Filterxx
+X-KDE-Export=application/x-kranim-sequence
+X-KDE-ServiceTypes=Krita/FileFilter
+Type=Service
+X-KDE-Import=application/x-krita
+X-KDE-Weight=1
+X-KDE-Library=kranimseq
+NoDisplay=true
diff --git a/krita/plugins/formats/tga/krita_tga_export.desktop \
b/krita/plugins/formats/tga/krita_tga_export.desktop index 7d4d222..14560c4 100644
--- a/krita/plugins/formats/tga/krita_tga_export.desktop
+++ b/krita/plugins/formats/tga/krita_tga_export.desktop
@@ -2,6 +2,7 @@
 Name=Krita TGA Export Filter
 Name[ca]=Filtre d'exportació TGA per al Krita
 Name[cs]=Exportní filtr do formátu TGS pro Kritu
+Name[da]=TGA-eksportfilter til Krita
 Name[de]=Krita-TGA-Exportfilter
 Name[en_GB]=Krita TGA Export Filter
 Name[es]=Filtro de Krita de exportación a TGA
diff --git a/krita/plugins/formats/tga/krita_tga_import.desktop \
b/krita/plugins/formats/tga/krita_tga_import.desktop index 6c62b95..13634cb 100644
--- a/krita/plugins/formats/tga/krita_tga_import.desktop
+++ b/krita/plugins/formats/tga/krita_tga_import.desktop
@@ -2,6 +2,7 @@
 Name=Krita TGA Import Filter
 Name[ca]=Filtre d'importació TGA per al Krita
 Name[cs]=Importní filtr formátu TGA pro Kritu
+Name[da]=TGA-importfilter til Krita
 Name[de]=Krita-TGA-Importfilter
 Name[en_GB]=Krita TGA Import Filter
 Name[es]=Filtro de Krita de importación de TGA
diff --git a/krita/plugins/paintops/gridbrush/kritagridpaintop.desktop \
b/krita/plugins/paintops/gridbrush/kritagridpaintop.desktop index 2665a8b..4b55a23 \
                100644
--- a/krita/plugins/paintops/gridbrush/kritagridpaintop.desktop
+++ b/krita/plugins/paintops/gridbrush/kritagridpaintop.desktop
@@ -1,6 +1,7 @@
 [Desktop Entry]
 Name=Grid Brush
 Name[ca]=Pinzell de graella
+Name[da]=Gitterpensel
 Name[de]=Gitter-Pinsel
 Name[en_GB]=Grid Brush
 Name[es]=Pincel de rejilla
diff --git a/krita/plugins/tools/tool_transform2/kis_free_transform_strategy_gsl_helpers.cpp \
b/krita/plugins/tools/tool_transform2/kis_free_transform_strategy_gsl_helpers.cpp \
                index 034b3ec..c6d7d93 100644
--- a/krita/plugins/tools/tool_transform2/kis_free_transform_strategy_gsl_helpers.cpp
+++ b/krita/plugins/tools/tool_transform2/kis_free_transform_strategy_gsl_helpers.cpp
@@ -336,7 +336,7 @@ namespace GSL
     {
         QMessageBox::warning(0,
                              i18nc("@title:window", "Krita"),
-                             i18n("Sorry, Krita was build without the support "
+                             i18n("Sorry, Krita was built without the support "
                                   "of GNU Scientific Library, so you cannot scale "
                                   "the selection with handles. Please compile "
                                   "Krita with GNU Scientific Library support, or use \
                "
diff --git a/krita/sketch/kritasketch.desktop b/krita/sketch/kritasketch.desktop
index 3ffd4b1..6b801e1 100644
--- a/krita/sketch/kritasketch.desktop
+++ b/krita/sketch/kritasketch.desktop
@@ -50,7 +50,7 @@ GenericName[lt]=Skaitmeninis piešimas
 GenericName[mr]=डिजिटल पेंटिंग
 GenericName[nb]=Digital maling
 GenericName[nl]=Digitaal schilderen
-GenericName[pl]=Cyfrowe malowanie 
+GenericName[pl]=Cyfrowe malowanie
 GenericName[pt]=Pintura Digital
 GenericName[pt_BR]=Pintura digital
 GenericName[ru]=Цифровая живопись
diff --git a/krita/ui/forms/wdg_url_requester.ui \
b/krita/ui/forms/wdg_url_requester.ui index cb3ca50..53dfda3 100644
--- a/krita/ui/forms/wdg_url_requester.ui
+++ b/krita/ui/forms/wdg_url_requester.ui
@@ -16,9 +16,6 @@
     <verstretch>0</verstretch>
    </sizepolicy>
   </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
diff --git a/libs/kopageapp/tools/kopa_tool.desktop \
b/libs/kopageapp/tools/kopa_tool.desktop index 3bd7dd2..e8e14ce 100644
--- a/libs/kopageapp/tools/kopa_tool.desktop
+++ b/libs/kopageapp/tools/kopa_tool.desktop
@@ -3,6 +3,7 @@ Type=ServiceType
 X-KDE-ServiceType=CalligraPageApp/Tool
 Comment=Tool for Calligra Page Applications
 Comment[ca]=Eina per les aplicacions de p gina del Calligra
+Comment[da]=Værktøj til Calligra Page-programmer
 Comment[de]=Werkzeug für Calligra-Seitenanwendungen
 Comment[en_GB]=Tool for Calligra Page Applications
 Comment[es]=Herramienta para las aplicaciones de páginas de Calligra
diff --git a/libs/koreport/koreport_itemplugin.desktop \
b/libs/koreport/koreport_itemplugin.desktop index 5c6c526..fdfa248 100644
--- a/libs/koreport/koreport_itemplugin.desktop
+++ b/libs/koreport/koreport_itemplugin.desktop
@@ -22,7 +22,7 @@ Comment[kk]=KoReport нысан плагині
 Comment[nb]=Programtillegg for KoReport-element
 Comment[nds]=Moduul för KoReport-Element
 Comment[nl]=Plug-in voor KoReport-item
-Comment[pl]=Wtyczka elementu KoReport
+Comment[pl]=Wtyczka dostarczająca elementy raportu
 Comment[pt]='Plugin' de Itens do KoReport
 Comment[pt_BR]=Plugin de itens do KoReport
 Comment[ru]=Модуль KoReport
diff --git a/libs/kotext/KoSection.cpp b/libs/kotext/KoSection.cpp
index a651fd4..eb83b49 100644
--- a/libs/kotext/KoSection.cpp
+++ b/libs/kotext/KoSection.cpp
@@ -40,7 +40,6 @@ public:
     explicit KoSectionPrivate(const QTextDocument *_document)
         : manager(KoTextDocument(_document).sectionManager())
         , sectionStyle(0)
-        , modelItem(0)
     {
         Q_ASSERT(manager);
         name = manager->possibleNewName();
@@ -62,7 +61,6 @@ public:
     QScopedPointer<KoSectionEnd> sectionEnd; //< pointer to the corresponding \
                section end
     int level; //< level of the section in document, root sections have 0 level
     QPair<int, int> bounds; //< start and end position of section in QDocument
-    QStandardItem *modelItem;
 };
 
 KoSection::KoSection(const QTextCursor &cursor)
@@ -107,8 +105,8 @@ bool KoSection::setName(const QString &name)
     }
 
     if (d->manager->isValidNewName(name)) {
-        d->manager->sectionRenamed(d->name, name);
         d->name = name;
+        d->manager->invalidate();
         return true;
     }
     return false;
@@ -190,15 +188,3 @@ void KoSection::setLevel(int level)
     Q_D(KoSection);
     d->level = level;
 }
-
-QStandardItem *KoSection::modelItem()
-{
-    Q_D(KoSection);
-    return d->modelItem;
-}
-
-void KoSection::setModelItem(QStandardItem *item)
-{
-    Q_D(KoSection);
-    d->modelItem = item;
-}
diff --git a/libs/kotext/KoSection.h b/libs/kotext/KoSection.h
index 8183958..82f4c75 100644
--- a/libs/kotext/KoSection.h
+++ b/libs/kotext/KoSection.h
@@ -22,10 +22,11 @@
 
 #include "kotext_export.h"
 
+#include <QMetaType>
+#include <QList>
 #include <QString>
 #include <QPair>
 #include <QScopedPointer>
-#include <QStandardItem>
 #include <QTextCursor>
 
 class KoXmlElement;
@@ -83,11 +84,12 @@ private:
     void setBeginPos(int pos);
     void setEndPos(int pos);
     void setLevel(int level);
-    void setModelItem(QStandardItem *item);
-    QStandardItem *modelItem();
 
     friend class KoSectionManager;
     friend class KoSectionEnd;
 };
 
+Q_DECLARE_METATYPE(KoSection *)
+Q_DECLARE_METATYPE(QList<KoSection *>)
+
 #endif // KOSECTION_H
diff --git a/libs/kotext/KoSectionEnd.cpp b/libs/kotext/KoSectionEnd.cpp
index 0d7cf83..c620a07 100644
--- a/libs/kotext/KoSectionEnd.cpp
+++ b/libs/kotext/KoSectionEnd.cpp
@@ -53,7 +53,7 @@ QString KoSectionEnd::name() const
     return d->section->name();
 }
 
-KoSection* KoSectionEnd::correspondingSection() const
+KoSection *KoSectionEnd::correspondingSection() const
 {
     Q_D(const KoSectionEnd);
     return d->section;
diff --git a/libs/kotext/KoSectionEnd.h b/libs/kotext/KoSectionEnd.h
index 02ab31d..d831cd5 100644
--- a/libs/kotext/KoSectionEnd.h
+++ b/libs/kotext/KoSectionEnd.h
@@ -22,6 +22,8 @@
 
 #include "kotext_export.h"
 
+#include <QMetaType>
+#include <QList>
 #include <QString>
 #include <QScopedPointer>
 
@@ -51,4 +53,7 @@ private:
     Q_DECLARE_PRIVATE(KoSectionEnd)
 };
 
+Q_DECLARE_METATYPE(KoSectionEnd *)
+Q_DECLARE_METATYPE(QList<KoSectionEnd *>)
+
 #endif // KOSECTIONEND_H
diff --git a/libs/kotext/KoSectionManager.cpp b/libs/kotext/KoSectionManager.cpp
index df4e535..4143ca8 100644
--- a/libs/kotext/KoSectionManager.cpp
+++ b/libs/kotext/KoSectionManager.cpp
@@ -23,6 +23,7 @@
 #include "KoSectionEnd.h"
 #include <KLocalizedString>
 #include <KoTextDocument.h>
+#include "KoSectionUtils.h"
 
 #include <QHash>
 #include <QString>
@@ -31,27 +32,56 @@
 
 #include <kdebug.h>
 
-KoSectionManagerPrivate::KoSectionManagerPrivate(QTextDocument *_doc)
-    : doc(_doc)
-    , valid(false)
-    , sectionCount(0)
-    , model(new QStandardItemModel())
+class KoSectionManagerPrivate
 {
-    Q_ASSERT(_doc);
-}
+public:
+    KoSectionManagerPrivate(KoSectionManager *parent, QTextDocument *_doc)
+        : doc(_doc)
+        , valid(false)
+        , q_ptr(parent)
+    {
+        Q_ASSERT(_doc);
+    }
 
-KoSectionManagerPrivate::~KoSectionManagerPrivate()
-{
-    QHash<QString, KoSection *>::iterator it = sectionNames.begin();
-    for (; it != sectionNames.end(); it++) {
-        delete it.value(); // KoSectionEnd will be deleted in KoSection
+    ~KoSectionManagerPrivate()
+    {
+        QSet<KoSection *>::iterator it = registeredSections.begin();
+        for (; it != registeredSections.end(); it++) {
+            delete *it; // KoSectionEnd will be deleted in KoSection
+        }
     }
-}
+
+    QTextDocument *doc;
+    bool valid; //< is current section info is valid
+    QSet<KoSection *> registeredSections; //< stores pointer to sections that \
sometime was registered +
+    // used to prevent using sectionNames without update
+    QHash<QString, KoSection *> &sectionNames()
+    {
+        Q_Q(KoSectionManager);
+        q->update();
+        return m_sectionNames;
+    }
+
+protected:
+    KoSectionManager *q_ptr;
+
+private:
+    Q_DISABLE_COPY(KoSectionManagerPrivate)
+    Q_DECLARE_PUBLIC(KoSectionManager);
+
+    QHash<QString, KoSection *> m_sectionNames; //< stores name -> pointer \
reference, for sections that are visible in document now +};
 
 KoSectionManager::KoSectionManager(QTextDocument* doc)
-    : d_ptr(new KoSectionManagerPrivate(doc))
+    : d_ptr(new KoSectionManagerPrivate(this, doc))
+{
+    KoTextDocument(doc).setSectionManager(this); //FIXME: setting it back from here \
looks bad +}
+
+KoSectionManager::~KoSectionManager()
 {
-    KoTextDocument(doc).setSectionManager(this);
+    delete d_ptr;
 }
 
 KoSection *KoSectionManager::sectionAtPosition(int pos)
@@ -61,8 +91,8 @@ KoSection *KoSectionManager::sectionAtPosition(int pos)
 
     KoSection *result = 0;
     int smallest = INT_MAX; //smallest in size section will be the deepest
-    QHash<QString, KoSection *>::iterator it = d->sectionNames.begin();
-    for (; it != d->sectionNames.end(); it++) {
+    QHash<QString, KoSection *>::iterator it = d->sectionNames().begin();
+    for (; it != d->sectionNames().end(); it++) {
         if (it.value()->bounds().first > pos || it.value()->bounds().second < pos) {
             continue;
         }
@@ -82,21 +112,20 @@ void KoSectionManager::invalidate()
     d->valid = false;
 }
 
-bool KoSectionManager::isValidNewName(const QString &name) const
+bool KoSectionManager::isValidNewName(const QString &name)
 {
-    Q_D(const KoSectionManager);
-    return (d->sectionNames.find(name) == d->sectionNames.end());
+    Q_D(KoSectionManager);
+    return (d->sectionNames().constFind(name) == d->sectionNames().constEnd());
 }
 
-QString KoSectionManager::possibleNewName() const
+QString KoSectionManager::possibleNewName()
 {
-    Q_D(const KoSectionManager);
+    Q_D(KoSectionManager);
 
     QString newName;
-
-    int i = d->sectionCount;
+    int i = d->registeredSections.count();
     do {
-        ++i;
+        i++;
         newName = i18nc("new numbered section name", "New section %1", i);
     } while (!isValidNewName(newName));
 
@@ -106,73 +135,57 @@ QString KoSectionManager::possibleNewName() const
 void KoSectionManager::registerSection(KoSection* section)
 {
     Q_D(KoSectionManager);
-    d->sectionCount++;
-    d->sectionNames[section->name()] = section;
+    d->registeredSections.insert(section);
     invalidate();
 }
 
-void KoSectionManager::sectionRenamed(const QString &oldName, const QString &name)
-{
-    Q_D(KoSectionManager);
-    QHash<QString, KoSection *>::iterator it = d->sectionNames.find(oldName);
-    KoSection *sec = *it;
-    d->sectionNames.erase(it);
-    d->sectionNames[name] = sec;
-
-    if (sec->modelItem()) {
-        sec->modelItem()->setData(name, Qt::DisplayRole);
-    }
-}
-
 void KoSectionManager::unregisterSection(KoSection* section)
 {
     Q_D(KoSectionManager);
-
-    d->sectionCount--;
-    d->sectionNames.remove(section->name());
+    d->registeredSections.remove(section);
     invalidate();
 }
 
-void KoSectionManager::update()
+QStandardItemModel *KoSectionManager::update(bool needModel)
 {
     Q_D(KoSectionManager);
-    if (d->valid) {
-        return;
+    if (d->valid && !needModel) {
+        return 0;
     }
+    d->valid = true;
+    d->sectionNames().clear();
 
-    QHash<QString, KoSection *>::iterator it = d->sectionNames.begin();
-    for (; it != d->sectionNames.end(); it++) {
-        it.value()->setBeginPos(-1);
-        it.value()->setEndPos(-1);
-        it.value()->setLevel(-1);
+    QSet<KoSection *>::iterator it = d->registeredSections.begin();
+    for (; it != d->registeredSections.end(); it++) {
+        (*it)->setBeginPos(-1);
+        (*it)->setEndPos(-1);
+        (*it)->setLevel(-1);
     }
 
     QTextBlock block = d->doc->begin();
 
-    QStringList head;
-    head << i18n("Section");
-    d->model->clear();
-    d->model->setHorizontalHeaderLabels(head);
-    d->model->setColumnCount(1);
-
+    QStandardItemModel *model = 0;
     QStack<QStandardItem *> curChain;
-    curChain.push(d->model->invisibleRootItem());
+
+    if (needModel) {
+        model = new QStandardItemModel();
+        curChain.push(model->invisibleRootItem());
+    }
 
     int curLevel = -1;
     do {
         QTextBlockFormat fmt = block.blockFormat();
 
-        if (fmt.hasProperty(KoParagraphStyle::SectionStartings)) {
-            QList<QVariant> starts = \
                fmt.property(KoParagraphStyle::SectionStartings).value< \
                QList<QVariant> >();
-            foreach (const QVariant &sv, starts) {
-                curLevel++;
-                KoSection *sec = static_cast<KoSection *>(sv.value<void *>());
-                sec->setBeginPos(block.position());
-                sec->setLevel(curLevel);
+        foreach (KoSection *sec, KoSectionUtils::sectionStartings(fmt)) {
+            curLevel++;
+            sec->setBeginPos(block.position());
+            sec->setLevel(curLevel);
+
+            d->sectionNames()[sec->name()] = sec;
 
+            if (needModel) {
                 QStandardItem *item = new QStandardItem(sec->name());
-                item->setData(qVariantFromValue(static_cast<void *>(sec)), \
                Qt::UserRole + 1);
-                sec->setModelItem(item);
+                item->setData(QVariant::fromValue<KoSection *>(sec), Qt::UserRole + \
1);  
                 curChain.top()->appendRow(item);
 
@@ -180,24 +193,15 @@ void KoSectionManager::update()
             }
         }
 
-        if (fmt.hasProperty(KoParagraphStyle::SectionEndings)) {
-            QList<QVariant> ends = \
                fmt.property(KoParagraphStyle::SectionEndings).value< QList<QVariant> \
                >();
-            foreach (const QVariant &sv, ends) {
-                curLevel--;
-                KoSectionEnd *sec = static_cast<KoSectionEnd *>(sv.value<void *>());
-                sec->correspondingSection()->setEndPos(block.position() + \
block.length()); +        foreach (const KoSectionEnd *sec, \
KoSectionUtils::sectionEndings(fmt)) { +            curLevel--;
+            sec->correspondingSection()->setEndPos(block.position() + \
block.length());  
+            if (needModel) {
                 curChain.pop();
             }
         }
     } while ((block = block.next()).isValid());
 
-    d->valid = true;
-}
-
-QStandardItemModel* KoSectionManager::sectionsModel()
-{
-    Q_D(KoSectionManager);
-    update();
-    return d->model.data();
+    return model;
 }
diff --git a/libs/kotext/KoSectionManager.h b/libs/kotext/KoSectionManager.h
index dc4821f..a3933fe 100644
--- a/libs/kotext/KoSectionManager.h
+++ b/libs/kotext/KoSectionManager.h
@@ -22,23 +22,13 @@
 #include <QTextDocument>
 #include <QMetaType>
 #include <QStandardItemModel>
+#include <QSet>
 
 #include <kotext_export.h>
 
 class KoSection;
+class KoSectionManagerPrivate;
 
-class KoSectionManagerPrivate
-{
-public:
-    explicit KoSectionManagerPrivate(QTextDocument *_doc);
-    ~KoSectionManagerPrivate();
-
-    QTextDocument *doc;
-    bool valid; //< is current section info is valid
-    QHash<QString, KoSection *> sectionNames; //< stores name -> pointer reference
-    int sectionCount; //< how many sections is registered
-    QScopedPointer<QStandardItemModel> model;
-};
 /**
  * Used to handle all the sections in the document
  *
@@ -54,6 +44,7 @@ class KOTEXT_EXPORT KoSectionManager
 {
 public:
     explicit KoSectionManager(QTextDocument* doc);
+    ~KoSectionManager();
 
     /**
      * Returns pointer to the deepest KoSection that covers @p pos
@@ -64,35 +55,31 @@ public:
     /**
      * Returns name for the new section
      */
-    QString possibleNewName() const;
+    QString possibleNewName();
 
     /**
      * Returns if this name is possible.
      */
-    bool isValidNewName(const QString &name) const;
-
-    /**
-     * Returns tree model of sections to use in views
-     */
-    QStandardItemModel *sectionsModel();
+    bool isValidNewName(const QString &name);
 
 public slots:
     /**
      * Call this to recalc all sections information
+     * @param needModel place @c true to it if you need model to use in GUI and @c \
false otherwise +     * @return pointer to QStandardItemModel, build according to \
section tree +     *         with a pointers to KoSection at Qt::UserRole + 1 and \
section name +     *         for display role.
+     *         NOTE: it is not updated further by KoSectionManager
      */
-    void update();
+    QStandardItemModel *update(bool needModel = false);
 
     /**
-     * Call this to notify manager that info in it is invalidated.
+     * Call this to notify manager that info in it has invalidated.
      */
     void invalidate();
 
     /**
-     * Call this to notify that some section changed its name
-     */
-    void sectionRenamed(const QString &oldName, const QString &name);
-
-    /**
+     *
      * Call this to register new section in manager
      */
     void registerSection(KoSection *section);
@@ -103,7 +90,7 @@ public slots:
     void unregisterSection(KoSection *section);
 
 protected:
-    const QScopedPointer<KoSectionManagerPrivate> d_ptr;
+    KoSectionManagerPrivate * const d_ptr;
 
 private:
     Q_DISABLE_COPY(KoSectionManager)
diff --git a/libs/kotext/KoSectionUtils.cpp b/libs/kotext/KoSectionUtils.cpp
index cbcefd5..acb6be1 100644
--- a/libs/kotext/KoSectionUtils.cpp
+++ b/libs/kotext/KoSectionUtils.cpp
@@ -18,8 +18,7 @@
  */
 
 #include <KoSectionUtils.h>
-#include <KoSection.h>
-#include <KoSectionEnd.h>
+#include <KoParagraphStyle.h>
 
 bool KoSectionUtils::getNextBlock(QTextCursor &cur)
 {
@@ -38,12 +37,40 @@ bool KoSectionUtils::getNextBlock(QTextCursor &cur)
     return true;
 }
 
-QString KoSectionUtils::sectionStartName(const QVariant &q)
+void KoSectionUtils::setSectionStartings(QTextBlockFormat &fmt, QList<KoSection *> \
&list)  {
-    return static_cast<KoSection *>(q.value<void *>())->name();
+    if (list.empty()) {
+        fmt.clearProperty(KoParagraphStyle::SectionStartings);
+    } else {
+        fmt.setProperty(KoParagraphStyle::SectionStartings,
+            QVariant::fromValue< QList<KoSection *> >(list));
+    }
+}
+
+void KoSectionUtils::setSectionEndings(QTextBlockFormat &fmt, QList<KoSectionEnd *> \
&list) +{
+    if (list.empty()) {
+        fmt.clearProperty(KoParagraphStyle::SectionEndings);
+    } else {
+        fmt.setProperty(KoParagraphStyle::SectionEndings,
+            QVariant::fromValue< QList<KoSectionEnd *> >(list));
+    }
 }
 
-QString KoSectionUtils::sectionEndName(const QVariant &q)
+QList<KoSection *> KoSectionUtils::sectionStartings(const QTextBlockFormat &fmt)
 {
-    return static_cast<KoSectionEnd *>(q.value<void *>())->name();
+    if (!fmt.hasProperty(KoParagraphStyle::SectionStartings)) {
+        return QList<KoSection *>();
+    } else {
+        return fmt.property(KoParagraphStyle::SectionStartings).value< \
QList<KoSection *> >(); +    }
+}
+
+QList<KoSectionEnd *> KoSectionUtils::sectionEndings(const QTextBlockFormat &fmt)
+{
+    if (!fmt.hasProperty(KoParagraphStyle::SectionEndings)) {
+        return QList<KoSectionEnd *>();
+    } else {
+        return fmt.property(KoParagraphStyle::SectionEndings).value< \
QList<KoSectionEnd *> >(); +    }
 }
diff --git a/libs/kotext/KoSectionUtils.h b/libs/kotext/KoSectionUtils.h
index 1bd5eb3..13fa15a 100644
--- a/libs/kotext/KoSectionUtils.h
+++ b/libs/kotext/KoSectionUtils.h
@@ -19,6 +19,9 @@
 #ifndef KOSECTIONUTILS_H
 #define KOSECTIONUTILS_H
 
+#include <KoSection.h>
+#include <KoSectionEnd.h>
+
 #include <QTextCursor>
 #include <QVariant>
 #include <QString>
@@ -30,26 +33,41 @@ namespace KoSectionUtils {
      * @return @c false if there is no next block, @c true otherwise
      */
     bool getNextBlock(QTextCursor &cur);
+
     /**
-     * Convinient function to get name of a section from QVariant
-     * that is really a KoSection *.
-     *
-     * There is no internal check that \p q is a KoSection *.
+     * Convinient function to set a list of startings to QTextBlockFormat.
+     * This checks that list is empty.
      *
-     * @param q QVariant version of pointer to a KoSection
-     * @return name of a specified section
+     * @param fmt QTextBlockFormat reference to set startings.
+     * @param list QList<KoSection *> is a list to set.
      */
-    QString sectionStartName(const QVariant &q);
+    KOTEXT_EXPORT void setSectionStartings(QTextBlockFormat &fmt, QList<KoSection *> \
&list); +
     /**
-     * Convinient function to get name of a section from QVariant
-     * that is really a KoSectionEnd *.
-     *
-     * There is no internal check that \p q is a KoSectionEnd *.
+     * Convinient function to set a list of endings to QTextBlockFormat.
+     * This checks that list is empty.
      *
-     * @param q QVariant version of pointer to a KoSectionEnd
-     * @return name of a specified section
+     * @param fmt QTextBlockFormat reference to set endings.
+     * @param list QList<KoSectionEnd *> is a list to set.
+     */
+    KOTEXT_EXPORT void setSectionEndings(QTextBlockFormat& fmt, QList<KoSectionEnd \
*> &list); +
+    /**
+     * Convinient function to get section startings from QTextBlockFormat.
+     * @param fmt QTextBlockFormat format to retrieve section startings from.
+     * @return QList<KoSection *> that contains pointers to sections that start
+     *                            according to QTextBlockFormat.
+     */
+    KOTEXT_EXPORT QList<KoSection *> sectionStartings(const QTextBlockFormat &fmt);
+
+    /**
+     * Convinient function to get section endings from QTextBlockFormat.
+     * @param fmt QTextBlockFormat format to retrieve section startings from.
+     * @return QList<KoSectionEnd *> that contains pointers to sections that end
+     *                               according to QTextBlockFormat.
      */
-    QString sectionEndName(const QVariant &q);
+    KOTEXT_EXPORT QList<KoSectionEnd *> sectionEndings(const QTextBlockFormat& fmt);
+
 }
 
 #endif //KOSECTIONUTILS_H
diff --git a/libs/kotext/KoTextPaste.cpp b/libs/kotext/KoTextPaste.cpp
index 08c6cf8..9f20dbb 100644
--- a/libs/kotext/KoTextPaste.cpp
+++ b/libs/kotext/KoTextPaste.cpp
@@ -30,10 +30,12 @@
 #include <KoTextEditor.h>
 #include <opendocument/KoTextLoader.h>
 #include <KoTextSharedLoadingData.h>
+#include <KoSectionManager.h>
 
 #include <kdebug.h>
 #ifdef SHOULD_BUILD_RDF
 #include "KoTextRdfCore.h"
+#include "KoSectionManager.h"
 #include <Soprano/Soprano>
 #endif
 
@@ -83,6 +85,8 @@ bool KoTextPaste::process(const KoXmlElement &body, KoOdfReadStore \
                &odfStore)
     // load the paste directly into the editor's cursor -- which breaks \
                encapsulation
     loader.loadBody(body, *d->editor->cursor(), KoTextLoader::PasteMode);   // now \
let's load the body from the ODF KoXmlElement.  
+    context.sectionManager()->invalidate();
+
 #ifdef SHOULD_BUILD_RDF
     kDebug(30015) << "text paste, rdf handling" << d->rdfModel;
     // RDF: Grab RDF metadata from ODF file if present & load it into rdfModel
diff --git a/libs/kotext/commands/DeleteCommand.cpp \
b/libs/kotext/commands/DeleteCommand.cpp index 307165b..f62de95 100644
--- a/libs/kotext/commands/DeleteCommand.cpp
+++ b/libs/kotext/commands/DeleteCommand.cpp
@@ -36,6 +36,7 @@
 #include <KoSection.h>
 #include <KoSectionUtils.h>
 #include <KoSectionManager.h>
+#include <KoSectionEnd.h>
 #include <KoShapeController.h>
 #include <KoDocument.h>
 
@@ -138,23 +139,20 @@ public:
         bool doesEndInside = false;
         if (block.position() >= caret.selectionStart()) { // Begin of the block is \
inside selection.  doesBeginInside = true;
-            QList<QVariant> openList = block.blockFormat()
-            .property(KoParagraphStyle::SectionStartings).value< QList<QVariant> \
                >();
-            foreach (const QVariant &sv, openList) {
-                m_curSectionDelimiters.push_back(SectionHandle(KoSectionUtils::sectionStartName(sv), \
SectionOpen, sv)); +            QList<KoSection *> openList = \
KoSectionUtils::sectionStartings(block.blockFormat()); +            foreach \
(KoSection *sec, openList) { +                \
m_curSectionDelimiters.push_back(SectionHandle(sec->name(), sec));  }
         }
 
         if (block.position() + block.length() <= caret.selectionEnd()) { // End of \
the block is inside selection.  doesEndInside = true;
-            QList<QVariant> closeList = block.blockFormat()
-            .property(KoParagraphStyle::SectionEndings).value< QList<QVariant> >();
-            foreach (const QVariant &sv, closeList) {
-                QString secName = KoSectionUtils::sectionEndName(sv);
-                if (!m_curSectionDelimiters.empty() && \
m_curSectionDelimiters.last().name == secName) { +            QList<KoSectionEnd *> \
closeList = KoSectionUtils::sectionEndings(block.blockFormat()); +            foreach \
(KoSectionEnd *se, closeList) { +                if (!m_curSectionDelimiters.empty() \
&& m_curSectionDelimiters.last().name == se->name()) {  \
m_curSectionDelimiters.pop_back();  } else {
-                    m_curSectionDelimiters.push_back(SectionHandle(secName, \
SectionClose, sv)); +                    \
m_curSectionDelimiters.push_back(SectionHandle(se->name(), se));  }
             }
         }
@@ -201,12 +199,13 @@ public:
         KoTextDocument(cur->document()).sectionManager()->invalidate();
         // It means that selection isn't within one block.
         if (m_hasEntirelyInsideBlock || m_startBlockNum != -1 || m_endBlockNum != \
                -1) {
-            QList<QVariant> openList, closeList;
+            QList<KoSection *> openList;
+            QList<KoSectionEnd *> closeList;
             foreach (const SectionHandle &handle, m_curSectionDelimiters) {
                 if (handle.type == SectionOpen) { // Start of the section.
-                    openList << handle.data;
+                    openList << handle.dataSec;
                 } else { // End of the section.
-                    closeList << handle.data;
+                    closeList << handle.dataSecEnd;
                 }
             }
 
@@ -218,33 +217,21 @@ public:
                 QTextBlockFormat fmt2 = \
cur->document()->findBlockByNumber(m_endBlockNum + 1).blockFormat();  \
fmt.clearProperty(KoParagraphStyle::SectionEndings);  
-                if (m_endBlockNum != -1) {
-                    QList<QVariant> closeListEndBlock = \
                cur->document()->findBlockByNumber(m_endBlockNum)
-                        \
                .blockFormat().property(KoParagraphStyle::SectionEndings).value< \
                QList<QVariant> >();
-
-                    while (!openList.empty() && !closeListEndBlock.empty()
-                        && KoSectionUtils::sectionStartName(openList.last())
-                        == \
                KoSectionUtils::sectionEndName(closeListEndBlock.first())) {
-                        openList.pop_back();
-                        closeListEndBlock.pop_front();
-                    }
-                    openList << \
                fmt2.property(KoParagraphStyle::SectionStartings).value< \
                QList<QVariant> >();
-                    closeList << closeListEndBlock;
-                } else {
-                    Q_ASSERT(false); // FIXME: Remove this before release, if there \
will be no problems. +                //m_endBlockNum != -1 in this case.
+                QList<KoSectionEnd *> closeListEndBlock = \
KoSectionUtils::sectionEndings( +                    \
cur->document()->findBlockByNumber(m_endBlockNum).blockFormat()); +
+                while (!openList.empty() && !closeListEndBlock.empty()
+                    && openList.last()->name() == closeListEndBlock.first()->name()) \
{ +                    openList.pop_back();
+                    closeListEndBlock.pop_front();
                 }
+                openList << KoSectionUtils::sectionStartings(fmt2);
+                closeList << closeListEndBlock;
 
                 // We leave open section of start block untouched.
-                if (!openList.empty()) {
-                    fmt2.setProperty(KoParagraphStyle::SectionStartings, openList);
-                } else {
-                    fmt2.clearProperty(KoParagraphStyle::SectionStartings);
-                }
-                if (!closeList.empty()) {
-                    fmt.setProperty(KoParagraphStyle::SectionEndings, closeList);
-                } else {
-                    fmt.clearProperty(KoParagraphStyle::SectionEndings);
-                }
+                KoSectionUtils::setSectionStartings(fmt2, openList);
+                KoSectionUtils::setSectionEndings(fmt, closeList);
 
                 QTextCursor changer = *cur;
                 changer.setPosition(cur->document()->findBlockByNumber(m_startBlockNum).position());
 @@ -253,56 +240,18 @@ public:
                     \
changer.setPosition(cur->document()->findBlockByNumber(m_endBlockNum + \
1).position());  changer.setBlockFormat(fmt2);
                 }
-            } else if (m_endBlockNum != -1) { // We're pushing all new section info \
to the end block. +            } else { // m_endBlockNum != -1 in this case. We're \
                pushing all new section info to the end block.
                 QTextBlockFormat fmt = \
cur->document()->findBlockByNumber(m_endBlockNum).blockFormat();  \
fmt.clearProperty(KoParagraphStyle::SectionStartings);  
-                closeList << fmt.property(KoParagraphStyle::SectionEndings).value< \
QList<QVariant> >(); +                closeList << \
KoSectionUtils::sectionEndings(fmt);  
-                if (!openList.empty()) {
-                    fmt.setProperty(KoParagraphStyle::SectionStartings, openList);
-                } else {
-                    fmt.clearProperty(KoParagraphStyle::SectionStartings);
-                }
-                if (!closeList.empty()) {
-                    fmt.setProperty(KoParagraphStyle::SectionEndings, closeList);
-                } else {
-                    fmt.clearProperty(KoParagraphStyle::SectionEndings);
-                }
+                KoSectionUtils::setSectionStartings(fmt, openList);
+                KoSectionUtils::setSectionEndings(fmt, closeList);
 
                 QTextCursor changer = *cur;
                 changer.setPosition(cur->document()->findBlockByNumber(m_endBlockNum).position());
  changer.setBlockFormat(fmt);
-            } else {
-                Q_ASSERT(false); //FIXME: Delete this before release, if there will \
                be no problems.
-                //             cur.setPosition(caret->selectionStart());
-                //             if (cur.movePosition(QTextCursor::Left)) {
-                //                 QList<QVariant> closeListHave = cur.blockFormat()
-                //                     \
                .property(KoParagraphStyle::SectionEndings).value< QList<QVariant> \
                >();
-                //                 closeList = (closeListHave << closeList);
-                //
-                //                 QTextBlockFormat fmt = cur.blockFormat();
-                //                 if (closeList.empty()) {
-                //                     \
                fmt.clearProperty(KoParagraphStyle::SectionEndings);
-                //                 } else {
-                //                     \
                fmt.setProperty(KoParagraphStyle::SectionEndings, closeList);
-                //                 }
-                //                 cur.setBlockFormat(fmt);
-                //             }
-                //
-                //             cur.setPosition(caret->selectionEnd());
-                //             {
-                //                 openList << cur.blockFormat()
-                //                     \
                .property(KoParagraphStyle::SectionStartings).value< QList<QVariant> \
                >();
-                //
-                //                 QTextBlockFormat fmt = cur.blockFormat();
-                //                 if (openList.empty()) {
-                //                     \
                fmt.clearProperty(KoParagraphStyle::SectionStartings);
-                //                 } else {
-                //                     \
                fmt.setProperty(KoParagraphStyle::SectionStartings, openList);
-                //                 }
-                //                 cur.setBlockFormat(fmt);
-                //             }
             }
         }
     }
@@ -317,12 +266,23 @@ public:
     struct SectionHandle {
         QString name; // Name of the section.
         SectionHandleAction type; // Action of a SectionHandle.
-        QVariant data; // QVariant version of pointer to KoSection or KoSectionEnd.
 
-        SectionHandle(QString _name, SectionHandleAction _type, QVariant _data)
-        : name(_name)
-        , type(_type)
-        , data(_data)
+        KoSection *dataSec; // Pointer to KoSection.
+        KoSectionEnd *dataSecEnd; // Pointer to KoSectionEnd.
+
+        SectionHandle(QString _name, KoSection *_data)
+            : name(_name)
+            , type(SectionOpen)
+            , dataSec(_data)
+            , dataSecEnd(0)
+        {
+        }
+
+        SectionHandle(QString _name, KoSectionEnd *_data)
+            : name(_name)
+            , type(SectionClose)
+            , dataSec(0)
+            , dataSecEnd(_data)
         {
         }
     };
@@ -491,7 +451,7 @@ bool DeleteCommand::checkMerge(const KUndo2Command *command)
         return true;
     }
 
-    if ( (other->m_position + other->m_length == m_position)
+    if ((other->m_position + other->m_length == m_position)
             && (m_format == other->m_format)) {
         m_position = other->m_position;
         m_length += other->m_length;
diff --git a/libs/kotext/commands/NewSectionCommand.cpp \
b/libs/kotext/commands/NewSectionCommand.cpp index 50ba14d..cadaa95 100644
--- a/libs/kotext/commands/NewSectionCommand.cpp
+++ b/libs/kotext/commands/NewSectionCommand.cpp
@@ -24,6 +24,7 @@
 #include <KoParagraphStyle.h>
 #include <KoSectionManager.h>
 #include <KoTextEditor.h>
+#include <KoSectionUtils.h>
 
 #include <klocale.h>
 #include <kundo2command.h>
@@ -63,22 +64,14 @@ void NewSectionCommand::redo()
         KoSectionEnd *end = new KoSectionEnd(start);
         QTextBlockFormat fmt = editor->blockFormat();
 
-        QList< QVariant > sectionStartings;
-        if (fmt.hasProperty(KoParagraphStyle::SectionStartings)) {
-            sectionStartings = fmt.property(KoParagraphStyle::SectionStartings)
-                .value< QList<QVariant> >();
-        }
-        QList< QVariant > sectionEndings;
-        if (fmt.hasProperty(KoParagraphStyle::SectionEndings)) {
-            sectionEndings = fmt.property(KoParagraphStyle::SectionEndings)
-                .value< QList<QVariant> >();
-        }
+        QList<KoSection *> sectionStartings = KoSectionUtils::sectionStartings(fmt);
+        QList<KoSectionEnd *> sectionEndings = KoSectionUtils::sectionEndings(fmt);
 
-        sectionStartings.append(qVariantFromValue<void *>(static_cast<void \
                *>(start)));
-        sectionEndings.prepend(qVariantFromValue<void *>(static_cast<void *>(end)));
+        sectionStartings.append(start);
+        sectionEndings.prepend(end);
 
-        fmt.setProperty(KoParagraphStyle::SectionStartings, sectionStartings);
-        fmt.setProperty(KoParagraphStyle::SectionEndings, sectionEndings);
+        KoSectionUtils::setSectionStartings(fmt, sectionStartings);
+        KoSectionUtils::setSectionEndings(fmt, sectionEndings);
 
         editor->setBlockFormat(fmt);
     }
diff --git a/libs/kotext/opendocument/KoTextLoader.cpp \
b/libs/kotext/opendocument/KoTextLoader.cpp index 2301a96..48388a9 100644
--- a/libs/kotext/opendocument/KoTextLoader.cpp
+++ b/libs/kotext/opendocument/KoTextLoader.cpp
@@ -83,6 +83,7 @@
 #include "styles/KoTableColumnStyle.h"
 #include "styles/KoTableCellStyle.h"
 #include "styles/KoSectionStyle.h"
+#include <KoSectionUtils.h>
 
 #include <klocale.h>
 #include <kdebug.h>
@@ -139,7 +140,7 @@ public:
     int loadSpanInitialPos;
 
     QVector<QString> nameSpacesList;
-    QList<QVariant> openingSections;
+    QList<KoSection *> openingSections;
 
     QMap<QString, KoList *> xmlIdToListMap;
     QVector<KoList *> m_previousList;
@@ -313,25 +314,18 @@ void KoTextLoader::loadBody(const KoXmlElement &bodyElem, \
QTextCursor &cursor, L  // If we are pasting text, we should handle sections \
correctly  // we are saving which sections end in current block
     // and put their ends after the inserted text.
-    QList<QVariant> oldSectionEndings;
+    QList<KoSectionEnd *> oldSectionEndings;
     if (mode == PasteMode) {
         QTextBlockFormat fmt = cursor.blockFormat();
-        if (fmt.hasProperty(KoParagraphStyle::SectionEndings)) {
-            oldSectionEndings = fmt.property(KoParagraphStyle::SectionEndings)
-                .value< QList<QVariant> >();
-        }
+        oldSectionEndings = KoSectionUtils::sectionEndings(fmt);
         fmt.clearProperty(KoParagraphStyle::SectionEndings);
         cursor.setBlockFormat(fmt);
     }
 
     if (!d->openingSections.isEmpty()) {
-        QTextBlock block = cursor.block();
-        QTextBlockFormat format = block.blockFormat();
-        QVariant v;
-        v = format.property(KoParagraphStyle::SectionStartings);
-        d->openingSections.append(v.value<QList<QVariant> >()); // if we had some \
                already we need to append the new ones
-        v.setValue<QList<QVariant> >(d->openingSections);
-        format.setProperty(KoParagraphStyle::SectionStartings, v);
+        QTextBlockFormat format = cursor.block().blockFormat();
+        d->openingSections << KoSectionUtils::sectionStartings(format); // if we had \
some already we need to append the new ones +        \
KoSectionUtils::setSectionStartings(format, d->openingSections);  \
cursor.setBlockFormat(format);  d->openingSections.clear();
     }
@@ -437,15 +431,8 @@ void KoTextLoader::loadBody(const KoXmlElement &bodyElem, \
QTextCursor &cursor, L  // Here we put old endings after text insertion.
     if (mode == PasteMode) {
         QTextBlockFormat fmt = cursor.blockFormat();
-        if (fmt.hasProperty(KoParagraphStyle::SectionEndings)) {
-            oldSectionEndings = fmt.property(KoParagraphStyle::SectionEndings)
-                .value< QList<QVariant> >() << oldSectionEndings;
-        }
-
-
-        if (!oldSectionEndings.empty()) {
-            fmt.setProperty(KoParagraphStyle::SectionEndings, oldSectionEndings);
-        }
+        oldSectionEndings = KoSectionUtils::sectionEndings(fmt);
+        KoSectionUtils::setSectionEndings(fmt, oldSectionEndings);
         cursor.setBlockFormat(fmt);
     }
 
@@ -848,24 +835,15 @@ void KoTextLoader::loadSection(const KoXmlElement &sectionElem, \
QTextCursor &cur  return;
     }
 
-    QVariant v;
-    v.setValue<void *>(section);
-    d->openingSections.append(v);
+    d->openingSections << section;
 
     loadBody(sectionElem, cursor);
 
     // Close the section on the last block of text we have loaded just now.
-    KoSectionEnd *sectionEnd = new KoSectionEnd(section);
-    v.setValue<void *>(sectionEnd);
+    QTextBlockFormat format = cursor.block().blockFormat();
+    KoSectionUtils::setSectionEndings(format,
+        KoSectionUtils::sectionEndings(format) << new KoSectionEnd(section));
 
-    QTextBlock block = cursor.block();
-    QTextBlockFormat format = block.blockFormat();
-    QVariant listv;
-    listv = format.property(KoParagraphStyle::SectionEndings);
-    QList<QVariant> sectionEndings = listv.value<QList<QVariant> >();
-    sectionEndings.append(v);
-    listv.setValue<QList<QVariant> >(sectionEndings);
-    format.setProperty(KoParagraphStyle::SectionEndings, listv);
     cursor.setBlockFormat(format);
 }
 
diff --git a/libs/kotext/opendocument/KoTextWriter_p.cpp \
b/libs/kotext/opendocument/KoTextWriter_p.cpp index 0e4ea11..c4e60a5 100644
--- a/libs/kotext/opendocument/KoTextWriter_p.cpp
+++ b/libs/kotext/opendocument/KoTextWriter_p.cpp
@@ -98,19 +98,13 @@ void KoTextWriter::Private::writeBlocks(QTextDocument *document, \
int from, int t  cur.setPosition(from);
     while (to == -1 || cur.position() <= to) {
         if (cur.block().position() >= from) { // Begin of the block is inside \
                selection.
-            QList<QVariant> openList = cur.blockFormat()
-                .property(KoParagraphStyle::SectionStartings).value< QList<QVariant> \
                >();
-            foreach (const QVariant &sv, openList) {
-                KoSection *sec = static_cast<KoSection *>(sv.value<void *>());
+            foreach (const KoSection *sec, \
KoSectionUtils::sectionStartings(cur.blockFormat())) {  \
sectionNamesStack.push_back(sec->name());  }
         }
 
         if (to == -1 || cur.block().position() + cur.block().length() <= to) { // \
                End of the block is inside selection.
-            QList<QVariant> closeList = cur.blockFormat()
-                .property(KoParagraphStyle::SectionEndings).value< QList<QVariant> \
                >();
-            foreach (const QVariant &sv, closeList) {
-                KoSectionEnd *sec = static_cast<KoSectionEnd *>(sv.value<void *>());
+            foreach (const KoSectionEnd *sec, \
                KoSectionUtils::sectionEndings(cur.blockFormat())) {
                 if (!sectionNamesStack.empty() && sectionNamesStack.top() == \
sec->name()) {  sectionNamesStack.pop();
                     entireWithinSectionNames.insert(sec->name());
@@ -135,19 +129,14 @@ void KoTextWriter::Private::writeBlocks(QTextDocument \
*document, int from, int t  }
 
         QTextBlockFormat format = block.blockFormat();
-        if (format.hasProperty(KoParagraphStyle::SectionStartings)) {
-            QVariant v = format.property(KoParagraphStyle::SectionStartings);
-            QList<QVariant> sectionStarts = v.value<QList<QVariant> >();
 
-            foreach (const QVariant &sv, sectionStarts) {
-                KoSection* section = static_cast<KoSection *>(sv.value<void*>());
-
-                // We are writing in only sections, that are completely inside \
                selection.
-                if (entireWithinSectionNames.contains(section->name())) {
-                    section->saveOdf(context);
-                }
+        foreach (const KoSection *section, KoSectionUtils::sectionStartings(format)) \
{ +            // We are writing in only sections, that are completely inside \
selection. +            if (entireWithinSectionNames.contains(section->name())) {
+                section->saveOdf(context);
             }
         }
+
         if (format.hasProperty(KoParagraphStyle::HiddenByTable)) {
             block = block.next();
             continue;
@@ -182,16 +171,10 @@ void KoTextWriter::Private::writeBlocks(QTextDocument \
*document, int from, int t  
         saveParagraph(block, from, to);
 
-        if (format.hasProperty(KoParagraphStyle::SectionEndings)) {
-            QVariant v = format.property(KoParagraphStyle::SectionEndings);
-            QList<QVariant> sectionEndings = v.value<QList<QVariant> >();
-
-            foreach (QVariant sv, sectionEndings) {
-                KoSectionEnd *sectionEnd = static_cast<KoSectionEnd *>(sv.value<void \
                *>());
-                // We are writing in only sections, that are completely inside \
                selection.
-                if (entireWithinSectionNames.contains(sectionEnd->name())) {
-                    sectionEnd->saveOdf(context);
-                }
+        foreach (const KoSectionEnd *sectionEnd, \
KoSectionUtils::sectionEndings(format)) { +            // We are writing in only \
sections, that are completely inside selection. +            if \
(entireWithinSectionNames.contains(sectionEnd->name())) { +                \
sectionEnd->saveOdf(context);  }
         }
 
diff --git a/libs/kotext/tests/TestKoTextEditor.cpp \
b/libs/kotext/tests/TestKoTextEditor.cpp index a4b02c0..bfc40e02 100644
--- a/libs/kotext/tests/TestKoTextEditor.cpp
+++ b/libs/kotext/tests/TestKoTextEditor.cpp
@@ -42,6 +42,7 @@
 #include <KoParagraphStyle.h>
 #include <KoSection.h>
 #include <KoSectionEnd.h>
+#include <KoSectionUtils.h>
 
 Q_DECLARE_METATYPE(QVector< QVector<int> >)
 
@@ -139,9 +140,7 @@ void TestKoTextEditor::pushSectionStart(int num, KoSection *sec, \
KoTextEditor &e  QTextBlockFormat fmt = editor.blockFormat();
     fmt.clearProperty(KoParagraphStyle::SectionStartings);
     fmt.clearProperty(KoParagraphStyle::SectionEndings);
-    QList<QVariant> lst;
-    lst.push_back(QVariant::fromValue<void *>(static_cast<void *>(sec)));
-    fmt.setProperty(KoParagraphStyle::SectionStartings, lst);
+    KoSectionUtils::setSectionStartings(fmt, QList<KoSection *>() << sec);
     editor.setBlockFormat(fmt);
 
     editor.insertText("\n");
@@ -157,9 +156,8 @@ void TestKoTextEditor::pushSectionEnd(int num, KoSectionEnd \
*secEnd, KoTextEdito  QTextBlockFormat fmt = editor.blockFormat();
     fmt.clearProperty(KoParagraphStyle::SectionStartings);
     fmt.clearProperty(KoParagraphStyle::SectionEndings);
-    QList<QVariant> lst;
-    lst.push_back(QVariant::fromValue<void *>(static_cast<void *>(secEnd)));
-    fmt.setProperty(KoParagraphStyle::SectionEndings, lst);
+
+    KoSectionUtils::setSectionEndings(fmt, QList<KoSectionEnd *>() << secEnd);
     editor.setBlockFormat(fmt);
 
     editor.insertText("\n");
@@ -170,19 +168,16 @@ void TestKoTextEditor::pushSectionEnd(int num, KoSectionEnd \
*secEnd, KoTextEdito  
 bool TestKoTextEditor::checkStartings(const QVector<int> &needStartings, KoSection \
**sec, KoTextEditor &editor)  {
-    QTextBlockFormat fmt = editor.blockFormat();
-    QList<QVariant> lst = fmt.property(KoParagraphStyle::SectionStartings).value< \
QList<QVariant> >(); +    QList<KoSection *> lst = \
KoSectionUtils::sectionStartings(editor.blockFormat());  
     if (lst.size() != needStartings.size()) {
-        qDebug() << static_cast<KoSection *>(lst[0].value<void *>())->name();
-
-        qDebug() << QString("Startings list size is wrong. Found %1, Expected \
%2").arg(lst.size()).arg(needStartings.size()); +        kDebug() << \
QString("Startings list size is wrong. Found %1, Expected \
%2").arg(lst.size()).arg(needStartings.size());  return false;
     }
 
     for (int i = 0; i < needStartings.size(); i++) {
-        if (static_cast<KoSection *>(lst[i].value<void *>()) != \
                sec[needStartings[i]]) {
-            qDebug() << QString("Found unexpected section starting. Expected %1 \
section.").arg(needStartings[i]); +        if (lst[i] != sec[needStartings[i]]) {
+            kDebug() << QString("Found unexpected section starting. Expected %1 \
section.").arg(needStartings[i]);  return false;
         }
     }
@@ -192,17 +187,16 @@ bool TestKoTextEditor::checkStartings(const QVector<int> \
&needStartings, KoSecti  
 bool TestKoTextEditor::checkEndings(const QVector<int> &needEndings, KoSectionEnd \
**secEnd, KoTextEditor &editor)  {
-    QTextBlockFormat fmt = editor.blockFormat();
-    QList<QVariant> lst = fmt.property(KoParagraphStyle::SectionEndings).value< \
QList<QVariant> >(); +    QList<KoSectionEnd *> lst = \
KoSectionUtils::sectionEndings(editor.blockFormat());  
     if (lst.size() != needEndings.size()) {
-        qDebug() << QString("Endings list size is wrong. Found %1, expected \
%2").arg(lst.size()).arg(needEndings.size()); +        kDebug() << QString("Endings \
list size is wrong. Found %1, expected %2").arg(lst.size()).arg(needEndings.size());  \
return false;  }
 
     for (int i = 0; i < needEndings.size(); i++) {
-        if (static_cast<KoSectionEnd *>(lst[i].value<void *>()) != \
                secEnd[needEndings[i]]) {
-            qDebug() << QString("Found unexpected section ending. Expected %1 \
section.").arg(needEndings[i]); +        if (lst[i] != secEnd[needEndings[i]]) {
+            kDebug() << QString("Found unexpected section ending. Expected %1 \
section.").arg(needEndings[i]);  return false;
         }
     }
diff --git a/libs/textlayout/KoTextLayoutArea_paint.cpp \
b/libs/textlayout/KoTextLayoutArea_paint.cpp index d6fa3b8..7cb1b47 100644
--- a/libs/textlayout/KoTextLayoutArea_paint.cpp
+++ b/libs/textlayout/KoTextLayoutArea_paint.cpp
@@ -55,6 +55,7 @@
 #include <kdebug.h>
 #include <KoSection.h>
 #include <KoSectionEnd.h>
+#include <KoSectionUtils.h>
 
 #include <QPainter>
 #include <QTextTable>
@@ -659,40 +660,32 @@ void KoTextLayoutArea::decorateParagraphSections(QPainter \
*painter, QTextBlock &  
     const qreal levelShift = 3;
 
-    if (bf.hasProperty(KoParagraphStyle::SectionStartings)) {
-        QVariant var = bf.property(KoParagraphStyle::SectionStartings);
-        QList<QVariant> openList = var.value< QList<QVariant> >();
-
-        for (int i = 0; i < openList.size(); i++) {
-            int sectionLevel = static_cast<KoSection *>(openList[i].value<void \
                *>())->level();
-            if (i == 0) {
-                painter->drawLine(xl + sectionLevel * levelShift, yu,
-                                  xr - sectionLevel * levelShift, yu);
-            }
+    QList<KoSection *> openList = KoSectionUtils::sectionStartings(bf);
+    for (int i = 0; i < openList.size(); i++) {
+        int sectionLevel = openList[i]->level();
+        if (i == 0) {
             painter->drawLine(xl + sectionLevel * levelShift, yu,
-                              xl + sectionLevel * levelShift, yu + bracketSize);
-
-            painter->drawLine(xr - sectionLevel * levelShift, yu,
-                              xr - sectionLevel * levelShift, yu + bracketSize);
+                              xr - sectionLevel * levelShift, yu);
         }
-    }
+        painter->drawLine(xl + sectionLevel * levelShift, yu,
+                          xl + sectionLevel * levelShift, yu + bracketSize);
 
-    if (bf.hasProperty(KoParagraphStyle::SectionEndings)) {
-        QVariant var = bf.property(KoParagraphStyle::SectionEndings);
-        QList<QVariant> closeList = var.value< QList<QVariant> >();
+        painter->drawLine(xr - sectionLevel * levelShift, yu,
+                          xr - sectionLevel * levelShift, yu + bracketSize);
+    }
 
-        for (int i = 0; i < closeList.size(); i++) {
-            int sectionLevel = static_cast<KoSectionEnd *>(closeList[i].value<void \
                *>())->correspondingSection()->level();
-            if (i == closeList.count() - 1) {
-                painter->drawLine(xl + sectionLevel * levelShift, yd,
-                                  xr - sectionLevel * levelShift, yd);
-            }
+    QList<KoSectionEnd *> closeList = KoSectionUtils::sectionEndings(bf);
+    for (int i = 0; i < closeList.size(); i++) {
+        int sectionLevel = closeList[i]->correspondingSection()->level();
+        if (i == closeList.count() - 1) {
             painter->drawLine(xl + sectionLevel * levelShift, yd,
-                              xl + sectionLevel * levelShift, yd - bracketSize);
-
-            painter->drawLine(xr - sectionLevel * levelShift, yd,
-                              xr - sectionLevel * levelShift, yd - bracketSize);
+                              xr - sectionLevel * levelShift, yd);
         }
+        painter->drawLine(xl + sectionLevel * levelShift, yd,
+                          xl + sectionLevel * levelShift, yd - bracketSize);
+
+        painter->drawLine(xr - sectionLevel * levelShift, yd,
+                          xr - sectionLevel * levelShift, yd - bracketSize);
     }
 
     painter->setPen(penBackup);
diff --git a/plugins/reporting/barcode/koreport_barcodeplugin.desktop \
b/plugins/reporting/barcode/koreport_barcodeplugin.desktop index 9b2457c..ba143bf \
                100644
--- a/plugins/reporting/barcode/koreport_barcodeplugin.desktop
+++ b/plugins/reporting/barcode/koreport_barcodeplugin.desktop
@@ -19,7 +19,7 @@ Name[ja]=バーコードレポートプラグイン
 Name[kk]=Штрих-кодты баяндау плагині
 Name[nb]=Programtillegg for Strekkode-rapport
 Name[nl]=Plug-in voor Barcoderapport
-Name[pl]=Wtyczka sprawozdania kodu paskowego
+Name[pl]=Wtyczka kodów paskowych dla raportów
 Name[pt]='Plugin' de Relatório de Códigos de Barras
 Name[pt_BR]=Plugin de código de barras para relatório
 Name[ru]=Модуль считывания штрих-кодов
@@ -48,7 +48,7 @@ Comment[ja]=KoReport バーコードプラグイン
 Comment[kk]=KoReport штрих-код плагині
 Comment[nb]=KoReport strekkode-programtillegg
 Comment[nl]=Plug-in voor KoReport-barcode
-Comment[pl]=Wtyczka kodu paskowego dla KoReport
+Comment[pl]=Wtyczka kodów paskowych dla raportów
 Comment[pt]='Plugin' de Códigos de Barras do KoReport
 Comment[pt_BR]=Plugin de códigos de barra do KoReport
 Comment[ru]=Модуль считывания штрих-кодов KoReport
diff --git a/plugins/reporting/chart/koreport_chartplugin.desktop \
b/plugins/reporting/chart/koreport_chartplugin.desktop index dcb5da2..7d31bed 100644
--- a/plugins/reporting/chart/koreport_chartplugin.desktop
+++ b/plugins/reporting/chart/koreport_chartplugin.desktop
@@ -19,7 +19,7 @@ Name[ja]=チャートレポートプラグイン
 Name[kk]=Диаграмманы баяндау плагині
 Name[nb]=Programtillegg for diagramrapport
 Name[nl]=Plug-in voor grafiekrapport
-Name[pl]=Wtyczka sprawozdania z wykresami
+Name[pl]=Wtyczka wykresów dla raportów
 Name[pt]='Plugin' Web de Relatórios de Gráficos
 Name[pt_BR]=Plugin de mapas para relatório
 Name[ru]=Модуль диаграмм для отчётов
@@ -30,6 +30,7 @@ Name[x-test]=xxChart Report Pluginxx
 Name[zh_TW]=圖表 告外掛程式
 Comment=Calligra Reports Chart Plugin
 Comment[ca]=Connector d'informes de diagrames del Calligra
+Comment[da]=Diagram-plugin til Calligra Reports
 Comment[de]=Diagrammberichtmodul für Calligra
 Comment[en_GB]=Calligra Reports Chart Plugin
 Comment[fi]=Calligra Reportsin kaavioliitännäinen
@@ -37,10 +38,11 @@ Comment[it]=Estensione per grafici dei rapporti di Calligra
 Comment[ja]=Calligra レポートチャートプラグイン
 Comment[nb]=Diagran-tillegg for Calligra-rapporter
 Comment[nl]=Plug-in voor Calligra Reports Chart
-Comment[pl]=Wtyczka sprawozdania z wykresami dla Calligry
+Comment[pl]=Wtyczka wykresów dla raportów
 Comment[pt]='Plugin' de Gráficos dos Relatórios do Calligra
 Comment[pt_BR]=Plugin de gráficos de relatórios do Calligra
 Comment[sk]=Grafový plugin Calligra Reports
+Comment[sv]=Calligra-insticksprogram för diagramrapport
 Comment[uk]=Додаток діаграм у звітах Calligra
 Comment[x-test]=xxCalligra Reports Chart Pluginxx
 X-KDE-Library=koreport_chartplugin
diff --git a/plugins/reporting/maps/koreport_mapsplugin.desktop \
b/plugins/reporting/maps/koreport_mapsplugin.desktop index bad750f..98925c0 100644
--- a/plugins/reporting/maps/koreport_mapsplugin.desktop
+++ b/plugins/reporting/maps/koreport_mapsplugin.desktop
@@ -19,7 +19,7 @@ Name[ja]=マップレポートプラグイン
 Name[kk]=Картаны баяндау плагині
 Name[nb]=Programtillegg for kartrapport
 Name[nl]=Plug-in voor Maps Report
-Name[pl]=Wtyczka sprawozdania map
+Name[pl]=Wtyczka map dla raportów
 Name[pt]='Plugin' de Relatório de Mapas
 Name[pt_BR]=Plugin de mapas para relatório
 Name[ru]=Модуль карт для отчётов
@@ -48,7 +48,7 @@ Comment[ja]=Calligra レポートマッププラグイン
 Comment[kk]=Calligra-ның картаны баяндау плагині
 Comment[nb]=Kart-programtillegg for Calligra-rapporter
 Comment[nl]=Plug-in voor Calligra Reports Maps
-Comment[pl]=Wtyczka sprawozdania map dla Calligry
+Comment[pl]=Wtyczka map dla raportów
 Comment[pt]='Plugin' de Mapas dos Relatórios do Calligra
 Comment[pt_BR]=Plugin de mapas dos relatórios do Calligra
 Comment[ru]=Модуль карт Calligra для отчётов
diff --git a/plugins/reporting/web/koreport_webplugin.desktop \
b/plugins/reporting/web/koreport_webplugin.desktop index dd62de8..6b1e91e 100644
--- a/plugins/reporting/web/koreport_webplugin.desktop
+++ b/plugins/reporting/web/koreport_webplugin.desktop
@@ -19,7 +19,7 @@ Name[ja]=ウェブレポートプラグイン
 Name[kk]=Веб баяндау плагині
 Name[nb]=Programtillegg for vevrapport
 Name[nl]=Plug-in voor Webrapport
-Name[pl]=Wtyczka sprawozdania sieci
+Name[pl]=Wtyczka strony internetowej dla raportów
 Name[pt]='Plugin' de Relatório Web
 Name[pt_BR]=Plugin de Web para relatório
 Name[ru]=Модуль веб-отчётов
@@ -31,6 +31,7 @@ Name[x-test]=xxWeb Report Pluginxx
 Name[zh_TW]=網  告外掛程式
 Comment=Calligra Reports Web Plugin
 Comment[ca]=Connector d'informes web del Calligra
+Comment[da]=Webplugin til Calligra Reports
 Comment[de]=Webbericht-Modul für Calligra
 Comment[en_GB]=Calligra Reports Web Plugin
 Comment[fi]=Calligra Reports -WWW-liitännäinen
@@ -38,10 +39,11 @@ Comment[it]=Estensione web dei rapporti di Calligra
 Comment[ja]=Calligra レポートウェブプラグイン
 Comment[nb]=Vev-programtillegg for Calligra-rapporter
 Comment[nl]=Plug-in voor Calligra Reports Web
-Comment[pl]=Wtyczka sprawozdania sieci dla Calligry
+Comment[pl]=Wtyczka strony internetowej dla raportów
 Comment[pt]='Plugin' Web de Relatórios do Calligra
 Comment[pt_BR]=Plugin Web para relatórios do Calligra
 Comment[sk]=Webový plugin Calligra Reports
+Comment[sv]=Calligra-insticksprogram för webbrapport
 Comment[uk]=Інтернет-додаток звітів Calligra
 Comment[x-test]=xxCalligra Reports Web Pluginxx
 X-KDE-Library=koreport_webplugin
diff --git a/plugins/semanticitems/event/KoRdfCalendarEvent.h \
b/plugins/semanticitems/event/KoRdfCalendarEvent.h index 33e9c2b..2363ed3 100644
--- a/plugins/semanticitems/event/KoRdfCalendarEvent.h
+++ b/plugins/semanticitems/event/KoRdfCalendarEvent.h
@@ -29,6 +29,8 @@
 class KJob;
 #endif
 
+#include <KDateTime>
+
 #include <ui_KoRdfCalendarEventEditWidget.h>
 
 /**
diff --git a/plugins/textshape/dialogs/SectionFormatDialog.cpp \
b/plugins/textshape/dialogs/SectionFormatDialog.cpp index c825fd2..ef5c145 100644
--- a/plugins/textshape/dialogs/SectionFormatDialog.cpp
+++ b/plugins/textshape/dialogs/SectionFormatDialog.cpp
@@ -31,9 +31,9 @@ class SectionFormatDialog::SectionNameValidator : public QValidator
 {
 public:
     SectionNameValidator(QObject *parent, KoSectionManager *sectionManager, \
                KoSection *section)
-        : QValidator(parent)
-        , m_sectionManager(sectionManager)
-        , m_section(section)
+    : QValidator(parent)
+    , m_sectionManager(sectionManager)
+    , m_section(section)
     {
     }
 
@@ -63,7 +63,12 @@ SectionFormatDialog::SectionFormatDialog(QWidget *parent, \
KoTextEditor *editor)  setMainWidget(form);
 
     m_sectionManager = KoTextDocument(editor->document()).sectionManager();
-    m_widget.sectionTree->setModel(m_sectionManager->sectionsModel());
+    QStandardItemModel *model = m_sectionManager->update(true);
+    model->setColumnCount(1);
+    QStringList header;
+    header << i18n("Section name");
+    model->setHorizontalHeaderLabels(header);
+    m_widget.sectionTree->setModel(model);
     m_widget.sectionTree->expandAll();
 
     m_widget.sectionNameLineEdit->setEnabled(false);
@@ -78,7 +83,8 @@ SectionFormatDialog::SectionFormatDialog(QWidget *parent, \
KoTextEditor *editor)  void SectionFormatDialog::sectionNameChanged()
 {
     m_editor->renameSection(sectionFromModel(m_curIdx), \
                m_widget.sectionNameLineEdit->text());
-    m_widget.sectionNameLineEdit->setModified(false);
+    m_widget.sectionTree->model()->setData(m_curIdx, \
m_widget.sectionNameLineEdit->text(), Qt::DisplayRole); +    \
m_widget.sectionNameLineEdit->setModified(false); // value is set to line edit isn't \
modified (has new default value)  }
 
 void SectionFormatDialog::sectionSelected(QModelIndex idx)
@@ -106,7 +112,7 @@ void SectionFormatDialog::updateTreeState()
         m_widget.sectionNameLineEdit->setPalette(pal);
 
         QToolTip::showText(m_widget.sectionNameLineEdit->mapToGlobal(QPoint()),
-            i18n("Invalid characters or section with such name exists."));
+                           i18n("Invalid characters or section with such name \
exists."));  
         allOk = false;
     } else {
@@ -120,8 +126,7 @@ void SectionFormatDialog::updateTreeState()
 
 inline KoSection* SectionFormatDialog::sectionFromModel(QModelIndex idx)
 {
-    return static_cast<KoSection *>(m_widget.sectionTree->model()
-        ->itemData(idx)[Qt::UserRole + 1].value<void *>());
+    return m_widget.sectionTree->model()->itemData(idx)[Qt::UserRole + \
1].value<KoSection *>();  }
 
 #include <SectionFormatDialog.moc>
diff --git a/plugins/textshape/dialogs/SimpleInsertWidget.cpp \
b/plugins/textshape/dialogs/SimpleInsertWidget.cpp index b5500ae..6eebd3e 100644
--- a/plugins/textshape/dialogs/SimpleInsertWidget.cpp
+++ b/plugins/textshape/dialogs/SimpleInsertWidget.cpp
@@ -42,6 +42,8 @@ SimpleInsertWidget::SimpleInsertWidget(TextTool *tool, QWidget \
                *parent)
     connect(widget.insertVariable, SIGNAL(clicked(bool)), this, \
                SIGNAL(doneWithFocus()));
     connect(widget.insertSpecialChar, SIGNAL(clicked(bool)), this, \
                SIGNAL(doneWithFocus()));
     connect(widget.insertPageBreak, SIGNAL(clicked(bool)), this, \
SIGNAL(doneWithFocus())); +    connect(widget.insertSection, SIGNAL(clicked(bool)), \
this, SIGNAL(doneWithFocus())); +    connect(widget.configureSection, \
SIGNAL(clicked(bool)), this, SIGNAL(doneWithFocus()));  
     connect(widget.quickTable, SIGNAL(create(int, int)), this, \
                SIGNAL(insertTableQuick(int, int)));
     connect(widget.quickTable, SIGNAL(create(int, int)), this, \
                SIGNAL(doneWithFocus()));
diff --git a/servicetypes/calligra_deferred_plugin.desktop \
b/servicetypes/calligra_deferred_plugin.desktop index f65e174..b2a1a43 100644
--- a/servicetypes/calligra_deferred_plugin.desktop
+++ b/servicetypes/calligra_deferred_plugin.desktop
@@ -16,7 +16,7 @@ Name[it]=Estensione di caricamento differito di Calligra
 Name[kk]=Calligra-ның кідірытіп жүктеу плагині
 Name[nb]= Calligra programtillegg utsatt innlasting
 Name[nl]=Plugin voor Calligra uitgesteld laden
-Name[pl]=Wtyczka wczytywania odstawionych dla Calligry
+Name[pl]=Wtyczka opóźnionego wczytywania dla Calligry
 Name[pt]='Plugin' de Carregamento Posterior do Calligra
 Name[pt_BR]=Plugin de carregamento posterior do Calligra
 Name[ru]=Модуль отложенной загрузки Calligra
diff --git a/stage/data/kpr_tool.desktop b/stage/data/kpr_tool.desktop
index 16b515f..728d03c 100644
--- a/stage/data/kpr_tool.desktop
+++ b/stage/data/kpr_tool.desktop
@@ -4,10 +4,12 @@ X-KDE-ServiceType=CalligraStage/Tool
 Comment=Tool for Calligra Stage
 Comment[ca]=Eina pel Stage del Calligra
 Comment[cs]=Nástroj pro Calligra Stage
+Comment[da]=Værktøj til Calligra Stage
 Comment[de]=Hilfsprogramm für Calligra Stage
 Comment[en_GB]=Tool for Calligra Stage
 Comment[es]=Herramienta para Calligra Stage
 Comment[fi]=Calligra Stage -työkalu
+Comment[ia]=Instrumento proCalligra Stage
 Comment[it]=Strumento per Calligra Stage
 Comment[ja]=Calligra Stage のためのツール
 Comment[nb]=Verktøy for Calligra Stage
diff --git a/stage/templates/odf/cohere-blue.desktop \
b/stage/templates/odf/cohere-blue.desktop index dbd5100..e557109 100644
--- a/stage/templates/odf/cohere-blue.desktop
+++ b/stage/templates/odf/cohere-blue.desktop
@@ -2,6 +2,7 @@
 Icon=cohere-blue
 Name=Cohere
 Name[ca]=Cohere
+Name[da]=Cohere
 Name[de]=Cohere
 Name[en_GB]=Cohere
 Name[it]=Cohere
@@ -10,10 +11,12 @@ Name[pl]=Cohere
 Name[pt]=Cohere
 Name[pt_BR]=Cohere
 Name[sk]=Cohere
+Name[sv]=Sammanfoga
 Name[uk]=Cohere
 Name[x-test]=xxCoherexx
 Comment=Cohere designed presentation template
 Comment[ca]=Plantilles de presentacions dissenyades pel Cohere
+Comment[da]=Cohere-designet præsentationsskabelon
 Comment[en_GB]=Cohere designed presentation template
 Comment[it]=Modello di presentazione progettato da Cohere
 Comment[nl]=Met Cohere ontworpen presentatiesjabloon
@@ -21,6 +24,7 @@ Comment[pl]=Szablon prezentacji Cohere
 Comment[pt]=Modelo de apresentações desenhadas pela Cohere
 Comment[pt_BR]=Modelo de apresentações desenhados pelo Cohere
 Comment[sk]= ablóna prezentácie Cohere
+Comment[sv]=Sammanfoga skapad presentationsmall
 Comment[uk]=Шаблон презентацій, розроблений Cohere
 Comment[x-test]=xxCohere designed presentation templatexx
 X-KDE-Color=blue
diff --git a/stage/templates/odf/cohere-gold.desktop \
b/stage/templates/odf/cohere-gold.desktop index 479d21f..cbd092a 100644
--- a/stage/templates/odf/cohere-gold.desktop
+++ b/stage/templates/odf/cohere-gold.desktop
@@ -2,6 +2,7 @@
 Icon=cohere-gold
 Name=Cohere
 Name[ca]=Cohere
+Name[da]=Cohere
 Name[de]=Cohere
 Name[en_GB]=Cohere
 Name[it]=Cohere
@@ -10,10 +11,12 @@ Name[pl]=Cohere
 Name[pt]=Cohere
 Name[pt_BR]=Cohere
 Name[sk]=Cohere
+Name[sv]=Sammanfoga
 Name[uk]=Cohere
 Name[x-test]=xxCoherexx
 Comment=Cohere designed presentation template
 Comment[ca]=Plantilles de presentacions dissenyades pel Cohere
+Comment[da]=Cohere-designet præsentationsskabelon
 Comment[en_GB]=Cohere designed presentation template
 Comment[it]=Modello di presentazione progettato da Cohere
 Comment[nl]=Met Cohere ontworpen presentatiesjabloon
@@ -21,6 +24,7 @@ Comment[pl]=Szablon prezentacji Cohere
 Comment[pt]=Modelo de apresentações desenhadas pela Cohere
 Comment[pt_BR]=Modelo de apresentações desenhados pelo Cohere
 Comment[sk]= ablóna prezentácie Cohere
+Comment[sv]=Sammanfoga skapad presentationsmall
 Comment[uk]=Шаблон презентацій, розроблений Cohere
 Comment[x-test]=xxCohere designed presentation templatexx
 X-KDE-Color=gold
diff --git a/stage/templates/odf/cohere-magenta.desktop \
b/stage/templates/odf/cohere-magenta.desktop index c0aa0b8..5791b32 100644
--- a/stage/templates/odf/cohere-magenta.desktop
+++ b/stage/templates/odf/cohere-magenta.desktop
@@ -2,6 +2,7 @@
 Icon=cohere-magenta
 Name=Cohere
 Name[ca]=Cohere
+Name[da]=Cohere
 Name[de]=Cohere
 Name[en_GB]=Cohere
 Name[it]=Cohere
@@ -10,10 +11,12 @@ Name[pl]=Cohere
 Name[pt]=Cohere
 Name[pt_BR]=Cohere
 Name[sk]=Cohere
+Name[sv]=Sammanfoga
 Name[uk]=Cohere
 Name[x-test]=xxCoherexx
 Comment=Cohere designed presentation template
 Comment[ca]=Plantilles de presentacions dissenyades pel Cohere
+Comment[da]=Cohere-designet præsentationsskabelon
 Comment[en_GB]=Cohere designed presentation template
 Comment[it]=Modello di presentazione progettato da Cohere
 Comment[nl]=Met Cohere ontworpen presentatiesjabloon
@@ -21,6 +24,7 @@ Comment[pl]=Szablon prezentacji Cohere
 Comment[pt]=Modelo de apresentações desenhadas pela Cohere
 Comment[pt_BR]=Modelo de apresentações desenhados pelo Cohere
 Comment[sk]= ablóna prezentácie Cohere
+Comment[sv]=Sammanfoga skapad presentationsmall
 Comment[uk]=Шаблон презентацій, розроблений Cohere
 Comment[x-test]=xxCohere designed presentation templatexx
 X-KDE-Color=magenta
diff --git a/stage/templates/odf/cohere-red.desktop \
b/stage/templates/odf/cohere-red.desktop index 53a5a38..c17f592 100644
--- a/stage/templates/odf/cohere-red.desktop
+++ b/stage/templates/odf/cohere-red.desktop
@@ -2,6 +2,7 @@
 Icon=cohere-red
 Name=Cohere
 Name[ca]=Cohere
+Name[da]=Cohere
 Name[de]=Cohere
 Name[en_GB]=Cohere
 Name[it]=Cohere
@@ -10,10 +11,12 @@ Name[pl]=Cohere
 Name[pt]=Cohere
 Name[pt_BR]=Cohere
 Name[sk]=Cohere
+Name[sv]=Sammanfoga
 Name[uk]=Cohere
 Name[x-test]=xxCoherexx
 Comment=Cohere designed presentation template
 Comment[ca]=Plantilles de presentacions dissenyades pel Cohere
+Comment[da]=Cohere-designet præsentationsskabelon
 Comment[en_GB]=Cohere designed presentation template
 Comment[it]=Modello di presentazione progettato da Cohere
 Comment[nl]=Met Cohere ontworpen presentatiesjabloon
@@ -21,6 +24,7 @@ Comment[pl]=Szablon prezentacji Cohere
 Comment[pt]=Modelo de apresentações desenhadas pela Cohere
 Comment[pt_BR]=Modelo de apresentações desenhados pelo Cohere
 Comment[sk]= ablóna prezentácie Cohere
+Comment[sv]=Sammanfoga skapad presentationsmall
 Comment[uk]=Шаблон презентацій, розроблений Cohere
 Comment[x-test]=xxCohere designed presentation templatexx
 X-KDE-Color=red
diff --git a/stage/templates/odf/skyline_monotone.desktop \
b/stage/templates/odf/skyline_monotone.desktop index c0efa2b..3db2ae2 100644
--- a/stage/templates/odf/skyline_monotone.desktop
+++ b/stage/templates/odf/skyline_monotone.desktop
@@ -3,15 +3,17 @@ Icon=skyline_monotone
 Name=Skyline
 Name[ca]=Horitzó
 Name[cs]=Panorama
+Name[da]=Skyline
 Name[de]=Horizont
 Name[en_GB]=Skyline
 Name[fi]=Taivaanranta
 Name[it]=Orizzonte
 Name[nl]=Horizon
-Name[pl]=Linia nieba
+Name[pl]=Horyzont
 Name[pt]=Linha Celeste Nocturna
 Name[pt_BR]=Linha celeste
 Name[sk]=Panoráma
+Name[sv]=Nattsiluett
 Name[uk]=Горизонт
 Name[x-test]=xxSkylinexx
 Comment=Skyline Monotone
diff --git a/stage/templates/odf/skyline_monotone_wide.desktop \
b/stage/templates/odf/skyline_monotone_wide.desktop index 5c8de81..3eb754e 100644
--- a/stage/templates/odf/skyline_monotone_wide.desktop
+++ b/stage/templates/odf/skyline_monotone_wide.desktop
@@ -3,14 +3,16 @@ Icon=skyline_monotone_wide
 Name=Skyline Wide
 Name[ca]=Horitzó ample
 Name[cs]= iroké panorama
+Name[da]=Skyline bred
 Name[en_GB]=Skyline Wide
 Name[fi]=Taivaanranta, leveä
 Name[it]=Orizzonte ampio
 Name[nl]=Brede horizon
-Name[pl]=Szeroka linia nieba
+Name[pl]=Szeroki horyzont
 Name[pt]=Linha Celeste Nocturna Ampla
 Name[pt_BR]=Linha celeste ampla
 Name[sk]= iroká panoráma
+Name[sv]=Nattsiluett bred
 Name[uk]=Широкий горизонт
 Name[x-test]=xxSkyline Widexx
 Comment=Skyline Monotone Wide
diff --git a/stage/templates/odf/skyline_morning.desktop \
b/stage/templates/odf/skyline_morning.desktop index ea77d3a..e5924bd 100644
--- a/stage/templates/odf/skyline_morning.desktop
+++ b/stage/templates/odf/skyline_morning.desktop
@@ -3,15 +3,17 @@ Icon=skyline_morning
 Name=Skyline
 Name[ca]=Horitzó
 Name[cs]=Panorama
+Name[da]=Skyline
 Name[de]=Horizont
 Name[en_GB]=Skyline
 Name[fi]=Taivaanranta
 Name[it]=Orizzonte
 Name[nl]=Horizon
-Name[pl]=Linia nieba
+Name[pl]=Horyzont
 Name[pt]=Linha Celeste Nocturna
 Name[pt_BR]=Linha celeste
 Name[sk]=Panoráma
+Name[sv]=Nattsiluett
 Name[uk]=Горизонт
 Name[x-test]=xxSkylinexx
 Comment=Skyline Morning
@@ -34,7 +36,7 @@ Comment[kk]=Таңғы көкжиек
 Comment[nb]=Morgensilhuett
 Comment[nds]=Kimmümreet an'n Morgen
 Comment[nl]=Morgenhorizon
-Comment[pl]=Poranna linia nieba 
+Comment[pl]=Poranny horyzont
 Comment[pt]=Linha Celeste Matinal
 Comment[pt_BR]=Linha celeste matinal
 Comment[ru]=Утреннее небо
diff --git a/stage/templates/odf/skyline_morning_wide.desktop \
b/stage/templates/odf/skyline_morning_wide.desktop index 0151c53..b26ec8b 100644
--- a/stage/templates/odf/skyline_morning_wide.desktop
+++ b/stage/templates/odf/skyline_morning_wide.desktop
@@ -3,14 +3,16 @@ Icon=skyline_morning_wide
 Name=Skyline Wide
 Name[ca]=Horitzó ample
 Name[cs]= iroké panorama
+Name[da]=Skyline bred
 Name[en_GB]=Skyline Wide
 Name[fi]=Taivaanranta, leveä
 Name[it]=Orizzonte ampio
 Name[nl]=Brede horizon
-Name[pl]=Szeroka linia nieba
+Name[pl]=Szeroki horyzont
 Name[pt]=Linha Celeste Nocturna Ampla
 Name[pt_BR]=Linha celeste ampla
 Name[sk]= iroká panoráma
+Name[sv]=Nattsiluett bred
 Name[uk]=Широкий горизонт
 Name[x-test]=xxSkyline Widexx
 Comment=Skyline Morning Wide
@@ -33,7 +35,7 @@ Comment[kk]=Кең таңғы көкжиек
 Comment[nb]=Bred morgensilhuett
 Comment[nds]=Breed Kimmümreet an'n Morgen
 Comment[nl]=Brede morgenhorizon
-Comment[pl]=Szeroka poranna linia nieba 
+Comment[pl]=Szeroki poranny horyzont
 Comment[pt]=Linha Celeste Matinal Ampla
 Comment[pt_BR]=Linha celeste matinal ampla
 Comment[ru]=Утреннее небо широкое
diff --git a/stage/templates/odf/skyline_night.desktop \
b/stage/templates/odf/skyline_night.desktop index d9c5692..af45a44 100644
--- a/stage/templates/odf/skyline_night.desktop
+++ b/stage/templates/odf/skyline_night.desktop
@@ -3,15 +3,17 @@ Icon=skyline_night
 Name=Skyline
 Name[ca]=Horitzó
 Name[cs]=Panorama
+Name[da]=Skyline
 Name[de]=Horizont
 Name[en_GB]=Skyline
 Name[fi]=Taivaanranta
 Name[it]=Orizzonte
 Name[nl]=Horizon
-Name[pl]=Linia nieba
+Name[pl]=Horyzont
 Name[pt]=Linha Celeste Nocturna
 Name[pt_BR]=Linha celeste
 Name[sk]=Panoráma
+Name[sv]=Nattsiluett
 Name[uk]=Горизонт
 Name[x-test]=xxSkylinexx
 Comment=Skyline Night
@@ -34,7 +36,7 @@ Comment[kk]=Түнгі көкжиек
 Comment[nb]=Nattsilhuett
 Comment[nds]=Kimmümreet bi Nacht
 Comment[nl]=Nachthorizon
-Comment[pl]=Nocna linia nieba
+Comment[pl]=Nocny horyzont
 Comment[pt]=Linha Celeste Nocturna
 Comment[pt_BR]=Linha celeste noturna
 Comment[ru]=Ночное небо
diff --git a/stage/templates/odf/skyline_night_wide.desktop \
b/stage/templates/odf/skyline_night_wide.desktop index a9e20fc..81c4b78 100644
--- a/stage/templates/odf/skyline_night_wide.desktop
+++ b/stage/templates/odf/skyline_night_wide.desktop
@@ -3,14 +3,16 @@ Icon=skyline_night_wide
 Name=Skyline Wide
 Name[ca]=Horitzó ample
 Name[cs]= iroké panorama
+Name[da]=Skyline bred
 Name[en_GB]=Skyline Wide
 Name[fi]=Taivaanranta, leveä
 Name[it]=Orizzonte ampio
 Name[nl]=Brede horizon
-Name[pl]=Szeroka linia nieba
+Name[pl]=Szeroki horyzont
 Name[pt]=Linha Celeste Nocturna Ampla
 Name[pt_BR]=Linha celeste ampla
 Name[sk]= iroká panoráma
+Name[sv]=Nattsiluett bred
 Name[uk]=Широкий горизонт
 Name[x-test]=xxSkyline Widexx
 Comment=Skyline Night Wide
@@ -33,7 +35,7 @@ Comment[kk]=Кең түнгі көкжиек
 Comment[nb]=Bred nattsilhuett
 Comment[nds]=Breed Kimmümreet bi Nacht
 Comment[nl]=Brede nachthorizon
-Comment[pl]=Szeroka nocna linia nieba
+Comment[pl]=Szeroki nocny horyzont
 Comment[pt]=Linha Celeste Nocturna Ampla
 Comment[pt_BR]=Linha celeste noturna ampla
 Comment[ru]=Ночное небо широкое
diff --git a/words/app/words.appdata.xml b/words/app/words.appdata.xml
index af09306..2191fc8 100644
--- a/words/app/words.appdata.xml
+++ b/words/app/words.appdata.xml
@@ -104,6 +104,7 @@
       <li xml:lang="en-GB">Allows embedding of Documents</li>
       <li xml:lang="es">Permite incrustar documentos</li>
       <li xml:lang="fi">Tiedostojen upottamisen tuki</li>
+      <li xml:lang="ia">Il permitte insertar documentos</li>
       <li xml:lang="it">Consente l'integrazione di documenti</li>
       <li xml:lang="ja">文書への埋め込みを許可</li>
       <li xml:lang="nb">Tillater innebygde dokumenter</li>
@@ -121,6 +122,7 @@
       <li xml:lang="en-GB">Customisation of user interface</li>
       <li xml:lang="es">Personalización de la interfaz de usuario</li>
       <li xml:lang="fi">Käyttöliittymä mukautettavissa</li>
+      <li xml:lang="ia">Prsonalisation de le Interfacie de usator</li>
       <li xml:lang="it">Personalizzazion e dell'interfaccia utente</li>
       <li xml:lang="ja">ユーザインターフェースのカスタマイズ</li>
       <li xml:lang="nb">Tilpassing av brukerflaten</li>
diff --git a/words/part/author/author.desktop b/words/part/author/author.desktop
index df275c5..225e9f7 100644
--- a/words/part/author/author.desktop
+++ b/words/part/author/author.desktop
@@ -58,7 +58,7 @@ GenericName[lt]=Rašytojo įrankis
 GenericName[mr]=लेखक साधन
 GenericName[nb]=Forfatterverktøy
 GenericName[nl]=Author hulpmiddel
-GenericName[pl]=Narzędzie prezentacji
+GenericName[pl]=Narzędzie autorskie
 GenericName[pt]=Ferramenta do Author
 GenericName[pt_BR]=Ferramenta de autoria
 GenericName[sk]=Nástroj Author
diff --git a/words/part/author/authorpart.desktop \
b/words/part/author/authorpart.desktop index b83085b..8e491ab 100644
--- a/words/part/author/authorpart.desktop
+++ b/words/part/author/authorpart.desktop
@@ -58,7 +58,7 @@ GenericName[lt]=Rašytojo įrankis
 GenericName[mr]=लेखक साधन
 GenericName[nb]=Forfatterverktøy
 GenericName[nl]=Author hulpmiddel
-GenericName[pl]=Narzędzie prezentacji
+GenericName[pl]=Narzędzie autorskie
 GenericName[pt]=Ferramenta do Author
 GenericName[pt_BR]=Ferramenta de autoria
 GenericName[sk]=Nástroj Author
diff --git a/words/part/dockers/KWDebugWidget.cpp \
b/words/part/dockers/KWDebugWidget.cpp index 2aa53c0..6b3bc7b 100644
--- a/words/part/dockers/KWDebugWidget.cpp
+++ b/words/part/dockers/KWDebugWidget.cpp
@@ -22,6 +22,7 @@
 #include <KoParagraphStyle.h>
 #include <KoSection.h>
 #include <KoSectionEnd.h>
+#include <KoSectionUtils.h>
 
 #include <QHBoxLayout>
 #include <QTimer>
@@ -69,30 +70,17 @@ void KWDebugWidget::updateData()
     QTextBlock curBlock = editor->block();
     QTextBlockFormat fmt = curBlock.blockFormat();
 
-    QString willShow;
-    if (fmt.hasProperty(KoParagraphStyle::SectionStartings)) {
-        willShow = "This sections starts here :";
-        QVariant var = fmt.property(KoParagraphStyle::SectionStartings);
-        QList<QVariant> openList = var.value< QList<QVariant> >();
-        foreach (const QVariant &sv, openList)
-        {
-            KoSection *sec = static_cast<KoSection *>(sv.value<void *>());
-            willShow += sec->name() + " ";
-        }
-        willShow.append("\n");
+    QString willShow = "This sections starts here :";
+    foreach (const KoSection *sec, KoSectionUtils::sectionStartings(fmt)) {
+        willShow += " \"" + sec->name() + "\"";
     }
+    willShow.append("\n");
 
-    if (fmt.hasProperty(KoParagraphStyle::SectionEndings)) {
-        willShow += "This sections end here :";
-        QVariant var = fmt.property(KoParagraphStyle::SectionEndings);
-        QList<QVariant> closeList = var.value< QList<QVariant> >();
-        foreach (const QVariant &sv, closeList)
-        {
-            KoSectionEnd *sec = static_cast<KoSectionEnd *>(sv.value<void *>());
-            willShow += sec->name() + " ";
-        }
-        willShow.append("\n");
+    willShow += "This sections end here :";
+    foreach (const KoSectionEnd *sec, KoSectionUtils::sectionEndings(fmt)) {
+        willShow += " \"" + sec->name() + "\"";
     }
+    willShow.append("\n");
 
     willShow += "block number is " + \
                QString::number(editor->constCursor().block().blockNumber()) + "\n";
     willShow += "cur pos " + QString::number(editor->constCursor().position()) + \
"\n";


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic