changes due to rename

preferencesAboutTextFull
Claudio Valerio 12 years ago
parent 9ac1fff02a
commit 06a8d52ca8
  1. 1
      OpenBoard.pro
  2. 2
      plugins/cffadaptor/src/UBCFFConstants.h
  3. 2
      resources/OpenBoard.qrc
  4. 2
      resources/forms/blackoutWidget.ui
  5. 2
      resources/forms/documents.ui
  6. 8
      resources/forms/mainWindow.ui
  7. 174
      resources/forms/preferences.ui
  8. 2
      resources/forms/youTubePublishingDialog.ui
  9. 2
      src/adaptors/UBMetadataDcSubsetAdaptor.cpp
  10. 2
      src/adaptors/UBSvgSubsetAdaptor.cpp
  11. 2
      src/core/UBApplication.cpp
  12. 2
      src/core/UBApplicationController.cpp
  13. 9
      src/core/UBSettings.cpp
  14. 4
      src/core/main.cpp
  15. 2
      src/domain/UBGraphicsScene.cpp
  16. 2
      src/frameworks/UBPlatformUtils.h
  17. 7
      src/frameworks/UBPlatformUtils_linux.cpp
  18. 69
      src/frameworks/UBPlatformUtils_mac.mm
  19. 16
      src/frameworks/UBPlatformUtils_win.cpp
  20. 297
      src/frameworks/UBVersion.cpp
  21. 28
      src/frameworks/UBVersion.h

@ -22,6 +22,7 @@ macx:OSX_VERSION = "$${VERSION} (r$${SVN_VERSION})"
VERSION_RC = $$VERSION_MAJ,$$VERSION_MIN,$$VERSION_TYPE,$$VERSION_PATCH VERSION_RC = $$VERSION_MAJ,$$VERSION_MIN,$$VERSION_TYPE,$$VERSION_PATCH
VERSION_RC = $$replace(VERSION_RC, "a", "160") # 0xA0 VERSION_RC = $$replace(VERSION_RC, "a", "160") # 0xA0
VERSION_RC = $$replace(VERSION_RC, "b", "176") # 0xB0 VERSION_RC = $$replace(VERSION_RC, "b", "176") # 0xB0
VERSION_RC = $$replace(VERSION_RC, "rc", "192" ) # 0xC0
VERSION_RC = $$replace(VERSION_RC, "r", "240") # 0xF0 VERSION_RC = $$replace(VERSION_RC, "r", "240") # 0xF0
QT += webkit QT += webkit

@ -126,7 +126,6 @@ const QString avTrue = "true";
// Namespaces and prefixes // Namespaces and prefixes
const QString svgRequiredExtensionPrefix = "http://www.imsglobal.org/iwb/"; const QString svgRequiredExtensionPrefix = "http://www.imsglobal.org/iwb/";
const QString dcNS = "http://purl.org/dc/elements/1.1/"; const QString dcNS = "http://purl.org/dc/elements/1.1/";
const QString ubNS = "http://uniboard.mnemis.com/document";
const QString svgUBZNS = "http://www.imsglobal.org/xsd/iwb_v1p0"; const QString svgUBZNS = "http://www.imsglobal.org/xsd/iwb_v1p0";
const QString svgIWBNS = "http://www.w3.org/2000/svg"; const QString svgIWBNS = "http://www.w3.org/2000/svg";
const QString xlinkNS = "http://www.w3.org/1999/xlink"; const QString xlinkNS = "http://www.w3.org/1999/xlink";
@ -138,7 +137,6 @@ http://www.imsglobal.org/profile/iwb/iwbv1p0_v1p0.xsd \
http://www.w3.org/2000/svg http://www.imsglobal.org/profile/iwb/svgsubsetv1p0_v1p0.xsd \ http://www.w3.org/2000/svg http://www.imsglobal.org/profile/iwb/svgsubsetv1p0_v1p0.xsd \
http://www.w3.org/1999/xlink http://www.imsglobal.org/xsd/w3/1999/xlink.xsd"; http://www.w3.org/1999/xlink http://www.imsglobal.org/xsd/w3/1999/xlink.xsd";
const QString dcNSPrefix = "dc"; const QString dcNSPrefix = "dc";
const QString ubNSPrefix = "ub";
const QString svgIWBNSPrefix = "svg"; const QString svgIWBNSPrefix = "svg";
const QString xlinkNSPrefix = "xlink"; const QString xlinkNSPrefix = "xlink";
const QString iwbNsPrefix = "iwb"; const QString iwbNsPrefix = "iwb";

