<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/103276/">http://git.reviewboard.kde.org/r/103276/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Calligra and Thorsten Zachmann.</div>
<div>By Sebastian Sauer.</div>







<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Following patch implements user defined variables. This solves bug https://bugs.kde.org/show_bug.cgi?id=282972

What I did;
* extended the KoVariableManager to handle now also such user defined variables.
* the KoVariableManager now has loadOdf and saveOdf methods to load and save user defined variables declarations.
* the user defined variables are implemented using the new plugins/variables/User* classes.
* KoVariable::manager() can now be used even on KoVariable::createOptionsWidget
* replaced the previous unused KoInlineObject::User with KoInlineObject::UserGet and KoInlineObject::UserInput and make use of them
* extended KoTextLoader.cpp to proper load user defined variables into the KoVariableManager. Instances are created using the new UserVariable plugin.
* extended KoOdfNumberStyles with the formatFraction method. Ideally I would also move the other format (e.g. formatDate, formatTime, etc.) methods from the plugin to the KoOdfNumberStyles class to have it reusable (we at least need formatDate and KoOdfNumberStyles also in the DateVariable later).
* added the KoOdfNumberStyles::saveOdfBooleanStyle to also save boolean formattings proper back.
* introduced the KoOdfNumberStyles::saveOdfNumberStyle method to handle choosing the proper KoOdfNumberStyles::saveOdf*Style methods.
* extended KWOdfWriter.cpp to proper save the user defined variable declarations back to the ODT.

Remaining problems;
* there is no way to add/edit/remove/display such user defined variables in Calligra Tables. Seems oocalc has the same problem.
* the UI still misses a way to set/modify custom formatings.
* support for formulas... but this is another beast and partly already covered at bug 283816. I do not plan to work on this anytime soon.

Update to the first review-request at https://git.reviewboard.kde.org/r/102890/ ;
* loading of the variables happens now not any longer in the KoTextLoader but in the applications themself right after loading the body-element what is inline with how saving is done.
* the same logic is applied to Calligra Words, Stage and Tables what means all 3 of them support now loading and saving of user defined variables. Editing can be done direct in the Insert=>Variable=>Custom (should we better rename it to "User defined" rather then "Custom"?) dialog what is inline with how it can be done in OO.org/LO.
</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">see the documents attached to bug 282972</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>libs/kopageapp/KoPADocument.cpp <span style="color: grey">(43e002a)</span></li>

 <li>libs/kotext/InsertVariableAction.cpp <span style="color: grey">(de68bbf)</span></li>

 <li>libs/kotext/KoInlineObject.h <span style="color: grey">(fbd1795)</span></li>

 <li>libs/kotext/KoVariableManager.h <span style="color: grey">(680a29b)</span></li>

 <li>libs/kotext/KoVariableManager.cpp <span style="color: grey">(a915b77)</span></li>

 <li>libs/kotext/tests/TestKoInlineTextObjectManager.cpp <span style="color: grey">(5bafc82)</span></li>

 <li>libs/odf/KoOdfNumberStyles.h <span style="color: grey">(536408d)</span></li>

 <li>libs/odf/KoOdfNumberStyles.cpp <span style="color: grey">(5611465)</span></li>

 <li>libs/odf/tests/CMakeLists.txt <span style="color: grey">(a1c71dc)</span></li>

 <li>libs/odf/tests/TestNumberStyle.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libs/odf/tests/TestNumberStyle.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plugins/variables/CMakeLists.txt <span style="color: grey">(cca8198)</span></li>

 <li>plugins/variables/UserVariable.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plugins/variables/UserVariable.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plugins/variables/UserVariableFactory.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plugins/variables/UserVariableFactory.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plugins/variables/VariablesPlugin.cpp <span style="color: grey">(913aebc)</span></li>

 <li>tables/DocBase.h <span style="color: grey">(daf758e)</span></li>

 <li>tables/DocBase.cpp <span style="color: grey">(adb9940)</span></li>

 <li>words/part/KWAboutData.h <span style="color: grey">(68e9a6f)</span></li>

 <li>words/part/KWOdfLoader.cpp <span style="color: grey">(837280a)</span></li>

 <li>words/part/KWOdfWriter.cpp <span style="color: grey">(ebfdad9)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/103276/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>