@ -1,7 +1,7 @@
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>images/OpenBoard.png</file> <file>images/OpenBoard.png</file>
<file>images/bigUniboard.png</file> <file>images/bigOpenBoard.png</file>
<file>images/close.svg</file> <file>images/close.svg</file>
<file>images/increase.svg</file> <file>images/increase.svg</file>
<file>images/decrease.svg</file> <file>images/decrease.svg</file>

@ -82,7 +82,7 @@
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background: url(:/images/bigUniboard.png); border: none;</string> <string notr="true">background: url(:/images/bigOpenBoard.png); border: none;</string>
</property> </property>
<property name="text"> <property name="text">
<string notr="true"/> <string notr="true"/>

@ -23,7 +23,7 @@
<enum>Qt::DefaultContextMenu</enum> <enum>Qt::DefaultContextMenu</enum>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Uniboard Documents</string> <string>OpenBoard Documents</string>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true"/> <string notr="true"/>

@ -590,10 +590,10 @@
<normaloff>:/images/toolbar/menu.png</normaloff>:/images/toolbar/menu.png</iconset> <normaloff>:/images/toolbar/menu.png</normaloff>:/images/toolbar/menu.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Open-Sankoré</string> <string>OpenBoard</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Open-Sankoré</string> <string>OpenBoard</string>
</property> </property>
</action> </action>
<action name="actionDesktop"> <action name="actionDesktop">
@ -1564,10 +1564,10 @@
<normaloff>:/images/toolbar/hide.png</normaloff>:/images/toolbar/hide.png</iconset> <normaloff>:/images/toolbar/hide.png</normaloff>:/images/toolbar/hide.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Hide Open-Sankoré</string> <string>Hide OpenBoard</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Hide Open-Sankoré Application</string> <string>Hide OpenBoard Application</string>
</property> </property>
<property name="shortcut"> <property name="shortcut">
<string>Ctrl+H</string> <string>Ctrl+H</string>

@ -623,69 +623,6 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="aboutTab">
<property name="enabled">
<bool>true</bool>
</property>
<attribute name="title">
<string>About</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTextBrowser" name="copyrightTextBrowser">
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Cantarell'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;Open-Sankoré version 2.0, Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la GNU General Public Licence (GNU GPL) telle que publiée par la Free Software Foundation en version 3, avec une exception OpenSSL.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence GNU General Public Licence située dans l'onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License, with a specific linking exception for the OpenSSL project's &amp;quot;OpenSSL&amp;quot; library (or with modified versions of it that use the same license as the &amp;quot;OpenSSL&amp;quot; library). You can find the source code of this software at &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License below for more details.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l'Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="softwareUpdateGroupBox">
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>70</height>
</size>
</property>
<property name="title">
<string>Software Update</string>
</property>
<widget class="QCheckBox" name="checkSoftwareUpdateAtLaunchCheckBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>551</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Check software update at launch</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="thirdPartyLicence"> <widget class="QWidget" name="thirdPartyLicence">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -2711,6 +2648,77 @@ Public License instead of this License. But first, please read
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Cantarell'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Cantarell'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A special thanks to:&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Alexander Angelov and Iva Ninova for Bulgarian&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Francesc Busquets and Toni Hortal for Catalan&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Christophe Gallego for Corsican&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Jaroslav Krejčí, Janek Wagner for Czech&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Geert Kraeye and Derk Klomp for Dutch&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Christian Oïhénart and François Bocquet for French&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Hans-Peter Zahno and Klaus Tenner for German&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Yannis Kaskamanidis for Greek&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Lalit Mohan for Hindi&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Antonello Comi and Marco Menardi for Italian&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Didier Clerc for Japanese&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Faraniaina Domoina Rabarijaona for Malagasy&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Patricia Fisch and César Marques for Portuguese&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Ilia Ryabokon for Russian&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Anki Chen for Traditional Chinese&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Jaroslav Ryník for Slovak&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Dorian Fuentes and Juan José Gutiérrez Aparicio for Spanish&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;• Ferhat Ozkasgarli for Turkish&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Fonts&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;AndBasR.ttf &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Sil Open Font License&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://scripts.sil.org/OFL&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://scripts.sil.org/OFL&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;(c) 2004-2008, SIL International (&lt;a href=&quot;http://scripts.sil.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://scripts.sil.org&lt;/span&gt;&lt;/a&gt;), &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;with Reserved Font Names 'Andika' and 'SIL'.&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;ec_cour.ttf &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Open Font License&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://scripts.sil.org/OFL&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://scripts.sil.org/OFL&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Jean-Marie Douteau (&lt;a href=&quot;mailto:douteau.ecolier@sfr.fr&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;douteau.ecolier@sfr.fr&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : &lt;a href=&quot;http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;ecl_cour.ttf&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Open Font License&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://scripts.sil.org/OFL&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://scripts.sil.org/OFL&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Jean-Marie Douteau (&lt;a href=&quot;mailto:douteau.ecolier@sfr.fr&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;douteau.ecolier@sfr.fr&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : &lt;a href=&quot;http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="aboutTab">
<property name="enabled">
<bool>true</bool>
</property>
<attribute name="title">
<string>About</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTextBrowser" name="copyrightTextBrowser">
<property name="html">
<string notr="true">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Cantarell'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;OpenBoard 1.00.00&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;OpenBoard 1.00.00&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;OpenBoard is copyright (c) 2013 . All rights reserved.&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;OpenBoard is copyright (c) 2013 . All rights reserved.&lt;/p&gt;
@ -2728,13 +2736,51 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;openeducationfoundation.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;openeducationfoundation.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;openeducationfoundation.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;openeducationfoundation.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;oe-f.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;oe-f.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;oe-f.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;oe-f.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;email: &lt;a href=&quot;mailto:contact@oe-f.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;contact@oe-f.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;email: &lt;a href=&quot;mailto:contact@oe-f.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;contact@oe-f.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="openExternalLinks"> <property name="openExternalLinks">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="softwareUpdateGroupBox">
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>70</height>
</size>
</property>
<property name="title">
<string>Software Update</string>
</property>
<widget class="QCheckBox" name="checkSoftwareUpdateAtLaunchCheckBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>551</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Check software update at launch</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</widget> </widget>

@ -69,7 +69,7 @@
<item row="4" column="1"> <item row="4" column="1">
<widget class="QLineEdit" name="keywords"> <widget class="QLineEdit" name="keywords">
<property name="text"> <property name="text">
<string>Uniboard</string> <string>OpenBoard</string>
</property> </property>
</widget> </widget>
</item> </item>

@ -222,7 +222,7 @@ QMap<QString, QVariant> UBMetadataDcSubsetAdaptor::load(QString pPath)
if (xml.hasError()) if (xml.hasError())
{ {
qWarning() << "error parsing sankore metadata.rdf file " << xml.errorString(); qWarning() << "error parsing metadata.rdf file " << xml.errorString();
} }
} }

@ -830,7 +830,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
if (mXmlReader.hasError()) if (mXmlReader.hasError())
{ {
qWarning() << "error parsing Sankore file " << mXmlReader.errorString(); qWarning() << "error parsing file " << mXmlReader.errorString();
} }
qDebug() << "Number of detected strokes: " << mStrokesList.count(); qDebug() << "Number of detected strokes: " << mStrokesList.count();

@ -159,7 +159,7 @@ UBApplication::UBApplication(const QString &id, int &argc, char **argv) : QtSing
setStyle(new UBStyle()); // Style is owned and deleted by the application setStyle(new UBStyle()); // Style is owned and deleted by the application
QString css = UBFileSystemUtils::readTextFile(UBPlatformUtils::applicationResourcesDirectory() + "/etc/Uniboard.css"); QString css = UBFileSystemUtils::readTextFile(UBPlatformUtils::applicationResourcesDirectory() + "/etc/"+ qApp->applicationName()+".css");
if (css.length() > 0) if (css.length() > 0)
setStyleSheet(css); setStyleSheet(css);

@ -507,7 +507,7 @@ void UBApplicationController::downloadJsonFinished(QString currentJson)
UBVersion installedVersion (qApp->applicationVersion().left(4)); UBVersion installedVersion (qApp->applicationVersion().left(4));
UBVersion jsonVersion (scriptValue.property("version").toString().left(4)); UBVersion jsonVersion (scriptValue.property("version").toString().left(4));
if (installedVersion.isValid() && jsonVersion.isValid() && jsonVersion > installedVersion) { if (jsonVersion > installedVersion) {
if (UBApplication::mainWindow->yesNoQuestion(tr("Update available"), tr ("New update available, would you go to the web page ?"))){ if (UBApplication::mainWindow->yesNoQuestion(tr("Update available"), tr ("New update available, would you go to the web page ?"))){
QUrl url(scriptValue.property ("url").toString()); QUrl url(scriptValue.property ("url").toString());
QDesktopServices::openUrl (url); QDesktopServices::openUrl (url);

@ -131,8 +131,8 @@ QSettings* UBSettings::getAppSettings()
{ {
if (!UBSettings::sAppSettings) if (!UBSettings::sAppSettings)
{ {
QString tmpSettings = QDir::tempPath() + "/Uniboard.config"; QString tmpSettings = QDir::tempPath() + "/" + qApp->applicationName() + ".config";
QString appSettings = UBPlatformUtils::applicationResourcesDirectory() + "/etc/Uniboard.config"; QString appSettings = UBPlatformUtils::applicationResourcesDirectory() + "/etc/" + qApp->applicationName() + ".config";
// tmpSettings exists when upgrading Uniboard on Mac (see UBPlatformUtils_mac.mm updater:willInstallUpdate:) // tmpSettings exists when upgrading Uniboard on Mac (see UBPlatformUtils_mac.mm updater:willInstallUpdate:)
if (QFile::exists(tmpSettings)) if (QFile::exists(tmpSettings))
@ -154,7 +154,7 @@ UBSettings::UBSettings(QObject *parent)
mAppSettings = UBSettings::getAppSettings(); mAppSettings = UBSettings::getAppSettings();
QString userSettingsFile = UBSettings::userDataDirectory() + "/UniboardUser.config"; QString userSettingsFile = UBSettings::userDataDirectory() + "/"+qApp->applicationName()+"User.config";
mUserSettings = new QSettings(userSettingsFile, QSettings::IniFormat, parent); mUserSettings = new QSettings(userSettingsFile, QSettings::IniFormat, parent);
@ -761,7 +761,6 @@ void UBSettings::setItalicFont(bool italic)
QString UBSettings::userDataDirectory() QString UBSettings::userDataDirectory()
{ {
static QString dataDirPath = ""; static QString dataDirPath = "";
if(dataDirPath.isEmpty()){ if(dataDirPath.isEmpty()){
if (sAppSettings && getAppSettings()->contains("App/DataDirectory")) { if (sAppSettings && getAppSettings()->contains("App/DataDirectory")) {
@ -775,7 +774,7 @@ QString UBSettings::userDataDirectory()
} }
dataDirPath = UBFileSystemUtils::normalizeFilePath(QDesktopServices::storageLocation(QDesktopServices::DataLocation)); dataDirPath = UBFileSystemUtils::normalizeFilePath(QDesktopServices::storageLocation(QDesktopServices::DataLocation));
dataDirPath.replace(qApp->organizationName() + "/" + qApp->organizationDomain(), ""); dataDirPath.replace(qApp->organizationName() + "/", "");
} }
return dataDirPath; return dataDirPath;
} }

@ -59,7 +59,7 @@ void ub_message_output(QtMsgType type, const char *msg) {
#endif #endif
if (UBApplication::app() && UBApplication::app()->isVerbose()) { if (UBApplication::app() && UBApplication::app()->isVerbose()) {
QString logFileNamePath = UBSettings::userDataDirectory() + "/log/uniboard.log"; QString logFileNamePath = UBSettings::userDataDirectory() + "/log/"+ qApp->applicationName() + ".log";
QFile logFile(logFileNamePath); QFile logFile(logFileNamePath);
if (logFile.exists() && logFile.size() > 10000000) if (logFile.exists() && logFile.size() > 10000000)
@ -99,7 +99,7 @@ int main(int argc, char *argv[])
UBApplication app("OpenBoard", argc, argv); UBApplication app("OpenBoard", argc, argv);
//BUGFIX: //BUGFIX:
//when importing a sankore file that contains a non standard character //when importing a OpenBoard file that contains a non standard character
//the codecForLocale or the codecForCString is used to convert the file path //the codecForLocale or the codecForCString is used to convert the file path
//into a const char*. This is why in french windows setup the codec name shouldn't be //into a const char*. This is why in french windows setup the codec name shouldn't be
//set to UTF-8. For example, setting UTF-8, will convert "Haïti" into "HaÂ-ti. //set to UTF-8. For example, setting UTF-8, will convert "Haïti" into "HaÂ-ti.

@ -694,7 +694,7 @@ void UBGraphicsScene::DisposeMagnifierQWidgets()
magniferDisplayViewWidget = NULL; magniferDisplayViewWidget = NULL;
} }
// some time have crash here on access to app (when call from destructor when close sankore app) // some time have crash here on access to app (when call from destructor when close OpenBoard app)
// so i just add try/catch section here // so i just add try/catch section here
try try
{ {

@ -191,8 +191,6 @@ public:
static QString translationPath(QString pFilePrefix, QString pLanguage); static QString translationPath(QString pFilePrefix, QString pLanguage);
static QString systemLanguage(); static QString systemLanguage();
static bool hasVirtualKeyboard(); static bool hasVirtualKeyboard();
//static void showVirtualKeyboard();
static void runInstaller(const QString &installerFilePath);
static void bringPreviousProcessToFront(); static void bringPreviousProcessToFront();
static QString osUserLoginName(); static QString osUserLoginName();
static void setDesktopMode(bool desktop); static void setDesktopMode(bool desktop);

@ -86,13 +86,6 @@ QString UBPlatformUtils::systemLanguage()
return QLocale::system().name(); return QLocale::system().name();
} }
void UBPlatformUtils::runInstaller(const QString &installerFilePath)
{
// TODO UB 4.x - auto update & installer are deactivated on Linux
Q_UNUSED(installerFilePath);
}
void UBPlatformUtils::bringPreviousProcessToFront() void UBPlatformUtils::bringPreviousProcessToFront()
{ {
// Mac only // Mac only

@ -32,13 +32,6 @@
#import <Carbon/Carbon.h> #import <Carbon/Carbon.h>
#import <APELite.h> #import <APELite.h>
/*
// commented because Sankore crashes on Java Script. It seems to backends dependencies.
#import <WebKit/WebKit.h>
#import <AppKit/AppKit.h>
*/
NSString* bundleShortVersion(NSBundle *bundle) NSString* bundleShortVersion(NSBundle *bundle)
{ {
return [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; return [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
@ -237,60 +230,6 @@ QString UBPlatformUtils::systemLanguage()
return result; return result;
} }
void UBPlatformUtils::runInstaller(const QString &installerFilePath)
{
UBApplication::setDisabled(true);
// Save app config file to temp directory (will be restored at launch)
QString appSettings = UBPlatformUtils::applicationResourcesDirectory() + "/etc/Uniboard.config";
QString tmpSettings = QDir::tempPath() + "/Uniboard.config";
QFile::remove(tmpSettings);
QFile::copy(appSettings, tmpSettings);
QString updateFilePath = QDir::tempPath() + "/upgrade.sh";
QFile file(":/macx/upgrade.sh");
QFile updateFile(updateFilePath);
if (file.open(QIODevice::ReadOnly) && updateFile.open(QIODevice::WriteOnly))
{
QByteArray payload = file.readAll();
updateFile.write(payload);
updateFile.close();
QString uniboardAndVersion = QApplication::applicationName() + QString(" ") + QApplication::applicationVersion();
QFileInfo fi(installerFilePath);
uniboardAndVersion = fi.fileName().remove(".dmg");
QString bundlePath;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *nssBundlePath = [[NSBundle mainBundle] bundlePath];
bundlePath = QString::fromUtf8([nssBundlePath fileSystemRepresentation], strlen([nssBundlePath fileSystemRepresentation]));
[pool drain];
QString escaped = QString("/bin/sh \"%1\" \"%2\" \"%3\" \"%4\"")
.arg(updateFilePath)
.arg(uniboardAndVersion)
.arg(installerFilePath)
.arg(bundlePath);
qDebug() << "Installing New Version" << escaped;
QProcess process;
bool success = process.startDetached(escaped);
if(success)
return;
}
// did not work .. lets load the dmg ...
QDesktopServices::openUrl(QUrl::fromLocalFile(installerFilePath));
}
void UBPlatformUtils::bringPreviousProcessToFront() void UBPlatformUtils::bringPreviousProcessToFront()
{ {
ProcessSerialNumber previousProcessPSN = {0, kNoProcess}; ProcessSerialNumber previousProcessPSN = {0, kNoProcess};
@ -580,15 +519,7 @@ void UBPlatformUtils::destroyKeyboardLayouts()
QString UBPlatformUtils::urlFromClipboard() QString UBPlatformUtils::urlFromClipboard()
{ {
QString qsRet; QString qsRet;
/*
// commented because Sankore crashes on Java Script. It seems to backends dependencies.
NSPasteboard* pPasteboard = [NSPasteboard pasteboardWithName:@"Apple CFPasteboard drag"];
WebArchive* pArchive = [[WebArchive alloc] initWithData:[pPasteboard dataForType:@"com.apple.webarchive"]];
qsRet = [[[[pArchive mainResource] URL] absoluteString] UTF8String];
[pArchive release];
*/
return qsRet; return qsRet;
} }

@ -88,22 +88,6 @@ QString UBPlatformUtils::systemLanguage()
return QLocale::system().name(); return QLocale::system().name();
} }
void UBPlatformUtils::runInstaller(const QString &installerFilePath)
{
QProcess process;
QString escaped = QString("\"") + installerFilePath + QString("\" /SILENT");
bool success = process.startDetached(escaped);
if (!success)
{
qWarning() << "Running '" << installerFilePath << "' failed (error=" << process.error() << ")";
QString verb = "runas";
::ShellExecute(NULL, verb.utf16(), installerFilePath.utf16(), NULL, NULL, SW_HIDE);
}
}
void UBPlatformUtils::bringPreviousProcessToFront() void UBPlatformUtils::bringPreviousProcessToFront()
{ {
// Mac only // Mac only

@ -29,159 +29,200 @@
#include "core/memcheck.h" #include "core/memcheck.h"
UBVersion::UBVersion() //UBVersion::UBVersion()
: mIsValid(false) // : mIsValid(false)
, mPlatform(-1) // , mPlatform(-1)
, mMajor(-1) // , mMajor(-1)
, mMinor(-1) // , mMinor(-1)
{ //{
// NOOP // // NOOP
} //}
UBVersion::UBVersion(const QString &string) UBVersion::UBVersion(const QString &string)
{ {
setString(string); mString = string;
}
UBVersion::~UBVersion()
{
// NOOP
}
QString UBVersion::toString() const
{
return isValid() ? mString : "INVALID";
} }
void UBVersion::setString(const QString &string) uint UBVersion::toUInt() const
{ {
mIsValid = true; uint result = 0;
mString = string; QStringList list = mString.split(".");
QStringList versionParts = string.split("."); switch (list.count()) {
int count = versionParts.count(); case 2:
//short version 1.0
if (count < 2) result = (list.at(0).toUInt() * 1000000) + (list.at(1).toUInt() * 10000);
{ break;
mIsValid = false; case 3:
return; //release version 1.0.0
} result = (list.at(0).toUInt() * 1000000) + (list.at(1).toUInt() * 10000) + list.at(2).toUInt();
break;
mPlatform = versionParts.at(0).toInt(&mIsValid); case 4:{
if (!isValid()) return; //standard version 1.0.a/b/r.0
mMajor = versionParts.at(1).toInt(&mIsValid); uint releaseStage = list.at(2).startsWith("a") ? Alpha :(list.at(2).startsWith("b") ? Beta : ReleaseCandidate);
if (!isValid()) return; result = (list.at(0).toUInt() * 1000000) + (list.at(1).toUInt() * 10000) + (releaseStage * 100) + list.at(3).toUInt();
break;
if (count == 2)
{
mMinor = 0;
mReleaseStage = ReleaseCandidate;
} }
else if (count == 3) default:
{ qWarning() << "Unknown version format.";
// Format 4.1.2 (implicitly release) break;
mMinor = versionParts.at(2).toInt(&mIsValid);
if (!isValid()) return;
mReleaseStage = ReleaseCandidate;
} }
else if (count >= 4) return result;
{
// Format 4.1.x.2 (where x = a|b|r|<integer>)
if ("a" == versionParts.at(2))
{
mReleaseStage = Alpha;
}
else if ("b" == versionParts.at(2))
{
mReleaseStage = Beta;
}
else if ("r" == versionParts.at(2))
{
mReleaseStage = ReleaseCandidate;
}
else
{
mMinor = versionParts.at(2).toInt(&mIsValid);
if (!isValid()) return;
mReleaseStage = ReleaseCandidate;
return;
}
QStringList lastParts = versionParts.at(3).split(" ");
mMinor = lastParts.at(0).toInt();
}
}
bool UBVersion::isValid() const
{
return mIsValid;
} }
int UBVersion::platformNumber() const UBVersion::~UBVersion()
{ {
Q_ASSERT(isValid()); // NOOP
return mPlatform;
} }
int UBVersion::majorNumber() const
{
Q_ASSERT(isValid());
return mMajor;
}
ReleaseStage UBVersion::releaseStage() const //QString UBVersion::toString() const
{ //{
Q_ASSERT(isValid()); // return isValid() ? mString : "INVALID";
return mReleaseStage; //}
}
//void UBVersion::setString(const QString &string)
//{
// mIsValid = true;
// mString = string;
// QStringList versionParts = string.split(".");
// int count = versionParts.count();
// if (count < 2)
// {
// mIsValid = false;
// return;
// }
// mPlatform = versionParts.at(0).toInt(&mIsValid);
// if (!isValid()) return;
// mMajor = versionParts.at(1).toInt(&mIsValid);
// if (!isValid()) return;
// if (count == 2)
// {
// mMinor = 0;
// mReleaseStage = ReleaseCandidate;
// }
// else if (count == 3)
// {
// // Format 4.1.2 (implicitly release)
// mMinor = versionParts.at(2).toInt(&mIsValid);
// if (!isValid()) return;
// mReleaseStage = ReleaseCandidate;
// }
// else if (count >= 4)
// {
// // Format 4.1.x.2 (where x = a|b|r|<integer>)
// if ("a" == versionParts.at(2))
// {
// mReleaseStage = Alpha;
// }
// else if ("b" == versionParts.at(2))
// {
// mReleaseStage = Beta;
// }
// else if ("r" == versionParts.at(2))
// {
// mReleaseStage = ReleaseCandidate;
// }
// else
// {
// mMinor = versionParts.at(2).toInt(&mIsValid);
// if (!isValid()) return;
// mReleaseStage = ReleaseCandidate;
// return;
// }
// QStringList lastParts = versionParts.at(3).split(" ");
// mMinor = lastParts.at(0).toInt();
// }
//}
//bool UBVersion::isValid() const
//{
// return mIsValid;
//}
//int UBVersion::platformNumber() const
//{
// Q_ASSERT(isValid());
// return mPlatform;
//}
//int UBVersion::majorNumber() const
//{
// Q_ASSERT(isValid());
// return mMajor;
//}
//ReleaseStage UBVersion::releaseStage() const
//{
// Q_ASSERT(isValid());
// return mReleaseStage;
//}
//int UBVersion::minorNumber() const
//{
// Q_ASSERT(isValid());
// return mMinor;
//}
//bool UBVersion::operator < (const UBVersion &otherVersion) const
//{
// Q_ASSERT(isValid());
// Q_ASSERT(otherVersion.isValid());
// if (platformNumber() != otherVersion.platformNumber())
// return platformNumber() < otherVersion.platformNumber();
// if (majorNumber() != otherVersion.majorNumber())
// return majorNumber() < otherVersion.majorNumber();
// if (releaseStage() != otherVersion.releaseStage())
// return releaseStage() < otherVersion.releaseStage();
// if (minorNumber() != otherVersion.minorNumber())
// return minorNumber() < otherVersion.minorNumber();
// return false;
//}
//bool UBVersion::operator == (const UBVersion &otherVersion) const
//{
// Q_ASSERT(isValid());
// Q_ASSERT(otherVersion.isValid());
// return (platformNumber() == otherVersion.platformNumber() &&
// majorNumber() == otherVersion.majorNumber() &&
// releaseStage() == otherVersion.releaseStage() &&
// minorNumber() == otherVersion.minorNumber());
//}
//bool UBVersion::operator > (const UBVersion &otherVersion) const
//{
// Q_ASSERT(isValid());
// Q_ASSERT(otherVersion.isValid());
// if (platformNumber() != otherVersion.platformNumber())
// return platformNumber() > otherVersion.platformNumber();
// if (majorNumber() != otherVersion.majorNumber())
// return majorNumber() > otherVersion.majorNumber();
// if (releaseStage() != otherVersion.releaseStage())
// return releaseStage() > otherVersion.releaseStage();
// if (minorNumber() != otherVersion.minorNumber())
// return minorNumber() > otherVersion.minorNumber();
// return false;
//}
int UBVersion::minorNumber() const
{
Q_ASSERT(isValid());
return mMinor;
}
bool UBVersion::operator < (const UBVersion &otherVersion) const bool UBVersion::operator < (const UBVersion &otherVersion) const
{ {
Q_ASSERT(isValid()); return toUInt() < otherVersion.toUInt();
Q_ASSERT(otherVersion.isValid());
if (platformNumber() != otherVersion.platformNumber())
return platformNumber() < otherVersion.platformNumber();
if (majorNumber() != otherVersion.majorNumber())
return majorNumber() < otherVersion.majorNumber();
if (releaseStage() != otherVersion.releaseStage())
return releaseStage() < otherVersion.releaseStage();
if (minorNumber() != otherVersion.minorNumber())
return minorNumber() < otherVersion.minorNumber();
return false;
} }
bool UBVersion::operator == (const UBVersion &otherVersion) const bool UBVersion::operator == (const UBVersion &otherVersion) const
{ {
Q_ASSERT(isValid()); return toUInt() == otherVersion.toUInt();
Q_ASSERT(otherVersion.isValid());
return (platformNumber() == otherVersion.platformNumber() &&
majorNumber() == otherVersion.majorNumber() &&
releaseStage() == otherVersion.releaseStage() &&
minorNumber() == otherVersion.minorNumber());
} }
bool UBVersion::operator > (const UBVersion &otherVersion) const bool UBVersion::operator > (const UBVersion &otherVersion) const
{ {
Q_ASSERT(isValid()); return toUInt() > otherVersion.toUInt();
Q_ASSERT(otherVersion.isValid());
if (platformNumber() != otherVersion.platformNumber())
return platformNumber() > otherVersion.platformNumber();
if (majorNumber() != otherVersion.majorNumber())
return majorNumber() > otherVersion.majorNumber();
if (releaseStage() != otherVersion.releaseStage())
return releaseStage() > otherVersion.releaseStage();
if (minorNumber() != otherVersion.minorNumber())
return minorNumber() > otherVersion.minorNumber();
return false;
} }

@ -31,18 +31,20 @@ enum ReleaseStage { Alpha = 10, Beta = 11, ReleaseCandidate = 15 };
class UBVersion class UBVersion
{ {
public: public:
UBVersion(); // UBVersion();
UBVersion(const QString &string); UBVersion(const QString &string);
virtual ~UBVersion(); virtual ~UBVersion();
void setString(const QString &string); uint toUInt() const;
QString toString() const;
bool isValid() const; // void setString(const QString &string);
int platformNumber() const; // QString toString() const;
int majorNumber() const;
ReleaseStage releaseStage() const; // bool isValid() const;
int minorNumber() const; // int platformNumber() const;
// int majorNumber() const;
// ReleaseStage releaseStage() const;
// int minorNumber() const;
bool operator < (const UBVersion &otherVersion) const; bool operator < (const UBVersion &otherVersion) const;
bool operator == (const UBVersion &otherVersion) const; bool operator == (const UBVersion &otherVersion) const;
@ -51,11 +53,11 @@ class UBVersion
private: private:
QString mString; QString mString;
bool mIsValid; // bool mIsValid;
int mPlatform; // int mPlatform;
int mMajor; // int mMajor;
int mMinor; // int mMinor;
ReleaseStage mReleaseStage; // ReleaseStage mReleaseStage;
}; };
#endif // UBVERSION_H_ #endif // UBVERSION_H_

Loading…
Cancel
Save