From 429e6460dc2e9cce2c4fb67f2d5dbfe11da45298 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 16 May 2013 16:47:07 +0200 Subject: [PATCH 01/24] some leaks fixed and cosmetics changes --- src/adaptors/UBCFFSubsetAdaptor.cpp | 8 ++++++-- src/adaptors/UBExportCFF.cpp | 6 +++--- src/adaptors/UBSvgSubsetAdaptor.cpp | 2 +- src/domain/UBGraphicsTextItemDelegate.cpp | 2 +- src/frameworks/UBCryptoUtils.cpp | 24 +++++++++++++++++------ 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/adaptors/UBCFFSubsetAdaptor.cpp b/src/adaptors/UBCFFSubsetAdaptor.cpp index 73a81c5b..56b4890e 100644 --- a/src/adaptors/UBCFFSubsetAdaptor.cpp +++ b/src/adaptors/UBCFFSubsetAdaptor.cpp @@ -1215,13 +1215,17 @@ UBGraphicsGroupContainerItem *UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbGro pStrokesGroup->addToGroup(poly); } } - if (currentStroke->polygons().empty()) + if (currentStroke->polygons().empty()){ delete currentStroke; + currentStroke = NULL; + } if (pStrokesGroup->childItems().count()) mCurrentScene->addItem(pStrokesGroup); - else + else{ delete pStrokesGroup; + pStrokesGroup = NULL; + } if (pStrokesGroup) { diff --git a/src/adaptors/UBExportCFF.cpp b/src/adaptors/UBExportCFF.cpp index 3d3b94c9..ee78796c 100644 --- a/src/adaptors/UBExportCFF.cpp +++ b/src/adaptors/UBExportCFF.cpp @@ -51,10 +51,10 @@ QString UBExportCFF::exportExtention() void UBExportCFF::persist(UBDocumentProxy* pDocument) { - QString src = pDocument->persistencePath(); - if (!pDocument) return; + + QString src = pDocument->persistencePath(); QString filename = askForFileName(pDocument, tr("Export as IWB File")); @@ -82,4 +82,4 @@ void UBExportCFF::persist(UBDocumentProxy* pDocument) } -} \ No newline at end of file +} diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 546c6ed0..9af8626b 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -1553,7 +1553,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo QPolygonF polygon = polygonItem->polygon(); int pointsCount = polygon.size(); - if (polygonItem && pointsCount > 0) + if (pointsCount > 0) { mXmlWriter.writeStartElement("polygon"); diff --git a/src/domain/UBGraphicsTextItemDelegate.cpp b/src/domain/UBGraphicsTextItemDelegate.cpp index 17b4dd28..b1d6545e 100644 --- a/src/domain/UBGraphicsTextItemDelegate.cpp +++ b/src/domain/UBGraphicsTextItemDelegate.cpp @@ -132,7 +132,7 @@ void UBGraphicsTextItemDelegate::customize(QFontDialog &fontDialog) fontDialog.setStyleSheet("background-color: white;"); } - QListView *fontNameListView; + QListView *fontNameListView = NULL; QList listViews = fontDialog.findChildren(); if (listViews.count() > 0) { diff --git a/src/frameworks/UBCryptoUtils.cpp b/src/frameworks/UBCryptoUtils.cpp index b5df8ccd..ea6b46f2 100644 --- a/src/frameworks/UBCryptoUtils.cpp +++ b/src/frameworks/UBCryptoUtils.cpp @@ -68,15 +68,21 @@ QString UBCryptoUtils::symetricEncrypt(const QString& clear) int paddingLength = 0; unsigned char *ciphertext = (unsigned char *)malloc(cipheredLength); - if(!EVP_EncryptInit_ex(&mAesEncryptContext, NULL, NULL, NULL, NULL)) + if(!EVP_EncryptInit_ex(&mAesEncryptContext, NULL, NULL, NULL, NULL)){ + free(ciphertext); return QString(); + } - if(!EVP_EncryptUpdate(&mAesEncryptContext, ciphertext, &cipheredLength, (unsigned char *)clearData.data(), clearData.length())) + if(!EVP_EncryptUpdate(&mAesEncryptContext, ciphertext, &cipheredLength, (unsigned char *)clearData.data(), clearData.length())){ + free(ciphertext); return QString(); + } /* update ciphertext with the final remaining bytes */ - if(!EVP_EncryptFinal_ex(&mAesEncryptContext, ciphertext + cipheredLength, &paddingLength)) + if(!EVP_EncryptFinal_ex(&mAesEncryptContext, ciphertext + cipheredLength, &paddingLength)){ + free(ciphertext); return QString(); + } QByteArray cipheredData((const char *)ciphertext, cipheredLength + paddingLength); @@ -94,14 +100,20 @@ QString UBCryptoUtils::symetricDecrypt(const QString& encrypted) int paddingLength = 0; unsigned char *plaintext = (unsigned char *)malloc(encryptedLength); - if(!EVP_DecryptInit_ex(&mAesDecryptContext, NULL, NULL, NULL, NULL)) + if(!EVP_DecryptInit_ex(&mAesDecryptContext, NULL, NULL, NULL, NULL)){ + free(plaintext); return QString(); + } - if(!EVP_DecryptUpdate(&mAesDecryptContext, plaintext, &encryptedLength, (const unsigned char *)encryptedData.data(), encryptedData.length())) + if(!EVP_DecryptUpdate(&mAesDecryptContext, plaintext, &encryptedLength, (const unsigned char *)encryptedData.data(), encryptedData.length())){ + free(plaintext); return QString(); + } - if(!EVP_DecryptFinal_ex(&mAesDecryptContext, plaintext + encryptedLength, &paddingLength)) + if(!EVP_DecryptFinal_ex(&mAesDecryptContext, plaintext + encryptedLength, &paddingLength)){ + free(plaintext); return QString(); + } int len = encryptedLength + paddingLength; QByteArray clearData((const char *)plaintext, len); From 1b17380a721fddcd4e060bbfb27523e8525b34aa Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 17 May 2013 09:52:41 +0200 Subject: [PATCH 02/24] changed the LICENSE name --- LICENSE.txt => LICENSE | 0 Open-Sankore.packproj | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename LICENSE.txt => LICENSE (100%) diff --git a/LICENSE.txt b/LICENSE similarity index 100% rename from LICENSE.txt rename to LICENSE diff --git a/Open-Sankore.packproj b/Open-Sankore.packproj index f443040f..a0933772 100644 --- a/Open-Sankore.packproj +++ b/Open-Sankore.packproj @@ -28,7 +28,7 @@ Mode 1 Path - LICENSE.txt + LICENSE Path Type 2 From 908297ef08dd39c82f2d4faeefbe8c14536da1c1 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 24 May 2013 11:31:25 +0200 Subject: [PATCH 03/24] removed teacher guide --- Sankore_3.1.pro | 1 - .../teacherGuide/indexingParameters.xml | 218 --- resources/images/duration1.png | Bin 795 -> 0 bytes resources/images/duration2.png | Bin 909 -> 0 bytes resources/images/duration3.png | Bin 1140 -> 0 bytes resources/images/licenses/ccby.png | Bin 4739 -> 0 bytes resources/images/licenses/ccbync.png | Bin 5145 -> 0 bytes resources/images/licenses/ccbyncnd.png | Bin 5281 -> 0 bytes resources/images/licenses/ccbyncsa.png | Bin 5460 -> 0 bytes resources/images/licenses/ccbynd.png | Bin 4880 -> 0 bytes resources/images/licenses/ccbysa.png | Bin 5083 -> 0 bytes resources/images/teacherGuide/audio_24x24.svg | 91 -- resources/images/teacherGuide/flash_24x24.svg | 33 - resources/images/teacherGuide/image_24x24.svg | 81 -- resources/images/teacherGuide/link_24x24.svg | 168 --- resources/images/teacherGuide/movie_24x24.svg | 40 - resources/images/teacherGuide/pencil.svg | 61 - resources/images/teacherGuide/w3c_24x24.svg | 112 -- resources/images/teacher_close.png | Bin 1043 -> 0 bytes resources/images/teacher_close_disabled.png | Bin 1043 -> 0 bytes resources/images/teacher_open.png | Bin 1034 -> 0 bytes resources/images/teacher_open_disabled.png | Bin 1030 -> 0 bytes resources/images/toque.svg | 131 -- resources/sankore.qrc | 21 - src/adaptors/UBImportDocument.cpp | 6 +- src/adaptors/UBMetadataDcSubsetAdaptor.cpp | 50 - src/adaptors/UBSvgSubsetAdaptor.cpp | 92 +- src/adaptors/UBSvgSubsetAdaptor.h | 9 - src/adaptors/UBThumbnailAdaptor.cpp | 24 +- src/adaptors/UBThumbnailAdaptor.h | 1 - src/board/UBBoardController.cpp | 13 +- src/board/UBBoardPaletteManager.cpp | 9 - src/board/UBBoardPaletteManager.h | 4 - src/board/UBBoardView.cpp | 8 +- src/board/UBBoardView.h | 1 - src/core/UBApplicationController.cpp | 4 +- src/core/UBPersistenceManager.cpp | 104 +- src/core/UBPersistenceManager.h | 4 - src/core/UBSettings.cpp | 10 - src/core/UBSettings.h | 11 - src/document/UBDocumentContainer.cpp | 4 - src/document/UBDocumentController.cpp | 10 +- src/document/UBDocumentProxy.cpp | 10 - src/domain/UBGraphicsScene.cpp | 50 - src/domain/UBGraphicsScene.h | 1 - src/gui/UBDockTeacherGuideWidget.cpp | 59 - src/gui/UBDockTeacherGuideWidget.h | 49 - src/gui/UBDocumentNavigator.cpp | 7 +- src/gui/UBTeacherGuideWidget.cpp | 1291 ----------------- src/gui/UBTeacherGuideWidget.h | 252 ---- src/gui/UBTeacherGuideWidgetsTools.cpp | 724 --------- src/gui/UBTeacherGuideWidgetsTools.h | 220 --- src/gui/gui.pri | 6 - src/interfaces/IDataStorage.h | 50 - src/interfaces/interfaces.pri | 2 - 55 files changed, 22 insertions(+), 4020 deletions(-) delete mode 100644 resources/customizations/teacherGuide/indexingParameters.xml delete mode 100644 resources/images/duration1.png delete mode 100644 resources/images/duration2.png delete mode 100644 resources/images/duration3.png delete mode 100644 resources/images/licenses/ccby.png delete mode 100644 resources/images/licenses/ccbync.png delete mode 100644 resources/images/licenses/ccbyncnd.png delete mode 100644 resources/images/licenses/ccbyncsa.png delete mode 100644 resources/images/licenses/ccbynd.png delete mode 100644 resources/images/licenses/ccbysa.png delete mode 100644 resources/images/teacherGuide/audio_24x24.svg delete mode 100644 resources/images/teacherGuide/flash_24x24.svg delete mode 100644 resources/images/teacherGuide/image_24x24.svg delete mode 100644 resources/images/teacherGuide/link_24x24.svg delete mode 100644 resources/images/teacherGuide/movie_24x24.svg delete mode 100644 resources/images/teacherGuide/pencil.svg delete mode 100644 resources/images/teacherGuide/w3c_24x24.svg delete mode 100644 resources/images/teacher_close.png delete mode 100644 resources/images/teacher_close_disabled.png delete mode 100644 resources/images/teacher_open.png delete mode 100644 resources/images/teacher_open_disabled.png delete mode 100644 resources/images/toque.svg delete mode 100644 src/gui/UBDockTeacherGuideWidget.cpp delete mode 100644 src/gui/UBDockTeacherGuideWidget.h delete mode 100644 src/gui/UBTeacherGuideWidget.cpp delete mode 100644 src/gui/UBTeacherGuideWidget.h delete mode 100644 src/gui/UBTeacherGuideWidgetsTools.cpp delete mode 100644 src/gui/UBTeacherGuideWidgetsTools.h delete mode 100644 src/interfaces/IDataStorage.h delete mode 100644 src/interfaces/interfaces.pri diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index 49dfb0de..772f2e4c 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -49,7 +49,6 @@ include(src/podcast/podcast.pri) include(src/tools/tools.pri) include(src/desktop/desktop.pri) include(src/web/web.pri) -include(src/interfaces/interfaces.pri) include(src/customWidgets/customWidgets.pri) DEPENDPATH += src/pdf-merger diff --git a/resources/customizations/teacherGuide/indexingParameters.xml b/resources/customizations/teacherGuide/indexingParameters.xml deleted file mode 100644 index 2a194515..00000000 --- a/resources/customizations/teacherGuide/indexingParameters.xml +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/duration1.png b/resources/images/duration1.png deleted file mode 100644 index 5f1f83557afb6952748ea72cc2aad8364c6e5d55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 795 zcmV+$1LXXPP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iySz z4gm&y8%fjv000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0007ZNklMyqM!teAX(5tn}oHpFk>|`3^U0*?l^NFrwW8{Io~<=ze(l-FfL^G0^;UR zQR}_J){?K+mGAM_(o8z#ON)=*jF|9d#OtCr@p63h_CIj|a+%fwpry9wSUivt|M*|B z`x7I#|6C0~uW=&)iqASaAl1t6*KA+{Sz zd`w!|8ptX0H~>f*J3knj>Al%7^I5?u^EkE8+_gS@TDxL<18^J1)c{GIsn|*V)klw! zqf;O?bv6A8L|ft!&)M8^*pC$e3Fajo`#TygnmmW|OW|VMW&jBguIdZ+umB(_edTu0 zGZ+OL%}d&g8n#W*R^$fZA07 z&|ZJ}FqHpLVy*!I0B=R8k!b)KFREi5K!|AoX&)+Q8o-m+7hoE|ePN`8X#h-r5#j(8 z@;JHp`_ZdoYa`wO4uAvT05|}}<8fC06F>uth&O-(P}u@3Yy)}yc>_S>ju5RaP^Qlt z06A`n(bfXB^mzjy&pkm}TA-DFUH~*e$Yov^0Foi(GtXxL7`Q7;S_|}~ZwLTM5cHZi z48ZLmj2O2Bz>N^hn70JLO%TkQw+z5(5LS$11@PS diff --git a/resources/images/duration2.png b/resources/images/duration2.png deleted file mode 100644 index 37dcb1cacca0c1b080717f93e5119839e10852ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmV;819JR{P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iySz z4h9EAUGIee000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0008$NklQnpIUj-{?_-MwA>MI3-mrrQB% zCx4aW9fGo97vs!#U$vzs&H?;kz&9O+vPAOS+b zJN6C>0Fp+(c{=DRj4X}jRlPnHT#Y8DZzcW_k{60uVx|Ni_j909#Et01dz@DP`yYc0dEL)RnFO05I2|Fc8f9 zs~oTWd=4%F4nf%fy$`U9a;hx=+NVLN!eyHqsz4>cS&|i0Fab|Suwjkvw3($Z@;ka1dsqBC~!F+e|X{Et)i&g zmzf9Q`jn2dTYPyh6W256vDAQJOG6}|4x2G=Isv$nK=hFr93Y54G}S8zYL3mB1wq}x jNuw}^;pps0BLUYR6#`p(YMH7l00000NkvXXu0mjfJIsLZ diff --git a/resources/images/duration3.png b/resources/images/duration3.png deleted file mode 100644 index 9c61f7f8d1f509bc18fa4d3e24cb3b32a9c1702e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmV-)1dIELP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iySz z4hAL&H2>QG000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000BeNklc35vauMBiD^3r7+J zrXWT7A~cP8rip)o;WQ-2++s1LhAdEUzG!FC3!&|Lb>p13b(?3~-Q)Mw!JcD$KEK~R z_xAw+@*t=E2h{5aRJ7mHt1`pe1&6l1Y%<`J1*k2Iq&yf&Iiv^F>cbA#FTn|j1szR5 zv{dg9HieIxk^4iF-EFQPDJ_62csv4_F?oq;r8hMExXC$}QUc-yPgDT2E7b0gnGX?2 zGQdwNfKKBkF|P6idrop_AjyK~LjavltEHu{!TBnYebHpW^ORz@k77w0!2k;Hf zR|n8B`iKRcJy;*lsS_1y)!8zoz$oN4GYL713p*;Fj>O_WC3am76DAw zumFstJg^90vN8oYAQIp>CO~>Xt->OJ$$I4Vc-@9}c{U5ziy6Lphp<_S9c8T70SX^A zBlhY?G9D2i_lG9ME+CTe*cT#qK52TR-cWH^&25E zPKJ?_U(A~!wL4@MTlJ$cMg2;wX<0iqmWMZp0lsmQ7#}TjG{$v1tnvhV#8UlOERtwH zeEhJx-*uJTUb~!MD`faitEJ`9J(o3Z0RRB7`fk_RT)r=NUCP%95&rI%siEfv=aX1t zIDIL4`?Gd_N`Y4h3Et=<7T#WWRQ_umr$=Hsd$7LJKfNv#_)7ouy3QV~=Q38pWzgc> z?qN$o=FGW^-}T-Ld0D9rU%K+AwyVSSlQ#hX0I)Q-`}_Wt%!!Qi--w8y(&LXX9V%QxCPt(KNlI@KitpKu4zF%M~SJSs_F zvaT4Dx@3l#-qE5ew;JvKUpG)GvuKJ8i3?2ojuE0AkSZ5%dLYkLjZ070000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}000M`NklPwhp z$zv?7d)cz4B!caw>mol5s4+tCD5yi>PzR3VX4|&i zqhrIi9XO87>Ky8@_LNfpW?1=2NI!o0CjbBffckKGo_90HcgsBQ)^WTCnSc;3$k&78 zfpuJ%w(aF$*$zW?9EX7of_{=93jo4!c>zM`=;oVqw@|56P^;Cjwz?L&&|qW`r%s(h z>U$}?boNKE9UdHKxi7@#KtQ~A85lkebw>icF+}zU?)`;2v=1~i8jaBTL?QwCoQ&fq zkM$KY0YLwD=dTb1fk71n!OgsYsy>h6l_Hjxmv?l*Xf%qkx5h9$d>WQ*!?rD0mX~b{ zmSr=AZ>HqEs`$VE`4rd7*U@Y=0RYKl5|ShV01U%`uIm7Rcp{F`%qYJ3t>^oqU;=>t zv-%GRywC+J3}8SIke`@@Hmk7?q9{U^WyE4J3=a!RWLZY3R6;Bk3$H^NCcOQmk%5=1AOPhI~ef64hR?!210N}QA9SIMJAJhD2iKNP*qjraybS%o`~a5 z@BID~ZOym)1-ai-fO8;LgIxNHu|BPj)qdH6zY56fL#TWU@yDBO@bhgp7=ggz93k z7?R0kkEd~P3iclU=G-mjEo8GQ52a{mY0`t^TsW(nDi!La>pFB@M<$bjq9{FeOG`^^HkV}?s;Z(^tGO${ z09c?4x9gSf{viy**mN@Um77kdchu(q73@B!zd}2D^eAhP%jKBeYPDKy(mQ|tJX5kH zNociNn4O&s`N#lRd2MyAYYy1a=elpI%)cIbT2T?>|dpIFy*Boc}KD0t)K z60}eLn@*?Gh{a+Iv_FyfD)sARS?-xoy6zYI*tZ9e&&g;^HIU2YFgrWDqdvZ9AruOQ zuCMDYlY@1^;n?*{*~h*<#IN5TLnIP`s;W>Fh5csG4{o>HP!t8z)6Rt}>ipziYcMhhN(0MbQ26iE`?lwYcrNlB z%Gamy+jol4G!2@jL6Rg$k_1r{q3b#mO+SM@Y~H?m?=B78Tq9~%%>4ZFk za=FZ649R2?`Fx(Kw_Gl>w!u087#bQvyWPf%-+vL;N>}l}^>vu$I!w!iXM&Vav&EHv33F;0IO!VCtPI{P4^Vux_qn z-85mDCQNGs;717fJgxzE4glNINv4JojYa_gg+ign_1R5YSy^GTbu=3F0`Y!m(t+dI zV&7amsfhyshdQurcOUK2<%^$cG5=__m(La$VDWA4Vb+xBPWvq&a~*ruwIpO%(iPD)*rQ!s927 zVIqG4-~LWCup1E!HzMS>`u}*c{K+Ty-PIE2tMmOGiUEj^gK5}t1orgsX`FfK3{HIa z1ilf8gk!j#YxUXcD()@b!|j{5`wsRitKg?;9{^KIpCyER@f5{@j41N|0RT*Tpbn^k RjS2t&002ovPDHLkV1k=~?l=Gd diff --git a/resources/images/licenses/ccbync.png b/resources/images/licenses/ccbync.png deleted file mode 100644 index 5f982147075ad08691e3b3c53e92633ca0ddcb2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5145 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 z 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 diff --git a/resources/images/licenses/ccbyncsa.png b/resources/images/licenses/ccbyncsa.png deleted file mode 100644 index 0f2a0f10722d3fabffe8af5d5eed09866e25909a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5460 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 diff --git a/resources/images/teacherGuide/audio_24x24.svg b/resources/images/teacherGuide/audio_24x24.svg deleted file mode 100644 index fc5c2294..00000000 --- a/resources/images/teacherGuide/audio_24x24.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/teacherGuide/flash_24x24.svg b/resources/images/teacherGuide/flash_24x24.svg deleted file mode 100644 index 03c15458..00000000 --- a/resources/images/teacherGuide/flash_24x24.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/teacherGuide/image_24x24.svg b/resources/images/teacherGuide/image_24x24.svg deleted file mode 100644 index 5b197269..00000000 --- a/resources/images/teacherGuide/image_24x24.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/teacherGuide/link_24x24.svg b/resources/images/teacherGuide/link_24x24.svg deleted file mode 100644 index a2c47cd9..00000000 --- a/resources/images/teacherGuide/link_24x24.svg +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/teacherGuide/movie_24x24.svg b/resources/images/teacherGuide/movie_24x24.svg deleted file mode 100644 index d22e4470..00000000 --- a/resources/images/teacherGuide/movie_24x24.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/teacherGuide/pencil.svg b/resources/images/teacherGuide/pencil.svg deleted file mode 100644 index e7e6a2ce..00000000 --- a/resources/images/teacherGuide/pencil.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/teacherGuide/w3c_24x24.svg b/resources/images/teacherGuide/w3c_24x24.svg deleted file mode 100644 index 07a37ac0..00000000 --- a/resources/images/teacherGuide/w3c_24x24.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/teacher_close.png b/resources/images/teacher_close.png deleted file mode 100644 index bee2ea0d948eb65c3d538ec6f28c3c00ea3f82d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm2XP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipo0 z4G$4n!3pvJ00WarL_t(Y$F-MBPa9Vh$A9hJ!cxG-FCXTFPFovG((fsxMpL@A8+5Pc0!~kTqT6y4ky*X|vq-E8< zzbN52&SZk4tk!BZwzi&NS=RLgMerKDUg6NyCF-u`85T6tMA z5{XbQm&xUFW7EoUY~*se0qybe$)yLT$E{5&m11*qliAtNX*3!bVDS0Uu6I+1q=;`*-hgyEalvv{oo3ab1^#g9DC_ zKQJ>h!{Xu+>2z|4QUe6Q{@cHK{(O(a!$Vx#Mr(=I8jvUnxpY9i)Bmv7^Ef*ChqJRf z`Fx&I>E3`?1MEI~!S2p3t;QKb2$WL&q=MDCfSD}x0>SII!}fgN=j5b+onRp63&dhCdN5EtDwUo1s#v z^5#v2a`p%D!QE26SQ7_B2r2c3WbTq;zXlS!r?GlhsF?$E0U2W*<_fz=?q=h#rOU5 ze$*(XkWyldL5D+E&vLOK$)+W_q>GdRLI{KqgE|>waC;t+NR(o+I8?t23De;kQbH-; zWnsR+q1DE*+ZY2a3rO6j2ok}(&rgUiIURs=!NKa@gY`nyj(=p)4SD23?HG#G>cxwyFW z`$hdU@d}8=Vuz0&ZG541=r_Q-sh~Ljtq`_te^aei@|IQm;U*9Ge*r+ni?u^g;tv1- N002ovPDHLkV1iXi@X`PP diff --git a/resources/images/teacher_close_disabled.png b/resources/images/teacher_close_disabled.png deleted file mode 100644 index 8f3c988c8e240c89fd40ad271e04765365931c10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm2XP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipo0 z4H6vK92rvp00WarL_t(Y$F-JAPa9VlhM#ls%-HynVsmR^2LlQuQPoxoS<|S?N_4}o zBmba(p)0zBh+Nbx8hNUOgwk=KU}Jm68jAFqeMY@0>^PcRfb{7-N+0`&rkm zjd@=Erzq-iT@%Kb?D26kv$?tT^G!fsO!~fWZ*Fe=cpESP>AJOI6!o&)l1b02ubk%y zg5Y|Eb8yhzVN-3#UtJt>9#>Q_WtCbfyZQG_= ztx_tLMpi3F38Pdh4b<-MA6!^4J!)?9`8=zutK7Z&HO*!dW6bq{LI@TYAMoVKGQD0% zqtUqV{Dr`DI?c0ZKakJo2?BqlNQMFng#v49YxsVLUT^fV916^2GIToat4|8IYy*Yo z6-|iIL0|6c>jEwf`8HtxZw`l9CkUw3{v--R9z0keo6QaxfPNl_0vpF|-n{vpo%inv z0w1L$uIo~%RCxGsk$gUXxxyq#_4ZZ?6AN8nVFdx z=I0kE6mn-&YJdcI|KTrQzT9SacbCxj(OROl1|&*CsgTg<^e^^$5qo=ob9B^Ta&nSN z<=#NC2H1M>imlBpTFoPb5GbYkP6bQ%6K0CgO9XE}oDDCIV-61b>uh}dE9T~^ePD5X zoQa7df`qW!Ma!6P76cP_`s)AqC^>9tbP6nWb`ynRNEF35j&-VVVXi{?-VC*x%e!|q zs>MCDjCt)Enr(s7f>i3iucDApDc@&ywlb*xpeVML;_;&;ob(v7amb6eEsp&ZIwj92 z>UO(yIvt`YCY#Ok=+P2V%HfTjBoU6S2*ZG8^OztA0YMzcv|24%trkgQ$mMcmGS20V zowwV3TMjvDWNE!VRiu<8m9j{uGdPZeWm#yQ8UdJ5XT)YpBF<@en*kEbR@^_1TuP2G3s2}1<$XD1l0=K<_ z%gVqb0n4&3-PTH}ey)|$XFf>Aoc|nL1k+lPBuQVu^z_uPr#%=W#MQR95dE13gAgF+ z=NJAtub-~{1fKiOnAGI3H};rsrK>((64tKaAY|1a&vh8YRAXy^a{ N002ovPDHLkV1g&Y>iPfx diff --git a/resources/images/teacher_open.png b/resources/images/teacher_open.png deleted file mode 100644 index 17469cc79ec9e6aa7f694d92459b597e2e45ecd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1034 zcmV+l1oiugP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipo0 z4G=Y`nB%}=nc6>_{$8t%i1PFmhg;cSobVWD( z1p1?jSi`pLks3C*u&4?Pgq_4~Q^!t8Y{&78?U^|&9Ovd#PU7%MXESHcqxZX>8DWeO zK)|-`#Y&|-U#~ZQaoqt|H4QB6@3%9h(zD;D0gX)BwjD2(p8a$kFaTMpls|FZL7ry-?YBo_D0SP$*0fJgFAIb=|AGeCb|3PQvss zV@?2tm>wv^|LO8|*~BalT$e^;2ha7$WKvhJL#Nm0<;&M>ZfvlqD5X&nk~e)?UGROMot?L|T5TGQw`8*!lF7u8Vhymd`HHo*U#V@q zMhJmY3Q%YTALM8ZOcB_S!9v|Hn%*}ug z{QXL@*U@MT0_tSl2|UlE+qLQU`^O6BlC#{q_XR5}?^CI45cOZ6rN{G%p?x4wT5xt) zJB~vl8E0`JPa-i(Fc>_Y6s;85Od72%I$ITf|Fg}$ZJ{lBN>Q)ZqucG`x*o-1k!&`N zIMHTfh3)wsp@5{{cWAfwahyIdbgk3r(CKvWeM2l3Lu);`4#V1Ex!9xGiqd(0tVk(| zWd#U_BZNXB0)fC`@+JX;7O|j1A|{x*8K>9p<9QxZ%EK~JNGUPKV4c%7V=m9$kj&iB zBx3`#9>z@wft2#7TnxjmNu^V#;&-mXh;E|gfNVO-XPPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipo0 z4HFF9usC)A00V|eL_t(Y$F-I_a~o9{hM#j;-6AEnB}-a4iLFtvNdW~6&M=dLf`SkV z$e$oTD)|MJp`?nb6q*cBFlcQnH(9c=C0W+4q}@Ff@?AEvE%VKsX3sg#yx;Y#05HZV z*L9PQQ@K&EH@@@z0arC)j7je9wiD&@tM4ZP9hh`oH(D;g`uaLx0Mc&>}9DJ9$6+ZR%G;@){1(P)&XPk-dmqi={rB9jA+F*KV^78jRz z^5h3>+nx+~V6NN67{lYo-}2zW@>sPODw`k(4%HTm#mRxk)dKjwe|48H-OEQwm>g!z zF`y8W1BLiMUA`_Go8^J;(`alG_yPHR_Ud)$_4>Sd^N#hkH8wVC2qBo8E3mMzK%rn0 zi^awRjWKlgx~#6Qv%0#*M(xA!kXBfhMXk2M&Q6nBt;X%!bL4V)VzKBb&;Z*zEh?1? ze^(spA8IHi&|0IEMoGxr3TbsA3_~_Iw`jH6G#XpjcAiWoeW+LitgXLgW#w0D@82PW zKq&<%w1SW4L+msRLcyQa(c$5`?*8zdC6mbvfvIGY`MY=U2YuSD7Fq^;a!)Wj1tIX) zTggsGqb-Q2<8>zpf`D$P6;dZ-8=K7)6+zw(UVEhN@3@7Xl>DX@9^6nZFXG?ZOIdgdc7XqZWrGVD3wasb`Ei@ z%|;442m@jfNx$#WZtvoGePHNXr_-U+=@5p7R4RqmdVC$mwZ~$qN3)fr^ZH1UQWDFG z5RWH_#bQJvk^SV214b=UQIB*=Fm-E&UcXNe1V}0O%Sa)m#2ABhM%RqEJbhC#byJf` z4bXZRHz5R4%ENLo47(+%E^4VHh9;BWv8)4}t(N!zZ9ry0@*hb$w4jJRa{Z zFMsiq*47roSuoi{wVz$#x~}awl~}#rnCJ)oU#csMpJ+*`8~^|S07*qoM6N<$f?F)w A_y7O^ diff --git a/resources/images/toque.svg b/resources/images/toque.svg deleted file mode 100644 index 146cddc5..00000000 --- a/resources/images/toque.svg +++ /dev/null @@ -1,131 +0,0 @@ - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/sankore.qrc b/resources/sankore.qrc index b98a501b..c2e99561 100644 --- a/resources/sankore.qrc +++ b/resources/sankore.qrc @@ -339,32 +339,11 @@ images/closeDisabled.svg images/menuDisabled.svg images/moveUpDisabled.svg - images/teacher_close.png - images/teacher_open.png - images/teacher_close_disabled.png style.qss - images/teacher_open_disabled.png images/libpalette/WebSearchCategory.svg images/download_close.png images/download_open.png images/tab_mask.png - images/duration1.png - images/duration2.png - images/duration3.png - images/licenses/ccby.png - images/licenses/ccbync.png - images/licenses/ccbyncnd.png - images/licenses/ccbyncsa.png - images/licenses/ccbynd.png - images/licenses/ccbysa.png - images/teacherGuide/audio_24x24.svg - images/teacherGuide/image_24x24.svg - images/teacherGuide/link_24x24.svg - images/teacherGuide/movie_24x24.svg - images/teacherGuide/w3c_24x24.svg - images/teacherGuide/pencil.svg images/duplicateDisabled.svg - images/teacherGuide/flash_24x24.svg - images/toque.svg diff --git a/src/adaptors/UBImportDocument.cpp b/src/adaptors/UBImportDocument.cpp index f155385d..db88e77c 100644 --- a/src/adaptors/UBImportDocument.cpp +++ b/src/adaptors/UBImportDocument.cpp @@ -179,11 +179,7 @@ UBDocumentProxy* UBImportDocument::importFile(const QFile& pFile, const QString& return NULL; } - bool addTitlePage = false; - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() && !QFile(documentRootFolder+"/page000.svg").exists()) - addTitlePage=true; - - UBDocumentProxy* newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(documentRootFolder, pGroup, "", false, addTitlePage); + UBDocumentProxy* newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(documentRootFolder, pGroup, "", false, false); UBApplication::showMessage(tr("Import successful.")); return newDocument; } diff --git a/src/adaptors/UBMetadataDcSubsetAdaptor.cpp b/src/adaptors/UBMetadataDcSubsetAdaptor.cpp index 676bbca8..8f59fb26 100644 --- a/src/adaptors/UBMetadataDcSubsetAdaptor.cpp +++ b/src/adaptors/UBMetadataDcSubsetAdaptor.cpp @@ -117,15 +117,6 @@ void UBMetadataDcSubsetAdaptor::persist(UBDocumentProxy* proxy) // introduced in UB 4.4 xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri, "updated-at", UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTimeUtc())); - // introduced in OpenSankore 1.40.00 - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionTitle,proxy->metaData(UBSettings::sessionTitle).toString()); - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionAuthors,proxy->metaData(UBSettings::sessionAuthors).toString()); - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionObjectives,proxy->metaData(UBSettings::sessionObjectives).toString()); - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionKeywords,proxy->metaData(UBSettings::sessionKeywords).toString()); - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionGradeLevel,proxy->metaData(UBSettings::sessionGradeLevel).toString()); - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionSubjects,proxy->metaData(UBSettings::sessionSubjects).toString()); - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionType,proxy->metaData(UBSettings::sessionType).toString()); - xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri,UBSettings::sessionLicence,proxy->metaData(UBSettings::sessionLicence).toString()); xmlWriter.writeEndElement(); //dc:Description xmlWriter.writeEndElement(); //RDF @@ -226,47 +217,6 @@ QMap UBMetadataDcSubsetAdaptor::load(QString pPath) metadata.insert(UBSettings::documentUpdatedAt, xml.readElementText()); updatedAtFound = true; } - else if (xml.name() == UBSettings::sessionTitle // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionTitle, xml.readElementText()); - } - else if (xml.name() == UBSettings::sessionAuthors // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionAuthors, xml.readElementText()); - } - else if (xml.name() == UBSettings::sessionObjectives // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionObjectives, xml.readElementText()); - } - else if (xml.name() == UBSettings::sessionKeywords // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionKeywords, xml.readElementText()); - } - else if (xml.name() == UBSettings::sessionGradeLevel // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionGradeLevel, xml.readElementText()); - } - else if (xml.name() == UBSettings::sessionSubjects // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionSubjects, xml.readElementText()); - } - else if (xml.name() == UBSettings::sessionType // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionType, xml.readElementText()); - } - else if (xml.name() == UBSettings::sessionLicence // introduced in OpenSankore 1.40.00 - && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) - { - metadata.insert(UBSettings::sessionLicence, xml.readElementText()); - } - metadata.insert(UBSettings::documentVersion, docVersion); } diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 9af8626b..d2f9afac 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -63,11 +63,6 @@ #include "core/UBPersistenceManager.h" #include "core/UBApplication.h" -#include "gui/UBTeacherGuideWidget.h" -#include "gui/UBDockTeacherGuideWidget.h" - -#include "interfaces/IDataStorage.h" - #include "document/UBDocumentContainer.h" #include "pdf/PDFRenderer.h" @@ -92,8 +87,6 @@ const QString tStrokeGroup = "strokeGroup"; const QString tGroups = "groups"; const QString aId = "id"; -QMap UBSvgSubsetAdaptor::additionalElementToStore; - QString UBSvgSubsetAdaptor::toSvgTransform(const QMatrix& matrix) { return QString("matrix(%1, %2, %3, %4, %5, %6)") @@ -228,17 +221,6 @@ void UBSvgSubsetAdaptor::setSceneUuid(UBDocumentProxy* proxy, const int pageInde } } -bool UBSvgSubsetAdaptor::addElementToBeStored(QString domName, IDataStorage *dataStorageClass) -{ - if(domName.isEmpty() || additionalElementToStore.contains(domName)){ - qWarning() << "Error adding the element that should persist"; - return false; - } - - additionalElementToStore.insert(domName,dataStorageClass); - return true; -} - QString UBSvgSubsetAdaptor::uniboardDocumentNamespaceUriFromVersion(int mFileVersion) { return mFileVersion >= 40200 ? UBSettings::uniboardDocumentNamespaceUri : sFormerUniboardDocumentNamespaceUri; @@ -323,54 +305,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::loadScene(UBDocumentProxy* proxy, const QBy return reader.loadScene(); } - -QString UBSvgSubsetAdaptor::readTeacherGuideNode(int sceneIndex) -{ - QString result; - - QString fileName = UBApplication::boardController->selectedDocument()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", sceneIndex); - QFile file(fileName); - file.open(QIODevice::ReadOnly); - QByteArray fileByteArray=file.readAll(); - file.close(); - QXmlStreamReader mXmlReader(fileByteArray); - - while (!mXmlReader.atEnd()) - { - mXmlReader.readNext(); - if (mXmlReader.isStartElement()) - { - if (mXmlReader.name() == "teacherBar" || mXmlReader.name() == "teacherGuide"){ - result.clear(); - result += ""; - result += "\n"; - } - else if (mXmlReader.name() == "media" || mXmlReader.name() == "link" || mXmlReader.name() == "title" || mXmlReader.name() == "comment" || mXmlReader.name() == "action") - { - result += "<" + mXmlReader.name().toString() + " "; - foreach(QXmlStreamAttribute attribute, mXmlReader.attributes()) - result += attribute.name().toString() + "=\"" + attribute.value().toString() + "\" "; - result += " />\n"; - } - else - { - // NOOP - } - } - else if (mXmlReader.isEndElement() && (mXmlReader.name() == "teacherBar" || mXmlReader.name() == "teacherGuide")){ - result += ""; - } - } - - if (mXmlReader.hasError()) - { - qWarning() << "error parsing Sankore file " << mXmlReader.errorString(); - } - - return result; -} - - UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy, const QByteArray& pXmlData) : mXmlReader(pXmlData) , mProxy(pProxy) @@ -1070,7 +1004,8 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement() bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) { - if (mScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())) + Q_UNUSED(pageIndex); + if (mScene->isModified()) { //Creating dom structure to store information @@ -1347,29 +1282,6 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) openStroke = 0; } - QMap elements = getAdditionalElementToStore(); - QVector dataStorageItems; - - if(elements.value("teacherGuide")) - dataStorageItems = elements.value("teacherGuide")->save(pageIndex); - foreach(tIDataStorage* eachItem, dataStorageItems){ - if(eachItem->type == eElementType_START){ - mXmlWriter.writeStartElement(eachItem->name); - foreach(QString key,eachItem->attributes.keys()) - mXmlWriter.writeAttribute(key,eachItem->attributes.value(key)); - } - else if (eachItem->type == eElementType_END) - mXmlWriter.writeEndElement(); - else if (eachItem->type == eElementType_UNIQUE){ - mXmlWriter.writeStartElement(eachItem->name); - foreach(QString key,eachItem->attributes.keys()) - mXmlWriter.writeAttribute(key,eachItem->attributes.value(key)); - mXmlWriter.writeEndElement(); - } - else - qWarning() << "unknown type"; - } - //writing group data if (groupRoot.hasChildNodes()) { mXmlWriter.writeStartElement(tGroups); diff --git a/src/adaptors/UBSvgSubsetAdaptor.h b/src/adaptors/UBSvgSubsetAdaptor.h index cd241d7e..bff53db9 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.h +++ b/src/adaptors/UBSvgSubsetAdaptor.h @@ -48,7 +48,6 @@ class UBGraphicsStroke; class UBPersistenceManager; class UBGraphicsTriangle; class UBGraphicsCache; -class IDataStorage; class UBGraphicsGroupContainerItem; class UBGraphicsStrokesGroup; @@ -68,13 +67,9 @@ class UBSvgSubsetAdaptor static QUuid sceneUuid(UBDocumentProxy* proxy, const int pageIndex); static void setSceneUuid(UBDocumentProxy* proxy, const int pageIndex, QUuid pUuid); - static bool addElementToBeStored(QString domName,IDataStorage* dataStorageClass); - static void convertPDFObjectsToImages(UBDocumentProxy* proxy); static void convertSvgImagesToImages(UBDocumentProxy* proxy); - static QMap getAdditionalElementToStore() { return additionalElementToStore;} - static const QString nsSvg; static const QString nsXLink; static const QString nsXHtml; @@ -101,10 +96,6 @@ class UBSvgSubsetAdaptor static QString toSvgTransform(const QMatrix& matrix); static QMatrix fromSvgTransform(const QString& transform); - static QMap additionalElementToStore; - - - class UBSvgSubsetReader { diff --git a/src/adaptors/UBThumbnailAdaptor.cpp b/src/adaptors/UBThumbnailAdaptor.cpp index 97c53852..a3b83791 100644 --- a/src/adaptors/UBThumbnailAdaptor.cpp +++ b/src/adaptors/UBThumbnailAdaptor.cpp @@ -31,10 +31,6 @@ #include "core/UBApplication.h" #include "core/UBSettings.h" - -#include "gui/UBDockTeacherGuideWidget.h" -#include "gui/UBTeacherGuideWidget.h" - #include "board/UBBoardController.h" #include "board/UBBoardPaletteManager.h" @@ -104,20 +100,8 @@ const QPixmap* UBThumbnailAdaptor::get(UBDocumentProxy* proxy, int pageIndex) return pix; } -void UBThumbnailAdaptor::updateDocumentToHandleZeroPage(UBDocumentProxy* proxy) -{ - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){ - QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", 0); - QFile file(fileName); - if(!file.exists()){ - UBPersistenceManager::persistenceManager()->persistDocumentScene(proxy,new UBGraphicsScene(proxy),0); - } - } -} - void UBThumbnailAdaptor::load(UBDocumentProxy* proxy, QList& list) { - updateDocumentToHandleZeroPage(proxy); generateMissingThumbnails(proxy); foreach(const QPixmap* pm, list){ @@ -135,7 +119,7 @@ void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* p QFile thumbFile(fileName); - if (pScene->isModified() || overrideModified || !thumbFile.exists() || UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()) + if (pScene->isModified() || overrideModified || !thumbFile.exists()) { qreal nominalWidth = pScene->nominalSize().width(); qreal nominalHeight = pScene->nominalSize().height(); @@ -167,12 +151,6 @@ void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* p pScene->render(&painter, imageRect, sceneRect, Qt::KeepAspectRatio); - if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()){ - QPixmap toque(":images/toque.svg"); - painter.setOpacity(0.6); - painter.drawPixmap(QPoint(width - toque.width(),0),toque); - } - pScene->setRenderingContext(UBGraphicsScene::Screen); pScene->setRenderingQuality(UBItem::RenderingQualityNormal); diff --git a/src/adaptors/UBThumbnailAdaptor.h b/src/adaptors/UBThumbnailAdaptor.h index 88c39bf7..92e03f13 100644 --- a/src/adaptors/UBThumbnailAdaptor.h +++ b/src/adaptors/UBThumbnailAdaptor.h @@ -44,7 +44,6 @@ public: private: static void generateMissingThumbnails(UBDocumentProxy* proxy); - static void updateDocumentToHandleZeroPage(UBDocumentProxy* proxy); UBThumbnailAdaptor() {} }; diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 18e56145..ffb18864 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -48,8 +48,6 @@ #include "gui/UBKeyboardPalette.h" #include "gui/UBMagnifer.h" #include "gui/UBDockPaletteWidget.h" -#include "gui/UBDockTeacherGuideWidget.h" -#include "gui/UBTeacherGuideWidget.h" #include "domain/UBGraphicsPixmapItem.h" #include "domain/UBGraphicsItemUndoCommand.h" @@ -166,8 +164,6 @@ UBBoardController::~UBBoardController() int UBBoardController::currentPage() { - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) - return mActiveSceneIndex; return mActiveSceneIndex + 1; } @@ -1762,10 +1758,7 @@ void UBBoardController::lastWindowClosed() { if (!mCleanupDone) { - bool teacherGuideModified = false; - if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget()) - teacherGuideModified = UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified(); - if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()) && !teacherGuideModified) + if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty())) { UBPersistenceManager::persistenceManager()->deleteDocument(selectedDocument()); } @@ -1860,7 +1853,7 @@ void UBBoardController::persistCurrentScene() if(UBPersistenceManager::persistenceManager() && selectedDocument() && mActiveScene && mActiveSceneIndex != mDeletingSceneIndex && (mActiveSceneIndex >= 0) && mActiveSceneIndex != mMovingSceneIndex - && (mActiveScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()))) + && (mActiveScene->isModified())) { UBPersistenceManager::persistenceManager()->persistDocumentScene(selectedDocument(), mActiveScene, mActiveSceneIndex); updatePage(mActiveSceneIndex); @@ -1954,7 +1947,7 @@ void UBBoardController::notifyCache(bool visible) { if(visible) emit cacheEnabled(); - + mCacheWidgetIsEnabled = visible; } diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index cac33bde..140844c0 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -40,8 +40,6 @@ #include "gui/UBWebToolsPalette.h" #include "gui/UBActionPalette.h" #include "gui/UBFavoriteToolPalette.h" -#include "gui/UBDockTeacherGuideWidget.h" - #include "web/UBWebPage.h" #include "web/UBWebController.h" @@ -92,7 +90,6 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll , mpPageNavigWidget(NULL) , mpCachePropWidget(NULL) , mpDownloadWidget(NULL) - , mpTeacherGuideWidget(NULL) , mDownloadInProgress(false) { setupPalettes(); @@ -143,12 +140,6 @@ void UBBoardPaletteManager::setupDockPaletteWidgets() mLeftPalette->registerWidget(mpPageNavigWidget); mLeftPalette->addTab(mpPageNavigWidget); - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() || UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()){ - mpTeacherGuideWidget = new UBDockTeacherGuideWidget(); - mLeftPalette->registerWidget(mpTeacherGuideWidget); - mLeftPalette->addTab(mpTeacherGuideWidget); - } - mLeftPalette->connectSignals(); mLeftPalette->showTabWidget(0); diff --git a/src/board/UBBoardPaletteManager.h b/src/board/UBBoardPaletteManager.h index 5f05af11..990771cf 100644 --- a/src/board/UBBoardPaletteManager.h +++ b/src/board/UBBoardPaletteManager.h @@ -47,7 +47,6 @@ class UBServerXMLHttpRequest; class UBKeyboardPalette; class UBMainWindow; class UBApplicationController; -class UBDockTeacherGuideWidget; class UBBoardPaletteManager : public QObject { @@ -71,8 +70,6 @@ class UBBoardPaletteManager : public QObject void setCurrentWebToolsPalette(UBWebToolsPalette *palette) {mWebToolsCurrentPalette = palette;} UBWebToolsPalette* mWebToolsCurrentPalette; - UBDockTeacherGuideWidget* teacherGuideDockWidget() { return mpTeacherGuideWidget;} - void processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode); void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false); void startDownloads(); @@ -142,7 +139,6 @@ class UBBoardPaletteManager : public QObject /** The download widget */ UBDockDownloadWidget* mpDownloadWidget; - UBDockTeacherGuideWidget* mpTeacherGuideWidget; bool mDownloadInProgress; diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 31d1b277..2f218a03 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -47,7 +47,6 @@ #include "gui/UBResources.h" #include "gui/UBMainWindow.h" #include "gui/UBThumbnailWidget.h" -#include "gui/UBTeacherGuideWidgetsTools.h" #include "board/UBBoardController.h" #include "board/UBBoardPaletteManager.h" @@ -954,9 +953,6 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) movingItem = scene()->itemAt(this->mapToScene(event->posF().toPoint())); - if (!movingItem) - emit clickOnBoard(); - if (event->button () == Qt::LeftButton && isInteractive ()) { @@ -1440,9 +1436,7 @@ void UBBoardView::dropEvent (QDropEvent *event) if (!event->source() || qobject_cast(event->source()) || qobject_cast(event->source()) - || qobject_cast(event->source()) - || qobject_cast(event->source()) - || qobject_cast(event->source())) { + || qobject_cast(event->source())) { mController->processMimeData (event->mimeData (), mapToScene (event->pos ())); event->acceptProposedAction(); } diff --git a/src/board/UBBoardView.h b/src/board/UBBoardView.h index ad2dcf6d..9e12a138 100644 --- a/src/board/UBBoardView.h +++ b/src/board/UBBoardView.h @@ -62,7 +62,6 @@ signals: void resized(QResizeEvent* event); void shown(); - void clickOnBoard(); protected: diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index 49b2f698..b2918089 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -51,8 +51,6 @@ #include "gui/UBScreenMirror.h" #include "gui/UBMainWindow.h" -#include "gui/UBDockTeacherGuideWidget.h" -#include "gui/UBTeacherGuideWidget.h" #include "domain/UBGraphicsPixmapItem.h" @@ -434,7 +432,7 @@ void UBApplicationController::showDocument() if (UBApplication::boardController) { - if (UBApplication::boardController->activeScene()->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())) + if (UBApplication::boardController->activeScene()->isModified()) UBApplication::boardController->persistCurrentScene(); UBApplication::boardController->hide(); } diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index 9001d17d..c6add622 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -33,9 +33,6 @@ #include "core/UBSettings.h" #include "core/UBSetting.h" -#include "gui/UBDockTeacherGuideWidget.h" -#include "gui/UBTeacherGuideWidget.h" - #include "document/UBDocumentProxy.h" #include "adaptors/UBExportPDF.h" @@ -46,8 +43,6 @@ #include "board/UBBoardController.h" #include "board/UBBoardPaletteManager.h" -#include "interfaces/IDataStorage.h" - #include "core/memcheck.h" const QString UBPersistenceManager::imageDirectory = "images"; // added to UBPersistenceManager::mAllDirectories @@ -55,7 +50,6 @@ const QString UBPersistenceManager::objectDirectory = "objects"; // added to UBP const QString UBPersistenceManager::widgetDirectory = "widgets"; // added to UBPersistenceManager::mAllDirectories const QString UBPersistenceManager::videoDirectory = "videos"; // added to UBPersistenceManager::mAllDirectories const QString UBPersistenceManager::audioDirectory = "audios"; // added to -const QString UBPersistenceManager::teacherGuideDirectory = "teacherGuideObjects"; UBPersistenceManager * UBPersistenceManager::sSingleton = 0; @@ -69,7 +63,6 @@ UBPersistenceManager::UBPersistenceManager(QObject *pParent) mDocumentSubDirectories << widgetDirectory; mDocumentSubDirectories << videoDirectory; mDocumentSubDirectories << audioDirectory; - mDocumentSubDirectories << teacherGuideDirectory; documentProxies = allDocumentProxies(); emit proxyListChanged(); @@ -589,10 +582,6 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy, return mSceneCache.value(proxy, sceneIndex); else { UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, sceneIndex); - if(!scene && UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){ - createDocumentSceneAt(proxy,0); - scene = UBSvgSubsetAdaptor::loadScene(proxy, 0); - } if (scene) mSceneCache.insert(proxy, sceneIndex, scene); @@ -612,15 +601,10 @@ void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy, QDir dir(pDocumentProxy->persistencePath()); dir.mkpath(pDocumentProxy->persistencePath()); - UBBoardPaletteManager* paletteManager = UBApplication::boardController->paletteManager(); - bool teacherGuideModified = false; - if(UBApplication::app()->boardController->currentPage() == pSceneIndex && paletteManager->teacherGuideDockWidget()) - teacherGuideModified = paletteManager->teacherGuideDockWidget()->teacherGuideWidget()->isModified(); - - if (pDocumentProxy->isModified() || teacherGuideModified) + if (pDocumentProxy->isModified()) UBMetadataDcSubsetAdaptor::persist(pDocumentProxy); - if (pScene->isModified() || teacherGuideModified) + if (pScene->isModified()) { UBSvgSubsetAdaptor::persistScene(pDocumentProxy, pScene, pSceneIndex); @@ -680,21 +664,9 @@ int UBPersistenceManager::sceneCount(const UBDocumentProxy* proxy) QFile file(fileName); if (file.exists()) - { pageIndex++; - } else - { - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() && pageIndex == 0){ - // the document has no zero file but doesn't means that it hasn't any file - // at all. Just importing a document without the first page using a configuartion - // that enables zero page. - pageIndex++; - addedMissingZeroPage = true; - } - else - moreToProcess = false; - } + moreToProcess = false; } if(pageIndex == 1 && addedMissingZeroPage){ @@ -761,7 +733,7 @@ bool UBPersistenceManager::addDirectoryContentToDocument(const QString& document foreach(QString dir, mDocumentSubDirectories) { qDebug() << "copying " << documentRootFolder << "/" << dir << " to " << pDocument->persistencePath() << "/" + dir; - + QDir srcDir(documentRootFolder + "/" + dir); if (srcDir.exists()) if (!UBFileSystemUtils::copyDir(documentRootFolder + "/" + dir, pDocument->persistencePath() + "/" + dir)) @@ -865,66 +837,8 @@ void UBPersistenceManager::purgeEmptyDocuments() } } -QString UBPersistenceManager::teacherGuideAbsoluteObjectPath(UBDocumentProxy* pDocumentProxy) -{ - return pDocumentProxy->persistencePath() + "/" + teacherGuideDirectory; -} - -QString UBPersistenceManager::addObjectToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath) -{ - QString path = UBFileSystemUtils::removeLocalFilePrefix(pPath); - QFileInfo fi(path); - QString uuid = QUuid::createUuid(); - - if (!fi.exists() || !pDocumentProxy) - return ""; - - QString fileName = UBPersistenceManager::teacherGuideDirectory + "/" + uuid + "." + fi.suffix(); - - QString destPath = pDocumentProxy->persistencePath() + "/" + fileName; - - if (!QFile::exists(destPath)){ - QDir dir; - dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::teacherGuideDirectory); - - QFile source(path); - - source.copy(destPath); - } - - return destPath; -} - -QString UBPersistenceManager::addWidgetToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath) -{ - QString path = UBFileSystemUtils::removeLocalFilePrefix(pPath); - QFileInfo fi(path); - Q_ASSERT(fi.isDir()); - - int lastIndex = path.lastIndexOf("."); - QString extension(""); - if(lastIndex != -1) - extension = path.right(path.length() - lastIndex); - - QString uuid = QUuid::createUuid(); - - if (!fi.exists() || !pDocumentProxy) - return ""; - - QString directoryName = UBPersistenceManager::teacherGuideDirectory + "/" + uuid + extension; - QString destPath = pDocumentProxy->persistencePath() + "/" + directoryName; - - if (!QDir(destPath).exists()){ - QDir dir; - dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::teacherGuideDirectory); - UBFileSystemUtils::copyDir(path,destPath); - } - - return destPath; -} - -bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy, - QString path, +bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy, + QString path, const QString& subdir, QUuid objectUuid, QString& destinationPath, @@ -975,12 +889,12 @@ bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy, } else { - return false; + return false; } } -bool UBPersistenceManager::addGraphicsWidgteToDocument(UBDocumentProxy *pDocumentProxy, - QString path, +bool UBPersistenceManager::addGraphicsWidgteToDocument(UBDocumentProxy *pDocumentProxy, + QString path, QUuid objectUuid, QString& destinationPath) { diff --git a/src/core/UBPersistenceManager.h b/src/core/UBPersistenceManager.h index a8e17bff..77dd0bb9 100644 --- a/src/core/UBPersistenceManager.h +++ b/src/core/UBPersistenceManager.h @@ -90,10 +90,6 @@ class UBPersistenceManager : public QObject QString generateUniqueDocumentPath(); QString generateUniqueDocumentPath(const QString& baseFolder); - QString teacherGuideAbsoluteObjectPath(UBDocumentProxy* pDocumentProxy); - QString addObjectToTeacherGuideDirectory(UBDocumentProxy* proxy, QString pPath); - QString addWidgetToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath); - bool addDirectoryContentToDocument(const QString& documentRootFolder, UBDocumentProxy* pDocument); virtual void upgradeDocumentIfNeeded(UBDocumentProxy* pDocumentProxy); diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 73ba20a5..3a226896 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -51,14 +51,6 @@ QString UBSettings::documentSize = QString("Size"); QString UBSettings::documentIdentifer = QString("ID"); QString UBSettings::documentVersion = QString("Version"); QString UBSettings::documentUpdatedAt = QString("UpdatedAt"); -QString UBSettings::sessionTitle = QString("sessionTitle"); -QString UBSettings::sessionAuthors = QString("sessionAuthors"); -QString UBSettings::sessionObjectives = QString("sessionObjectives"); -QString UBSettings::sessionKeywords = QString("sessionKeywords"); -QString UBSettings::sessionGradeLevel = QString("sessionGradeLevel"); -QString UBSettings::sessionSubjects = QString("sessionSubjects"); -QString UBSettings::sessionType = QString("sessionType"); -QString UBSettings::sessionLicence = QString("sessionLicence"); QString UBSettings::documentDate = QString("date"); QString UBSettings::trashedDocumentGroupNamePrefix = QString("_Trash:"); @@ -405,8 +397,6 @@ void UBSettings::init() angleTolerance = new UBSetting(this, "App", "AngleTolerance", 4); historyLimit = new UBSetting(this, "Web", "HistoryLimit", 15); - teacherGuidePageZeroActivated = new UBSetting(this,"DockPalette","TeacherGuideActivatePageZero",true); - teacherGuideLessonPagesActivated = new UBSetting(this,"DockPalette","TeacherGuideActivateLessonPages",true); libIconSize = new UBSetting(this, "Library", "LibIconSize", defaultLibraryIconSize); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index 74e89691..029be013 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -179,15 +179,6 @@ class UBSettings : public QObject static QString documentVersion; static QString documentUpdatedAt; - static QString sessionTitle; - static QString sessionAuthors; - static QString sessionObjectives; - static QString sessionKeywords; - static QString sessionGradeLevel; - static QString sessionSubjects; - static QString sessionType; - static QString sessionLicence; - static QString documentDate; static QString trashedDocumentGroupNamePrefix; @@ -367,8 +358,6 @@ class UBSettings : public QObject UBSetting* angleTolerance; UBSetting* historyLimit; - UBSetting* teacherGuidePageZeroActivated; - UBSetting* teacherGuideLessonPagesActivated; UBSetting* libIconSize; diff --git a/src/document/UBDocumentContainer.cpp b/src/document/UBDocumentContainer.cpp index b2ba4664..6325d9c5 100644 --- a/src/document/UBDocumentContainer.cpp +++ b/src/document/UBDocumentContainer.cpp @@ -127,15 +127,11 @@ void UBDocumentContainer::reloadThumbnails() int UBDocumentContainer::pageFromSceneIndex(int sceneIndex) { - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) - return sceneIndex; return sceneIndex+1; } int UBDocumentContainer::sceneIndexFromPage(int page) { - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) - return page; return page-1; } diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index d24282a4..77432c67 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -1632,18 +1632,12 @@ int UBDocumentController::getSelectedItemIndex() bool UBDocumentController::pageCanBeMovedUp(int page) { - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) - return page >= 2; - else - return page >= 1; + return page >= 1; } bool UBDocumentController::pageCanBeMovedDown(int page) { - if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) - return page != 0 && page < selectedDocument()->pageCount() - 1; - else - return page < selectedDocument()->pageCount() - 1; + return page < selectedDocument()->pageCount() - 1; } bool UBDocumentController::pageCanBeDuplicated(int page) diff --git a/src/document/UBDocumentProxy.cpp b/src/document/UBDocumentProxy.cpp index 82145959..894adcc2 100644 --- a/src/document/UBDocumentProxy.cpp +++ b/src/document/UBDocumentProxy.cpp @@ -57,16 +57,6 @@ void UBDocumentProxy::init() setUuid(QUuid::createUuid()); setDefaultDocumentSize(UBSettings::settings()->pageSize->get().toSize()); - - //teacherGuide metadata - setMetaData(UBSettings::sessionTitle,""); - setMetaData(UBSettings::sessionAuthors,""); - setMetaData(UBSettings::sessionObjectives,""); - setMetaData(UBSettings::sessionKeywords,""); - setMetaData(UBSettings::sessionGradeLevel,""); - setMetaData(UBSettings::sessionSubjects,""); - setMetaData(UBSettings::sessionType,""); - setMetaData(UBSettings::sessionLicence,""); } diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 6c5f9f58..82583ce5 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1486,56 +1486,6 @@ UBGraphicsTextItem* UBGraphicsScene::addText(const QString& pString, const QPoin , UBSettings::settings()->isItalicFont()); } -UBGraphicsTextItem* UBGraphicsScene::textForObjectName(const QString& pString, const QString& objectName) -{ - UBGraphicsTextItem* textItem = 0; - bool found = false; - //looking for a previous such item text - for(int i=0; i < mFastAccessItems.count() && !found ; i += 1){ - UBGraphicsTextItem* currentItem = dynamic_cast(mFastAccessItems.at(i)); - if(currentItem && (currentItem->objectName() == objectName || currentItem->toPlainText() == pString)){ - // The second condition is necessary because the object name isn't stored. On reopeining the file we - // need another rule than the objectName - textItem = currentItem; - found=true; - if(currentItem->objectName() != objectName) - textItem->setObjectName(objectName); - } - } - if(!textItem){ - textItem = addTextWithFont(pString,QPointF(0,0) ,72,UBSettings::settings()->fontFamily(),true,false); - textItem->setObjectName(objectName); - textItem->setData(UBGraphicsItemData::ItemEditable,QVariant(false)); - textItem->adjustSize(); - textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); - textItem->setPlainText(pString); - } - else{ - textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); - if (pString == textItem->toPlainText()) - return textItem; - - QTextCursor curCursor = textItem->textCursor(); - QFont font = textItem->font(); - QColor color = curCursor.charFormat().foreground().color(); - - textItem->setPlainText(pString); - textItem->clearFocus(); - textItem->setFont(font); - - - QTextCharFormat format; - format.setForeground(QBrush(color)); - curCursor.mergeCharFormat(format); - textItem->setTextCursor(curCursor); - textItem->contentsChanged(); - - } - - textItem->clearFocus(); - return textItem; -} - UBGraphicsTextItem* UBGraphicsScene::addTextWithFont(const QString& pString, const QPointF& pTopLeft , int pointSize, const QString& fontFamily, bool bold, bool italic) { diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index 84327c82..c09855a5 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -156,7 +156,6 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem UBGraphicsMediaItem* addAudio(const QUrl& pAudioFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0)); UBGraphicsSvgItem* addSvg(const QUrl& pSvgFileUrl, const QPointF& pPos = QPointF(0, 0), const QByteArray pData = QByteArray()); UBGraphicsTextItem* addText(const QString& pString, const QPointF& pTopLeft = QPointF(0, 0)); - UBGraphicsTextItem* textForObjectName(const QString& pString, const QString &objectName = "UBTGZeroPageSessionTitle"); UBGraphicsTextItem* addTextWithFont(const QString& pString, const QPointF& pTopLeft = QPointF(0, 0) , int pointSize = -1, const QString& fontFamily = "", bool bold = false, bool italic = false); diff --git a/src/gui/UBDockTeacherGuideWidget.cpp b/src/gui/UBDockTeacherGuideWidget.cpp deleted file mode 100644 index 7a1401a9..00000000 --- a/src/gui/UBDockTeacherGuideWidget.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include "core/UBApplication.h" -#include "globals/UBGlobals.h" - -#include "UBDockTeacherGuideWidget.h" -#include "UBTeacherGuideWidget.h" - -#include "core/memcheck.h" - - -UBDockTeacherGuideWidget::UBDockTeacherGuideWidget(QWidget* parent, const char* name): - UBDockPaletteWidget(parent,name) - , mpTeacherGuideWidget(NULL) -{ - mName = "TeacherGuide"; - mVisibleState = true; - SET_STYLE_SHEET(); - - mIconToLeft = QPixmap(":images/teacher_open.png"); - mIconToRight = QPixmap(":images/teacher_close.png"); - - mpLayout = new QVBoxLayout(this); - setLayout(mpLayout); - mpTeacherGuideWidget = new UBTeacherGuideWidget(this); - mpLayout->addWidget(mpTeacherGuideWidget); -} - -UBDockTeacherGuideWidget::~UBDockTeacherGuideWidget() -{ - DELETEPTR(mpTeacherGuideWidget); - DELETEPTR(mpLayout); -} - -UBTeacherGuideWidget* UBDockTeacherGuideWidget::teacherGuideWidget() -{ - return mpTeacherGuideWidget; -} diff --git a/src/gui/UBDockTeacherGuideWidget.h b/src/gui/UBDockTeacherGuideWidget.h deleted file mode 100644 index fe33410c..00000000 --- a/src/gui/UBDockTeacherGuideWidget.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBDOCKTEACHERGUIDEWIDGET_H -#define UBDOCKTEACHERGUIDEWIDGET_H - -class QVBoxLayout; -class UBTeacherGuideWidget; - -#include "UBDockPaletteWidget.h" - - -class UBDockTeacherGuideWidget : public UBDockPaletteWidget -{ - Q_OBJECT -public: - UBDockTeacherGuideWidget(QWidget* parent=0, const char* name="UBDockTeacherGuideWidget"); - ~UBDockTeacherGuideWidget(); - - bool visibleInMode(eUBDockPaletteWidgetMode mode){ return mode == eUBDockPaletteWidget_BOARD; } - - UBTeacherGuideWidget* teacherGuideWidget(); - -private: - QVBoxLayout* mpLayout; - UBTeacherGuideWidget* mpTeacherGuideWidget; -}; - -#endif // UBDOCKTEACHERGUIDEWIDGET_H diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index ccf5d518..085203e2 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -78,9 +78,6 @@ UBDocumentNavigator::~UBDocumentNavigator() } } -#include "gui/UBDockTeacherGuideWidget.h" -#include "gui/UBTeacherGuideWidget.h" - /** * \brief Generate the thumbnails */ @@ -113,7 +110,7 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source) mScene->addItem(pixmapItem); mScene->addItem(labelItem); } - + // Draw the items refreshScene(); } @@ -255,7 +252,7 @@ void UBDocumentNavigator::mousePressEvent(QMouseEvent *event) { // If we fall here we may have clicked on the label instead of the thumbnail UBThumbnailTextItem* pTextItem = dynamic_cast(pClickedItem); - if(NULL != pTextItem) + if(NULL != pTextItem) { for(int i = 0; i < mThumbsWithLabels.size(); i++) { diff --git a/src/gui/UBTeacherGuideWidget.cpp b/src/gui/UBTeacherGuideWidget.cpp deleted file mode 100644 index 09520118..00000000 --- a/src/gui/UBTeacherGuideWidget.cpp +++ /dev/null @@ -1,1291 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "UBTeacherGuideWidget.h" - -#include "adaptors/UBSvgSubsetAdaptor.h" - -#include "core/UBApplication.h" -#include "core/UBPersistenceManager.h" -#include "core/UBSettings.h" - -#include "globals/UBGlobals.h" - -#include "board/UBBoardController.h" -#include "board/UBBoardView.h" -#include "board/UBBoardPaletteManager.h" - -#include "gui/UBStylusPalette.h" -#include "gui/UBActionPalette.h" -#include "gui/UBMainWindow.h" - -#include "web/UBWebController.h" - -#include "document/UBDocumentProxy.h" -#include "document/UBDocumentController.h" - -#include "domain/UBGraphicsTextItem.h" - -#include "core/memcheck.h" - -#define UBTG_SEPARATOR_FIXED_HEIGHT 3 - -typedef enum { - eUBTGAddSubItemWidgetType_None, - eUBTGAddSubItemWidgetType_Action, - eUBTGAddSubItemWidgetType_Media, - eUBTGAddSubItemWidgetType_Url -} eUBTGAddSubItemWidgetType; - -/*************************************************************************** - * class UBTeacherGuideEditionWidget * - ***************************************************************************/ - -UBTeacherGuideEditionWidget::UBTeacherGuideEditionWidget(QWidget *parent, const char* name) : - QWidget(parent) - , mpLayout(NULL) - , mpDocumentTitle(NULL) - , mpPageNumberLabel(NULL) - , mpPageTitle(NULL) - , mpComment(NULL) - , mpSeparator(NULL) - , mpTreeWidget(NULL) - , mpRootWidgetItem(NULL) - , mpAddAnActionItem(NULL) - , mpAddAMediaItem(NULL) - , mpAddALinkItem(NULL) -{ - setObjectName(name); - - mpLayout = new QVBoxLayout(this); - mpPageNumberLabel = new QLabel(this); - mpPageNumberLabel->setAlignment(Qt::AlignRight); - mpPageNumberLabel->setObjectName("UBTGPageNumberLabel"); - mpLayout->addWidget(mpPageNumberLabel); - // tree basic configuration - - if (UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) { - mpDocumentTitle = new QLabel(this); - mpDocumentTitle->setObjectName("UBTGPresentationDocumentTitle"); - mpLayout->addWidget(mpDocumentTitle); - } - - mpPageTitle = new UBTGAdaptableText(0, this); - mpPageTitle->setObjectName("UBTGEditionPageTitle"); - mpPageTitle->setPlaceHolderText(tr("Type title here ...")); - mpLayout->addWidget(mpPageTitle); - - mpComment = new UBTGAdaptableText(0, this); - mpComment->setObjectName("UBTGEditionComment"); - mpComment->setPlaceHolderText(tr("Type comment here ...")); - mpLayout->addWidget(mpComment); - - mpSeparator = new QFrame(this); - mpSeparator->setObjectName("UBTGSeparator"); - mpSeparator->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); - mpLayout->addWidget(mpSeparator); - - mpTreeWidget = new QTreeWidget(this); - mpTreeWidget->setStyleSheet("selection-background-color:transparent; padding-bottom:5px; padding-top:5px;"); - mpLayout->addWidget(mpTreeWidget); - - mpRootWidgetItem = mpTreeWidget->invisibleRootItem(); - mpTreeWidget->setRootIsDecorated(false); - mpTreeWidget->setIndentation(0); - mpTreeWidget->setDropIndicatorShown(false); - mpTreeWidget->header()->close(); - mpTreeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - mpTreeWidget->setColumnCount(2); - mpTreeWidget->header()->setStretchLastSection(false); - mpTreeWidget->header()->setResizeMode(0, QHeaderView::Stretch); - mpTreeWidget->header()->setResizeMode(1, QHeaderView::Fixed); - mpTreeWidget->header()->setDefaultSectionSize(18); - mpTreeWidget->setSelectionMode(QAbstractItemView::NoSelection); - - connect(mpTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(onAddItemClicked(QTreeWidgetItem*,int))); - connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged())); - -#ifdef Q_WS_MAC - // on mac and with the custom qt the widget on the tree are not automatically relocated when using the vertical scrollbar. To relocate them we link the valueChange signal of the vertical scrollbar witht a local signal to trig a change and a repaint of the tree widget - connect(mpTreeWidget->verticalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(onSliderMoved(int))); -#endif - - mpAddAnActionItem = new UBAddItem(tr("Add an action"), eUBTGAddSubItemWidgetType_Action, mpTreeWidget); - mpAddAMediaItem = new UBAddItem(tr("Add a media"), eUBTGAddSubItemWidgetType_Media, mpTreeWidget); - mpAddALinkItem = new UBAddItem(tr("Add a link"), eUBTGAddSubItemWidgetType_Url, mpTreeWidget); - - mpRootWidgetItem->addChild(mpAddAnActionItem); - mpRootWidgetItem->addChild(mpAddAMediaItem); - mpRootWidgetItem->addChild(mpAddALinkItem); - - if (UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()) { - UBSvgSubsetAdaptor::addElementToBeStored(QString("teacherGuide"), this); - connect(UBApplication::boardController, SIGNAL(documentSet(UBDocumentProxy*)), this, SLOT(onActiveDocumentChanged())); - } -} - -UBTeacherGuideEditionWidget::~UBTeacherGuideEditionWidget() -{ - DELETEPTR(mpDocumentTitle); - DELETEPTR(mpPageNumberLabel); - DELETEPTR(mpPageTitle); - DELETEPTR(mpComment); - DELETEPTR(mpSeparator); - DELETEPTR(mpAddAnActionItem); - DELETEPTR(mpAddAMediaItem); - DELETEPTR(mpAddALinkItem); - DELETEPTR(mpTreeWidget); - DELETEPTR(mpLayout); -} - -#ifdef Q_WS_MAC -void UBTeacherGuideEditionWidget::onSliderMoved(int size) -{ - Q_UNUSED(size); - if(mpAddAMediaItem) - mpAddAMediaItem->setExpanded(true); -} -#endif -void UBTeacherGuideEditionWidget::showEvent(QShowEvent* event) -{ - setFocus(); - QWidget::showEvent(event); -} - -void UBTeacherGuideEditionWidget::onActiveDocumentChanged() -{ - int activeSceneIndex = UBApplication::boardController->activeSceneIndex(); - if (UBApplication::boardController->pageFromSceneIndex(activeSceneIndex) != 0) - load(UBSvgSubsetAdaptor::readTeacherGuideNode(activeSceneIndex)); -} - -void UBTeacherGuideEditionWidget::load(QString element) -{ - cleanData(); - QDomDocument doc("TeacherGuide"); - doc.setContent(element); - - for (QDomElement element = doc.documentElement().firstChildElement(); - !element.isNull(); element = element.nextSiblingElement()) { - QString tagName = element.tagName(); - if (tagName == "title") - mpPageTitle->setInitialText(element.attribute("value")); - else if (tagName == "comment") - mpComment->setInitialText(element.attribute("value")); - else if (tagName == "media") - onAddItemClicked(mpAddAMediaItem, 0, &element); - else if (tagName == "link") - onAddItemClicked(mpAddALinkItem, 0, &element); - else if (tagName == "action") - onAddItemClicked(mpAddAnActionItem, 0, &element); - } -} - -QVector UBTeacherGuideEditionWidget::save(int pageIndex) -{ - QVector result; - if (pageIndex != UBApplication::boardController->currentPage()) - return result; - tIDataStorage* data = new tIDataStorage(); - data->name = "teacherGuide"; - data->type = eElementType_START; - data->attributes.insert("version", "2.00"); - result << data; - - data = new tIDataStorage(); - data->name = "title"; - data->type = eElementType_UNIQUE; - data->attributes.insert("value", mpPageTitle->text()); - if (mpPageTitle->text().length()) - result << data; - - data = new tIDataStorage(); - data->name = "comment"; - data->type = eElementType_UNIQUE; - data->attributes.insert("value", mpComment->text()); - if (mpComment->text().length()) - result << data; - - QList children = getChildrenList(mpAddAnActionItem); - children << getChildrenList(mpAddAMediaItem); - children << getChildrenList(mpAddALinkItem); - - foreach(QTreeWidgetItem* widgetItem, children) { - tUBGEElementNode* node = dynamic_cast(mpTreeWidget->itemWidget( widgetItem, 0))->saveData(); - if (node) { - data = new tIDataStorage(); - data->name = node->name; - data->type = eElementType_UNIQUE; - foreach(QString currentKey, node->attributes.keys()) - data->attributes.insert(currentKey, node->attributes.value(currentKey)); - result << data; - } - } - - data = new tIDataStorage(); - data->name = "teacherGuide"; - data->type = eElementType_END; - result << data; - return result; -} - -void UBTeacherGuideEditionWidget::onActiveSceneChanged() -{ - int currentPage = UBApplication::boardController->currentPage(); - if (currentPage > 0) { - cleanData(); - load( UBSvgSubsetAdaptor::readTeacherGuideNode( UBApplication::boardController->activeSceneIndex())); - mpPageNumberLabel->setText(tr("Page: %0").arg(currentPage)); - UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument(); - if (mpDocumentTitle) - mpDocumentTitle->setText(documentProxy->metaData(UBSettings::sessionTitle).toString()); - } -} - -void UBTeacherGuideEditionWidget::cleanData() -{ - mpPageTitle->resetText(); - mpComment->resetText(); - QList children = mpAddAnActionItem->takeChildren(); - children << mpAddAMediaItem->takeChildren(); - children << mpAddALinkItem->takeChildren(); - - foreach(QTreeWidgetItem* item, children) { - DELETEPTR(item); - } -} - -QList UBTeacherGuideEditionWidget::getChildrenList( QTreeWidgetItem* widgetItem) -{ - QList result; - for (int i = 0; i < widgetItem->childCount(); i += 1) - result << widgetItem->child(i); - return result; -} - -QVector UBTeacherGuideEditionWidget::getPageAndCommentData() -{ - QVector result; - tUBGEElementNode* pageTitle = new tUBGEElementNode(); - pageTitle->name = "pageTitle"; - pageTitle->attributes.insert("value", mpPageTitle->text()); - result << pageTitle; - - tUBGEElementNode* comment = new tUBGEElementNode(); - comment->name = "comment"; - comment->attributes.insert("value", mpComment->text()); - result << comment; - return result; -} - -QVector UBTeacherGuideEditionWidget::getData() -{ - QVector result; - QList children = getChildrenList(mpAddAnActionItem); - children << getChildrenList(mpAddAMediaItem); - children << getChildrenList(mpAddALinkItem); - result << getPageAndCommentData(); - foreach(QTreeWidgetItem* widgetItem, children) { - tUBGEElementNode* node = dynamic_cast(mpTreeWidget->itemWidget( widgetItem, 0))->saveData(); - if (node) - result << node; - } - return result; -} - -void UBTeacherGuideEditionWidget::onAddItemClicked(QTreeWidgetItem* widget, int column, QDomElement *element) -{ - int addSubItemWidgetType = widget->data(column, Qt::UserRole).toInt(); - if (addSubItemWidgetType != eUBTGAddSubItemWidgetType_None) { - QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(widget); - newWidgetItem->setData(column, Qt::UserRole, eUBTGAddSubItemWidgetType_None); - newWidgetItem->setData(1, Qt::UserRole, eUBTGAddSubItemWidgetType_None); - newWidgetItem->setIcon(1, QIcon(":images/close.svg")); - - switch (addSubItemWidgetType) { - case eUBTGAddSubItemWidgetType_Action: { - UBTGActionWidget* actionWidget = new UBTGActionWidget(widget); - if (element) - actionWidget->initializeWithDom(*element); - mpTreeWidget->setItemWidget(newWidgetItem, 0, actionWidget); - break; - } - case eUBTGAddSubItemWidgetType_Media: { - UBTGMediaWidget* mediaWidget = new UBTGMediaWidget(widget); - if (element) - mediaWidget->initializeWithDom(*element); - mpTreeWidget->setItemWidget(newWidgetItem,0, mediaWidget); - break; - } - case eUBTGAddSubItemWidgetType_Url: { - UBTGUrlWidget* urlWidget = new UBTGUrlWidget(); - if (element) - urlWidget->initializeWithDom(*element); - mpTreeWidget->setItemWidget(newWidgetItem, 0, urlWidget); - break; - } - default: - delete newWidgetItem; - qCritical() << "onAddItemClicked no action set"; - return; - } - - if (addSubItemWidgetType != eUBTGAddSubItemWidgetType_None && !widget->isExpanded()) - widget->setExpanded(true); - else { - //to update the tree and subtrees - widget->setExpanded(false); - widget->setExpanded(true); - } - } - else if (column == 1 && addSubItemWidgetType == eUBTGAddSubItemWidgetType_None) { - UBTGMediaWidget* media = dynamic_cast(mpTreeWidget->itemWidget(widget, 0)); - if (media) - media->removeSource(); - int index = mpTreeWidget->currentIndex().row(); - QTreeWidgetItem* toBeDeletedWidgetItem = widget->parent()->takeChild(index); - delete toBeDeletedWidgetItem; - } -} - -bool UBTeacherGuideEditionWidget::isModified() -{ - bool result = false; - result |= mpPageTitle->text().length() > 0; - result |= mpComment->text().length() > 0; - result |= mpAddAnActionItem->childCount() > 0; - result |= mpAddAMediaItem->childCount() > 0; - result |= mpAddALinkItem->childCount() > 0; - return result; -} - -/*************************************************************************** - * class UBTeacherGuidePresentationWidget * - ***************************************************************************/ -typedef enum { - tUBTGActionAssociateOnClickItem_NONE, - tUBTGActionAssociateOnClickItem_URL, - tUBTGActionAssociateOnClickItem_MEDIA, - tUBTGActionAssociateOnClickItem_EXPAND -} tUBTGActionAssociateOnClickItem; - -typedef enum { - tUBTGTreeWidgetItemRole_HasAnAction = Qt::UserRole, - tUBTGTreeWidgetItemRole_HasAnUrl -} tUBTGTreeWidgetItemRole; - -UBTeacherGuidePresentationWidget::UBTeacherGuidePresentationWidget(QWidget *parent, const char *name) : - QWidget(parent) - , mpPageTitle(NULL) - , mpComment(NULL) - , mpLayout(NULL) - , mpButtonTitleLayout(NULL) - , mpDocumentTitle(NULL) - , mpPageNumberLabel(NULL) - , mpSeparator(NULL) - , mpModePushButton(NULL) - , mpTreeWidget(NULL) - , mpRootWidgetItem(NULL) - , mpMediaSwitchItem(NULL) -{ - setObjectName(name); - - mpLayout = new QVBoxLayout(this); - setLayout(mpLayout); - mpPageNumberLabel = new QLabel(this); - mpPageNumberLabel->setAlignment(Qt::AlignRight); - mpPageNumberLabel->setObjectName("UBTGPageNumberLabel"); - - mpLayout->addWidget(mpPageNumberLabel); - - mpButtonTitleLayout = new QHBoxLayout(0); - - mpModePushButton = new QPushButton(this); - mpModePushButton->setIcon(QIcon(":images/teacherGuide/pencil.svg")); - mpModePushButton->setMaximumWidth(32); - mpModePushButton->installEventFilter(this); - - connect(mpModePushButton, SIGNAL(clicked()), parentWidget(), SLOT(changeMode())); - mpButtonTitleLayout->addWidget(mpModePushButton); - - if (UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) { - mpDocumentTitle = new QLabel(this); - mpDocumentTitle->setObjectName("UBTGPresentationDocumentTitle"); - mpButtonTitleLayout->addWidget(mpDocumentTitle); - } - - mpLayout->addLayout(mpButtonTitleLayout); - - mpPageTitle = new UBTGAdaptableText(0, this); - mpPageTitle->setObjectName("UBTGPresentationPageTitle"); - mpPageTitle->setReadOnly(true); - mpPageTitle->setStyleSheet("background-color:transparent"); - mpLayout->addWidget(mpPageTitle); - - mpComment = new UBTGAdaptableText(0, this); - mpComment->setObjectName("UBTGPresentationComment"); - mpComment->setReadOnly(true); - mpComment->setStyleSheet("background-color:transparent"); - mpLayout->addWidget(mpComment); - - mpSeparator = new QFrame(this); - mpSeparator->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); - mpSeparator->setObjectName("UBTGSepartor"); - mpLayout->addWidget(mpSeparator); - - mpTreeWidget = new UBTGDraggableTreeItem(this); - mpLayout->addWidget(mpTreeWidget); - - mpRootWidgetItem = mpTreeWidget->invisibleRootItem(); - mpTreeWidget->setDragEnabled(true); - mpTreeWidget->setRootIsDecorated(false); - mpTreeWidget->setIndentation(0); - mpTreeWidget->setDropIndicatorShown(false); - mpTreeWidget->header()->close(); - mpTreeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - mpTreeWidget->setStyleSheet("selection-background-color:transparent; padding-bottom:5px; padding-top:5px; "); - mpTreeWidget->setIconSize(QSize(24,24)); - connect(mpTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(onAddItemClicked(QTreeWidgetItem*,int))); - connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged())); -#ifdef Q_WS_MAC - // on mac and with the custom qt the widget on the tree are not automatically relocated when using the vertical scrollbar. To relocate them we link the valueChange signal of the vertical scrollbar witht a local signal to trig a change and a repaint of the tree widget - connect(mpTreeWidget->verticalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(onSliderMoved(int))); -#endif -} - -UBTeacherGuidePresentationWidget::~UBTeacherGuidePresentationWidget() -{ - DELETEPTR(mpComment); - DELETEPTR(mpPageTitle); - DELETEPTR(mpPageNumberLabel); - DELETEPTR(mpSeparator); - DELETEPTR(mpMediaSwitchItem); - DELETEPTR(mpModePushButton); - DELETEPTR(mpDocumentTitle); - DELETEPTR(mpButtonTitleLayout); - DELETEPTR(mpTreeWidget); - DELETEPTR(mpLayout); -} - -#ifdef Q_WS_MAC -void UBTeacherGuidePresentationWidget::onSliderMoved(int size) -{ - Q_UNUSED(size); - if(mpMediaSwitchItem) - mpMediaSwitchItem->setExpanded(true); -} -#endif - -bool UBTeacherGuidePresentationWidget::eventFilter(QObject* object, QEvent* event) -{ - Q_UNUSED(object); - if (event->type() == QEvent::HoverEnter || event->type() == QEvent::HoverMove || event->type() == QEvent::HoverLeave) - return true; - return false; -} - -void UBTeacherGuidePresentationWidget::cleanData() -{ - mpPageTitle->showText(""); - mpComment->showText(""); - //tree clean - QList itemToRemove = mpRootWidgetItem->takeChildren(); - foreach(QTreeWidgetItem* eachItem, itemToRemove) { - DELETEPTR(eachItem); - } - // the mpMediaSwitchItem is deleted by the previous loop but the pointer is not set to zero - mpMediaSwitchItem = NULL; -} - -void UBTeacherGuidePresentationWidget::onActiveSceneChanged() -{ - cleanData(); - mpPageNumberLabel->setText(tr("Page: %0").arg(UBApplication::boardController->currentPage())); - UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument(); - if (mpDocumentTitle) - mpDocumentTitle->setText( documentProxy->metaData(UBSettings::sessionTitle).toString()); -} - -void UBTeacherGuidePresentationWidget::createMediaButtonItem() -{ - if (!mpMediaSwitchItem) { - mpMediaSwitchItem = new QTreeWidgetItem(mpRootWidgetItem); - mpMediaSwitchItem->setText(0, "+"); - mpMediaSwitchItem->setExpanded(false); - mpMediaSwitchItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_EXPAND); - mpMediaSwitchItem->setData(0, Qt::BackgroundRole, QVariant(QColor(200, 200, 200))); - mpMediaSwitchItem->setData(0, Qt::FontRole, QVariant(QFont(QApplication::font().family(), 16))); - mpMediaSwitchItem->setData(0, Qt::TextAlignmentRole, QVariant(Qt::AlignCenter)); - mpRootWidgetItem->addChild(mpMediaSwitchItem); - } -} - -void UBTeacherGuidePresentationWidget::showData( QVector data) -{ - cleanData(); - - foreach(tUBGEElementNode* element, data) { - if (element->name == "pageTitle") - mpPageTitle->showText(element->attributes.value("value")); - else if (element->name == "comment") - mpComment->showText(element->attributes.value("value")); - else if (element->name == "action") { - QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(mpRootWidgetItem); - newWidgetItem->setText(0, element->attributes.value("task")); - newWidgetItem->setFlags(Qt::ItemIsEnabled); - QString colorString = element->attributes.value("owner").toInt() == 0 ? "blue" : "green"; - UBTGAdaptableText* textWidget = new UBTGAdaptableText(newWidgetItem, 0); - textWidget->bottomMargin(14); - textWidget->setStyleSheet( "QWidget {background: #EEEEEE; border:none; color:" + colorString + ";}"); - textWidget->showText(element->attributes.value("task")); - textWidget->document()->setDefaultFont( QFont(QApplication::font().family(), 11)); - mpTreeWidget->setItemWidget(newWidgetItem, 0, textWidget); - - mpRootWidgetItem->addChild(newWidgetItem); - } - else if (element->name == "media") { - createMediaButtonItem(); - QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(mpMediaSwitchItem); - newWidgetItem->setIcon(0, QIcon( ":images/teacherGuide/" + element->attributes.value("mediaType") + "_24x24.svg")); - newWidgetItem->setText(0, element->attributes.value("title")); - newWidgetItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_MEDIA); - newWidgetItem->setData(0, Qt::FontRole, QVariant(QFont(QApplication::font().family(), 11))); - QString mimeTypeString; -#ifdef Q_WS_WIN - mimeTypeString = QUrl::fromLocalFile(UBApplication::boardController->selectedDocument()->persistencePath()+ "/" + element->attributes.value("relativePath")).toString(); -#else - mimeTypeString = UBApplication::boardController->selectedDocument()->persistencePath() + "/" + element->attributes.value("relativePath"); -#endif - newWidgetItem->setData(0, TG_USER_ROLE_MIME_TYPE, mimeTypeString); - newWidgetItem->setFlags( Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsSelectable); - mpRootWidgetItem->addChild(newWidgetItem); - - QTreeWidgetItem* mediaItem = new QTreeWidgetItem(newWidgetItem); - mediaItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_NONE); - qDebug() << element->attributes.value("mediaType"); - UBTGMediaWidget* mediaWidget = new UBTGMediaWidget(element->attributes.value("relativePath"), newWidgetItem,0,element->attributes.value("mediaType").contains("flash")); - newWidgetItem->setExpanded(false); - mpTreeWidget->setItemWidget(mediaItem, 0, mediaWidget); - } - else if (element->name == "link") { - createMediaButtonItem(); - QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem( mpMediaSwitchItem); - newWidgetItem->setIcon(0, QIcon(":images/teacherGuide/link_24x24.svg")); - newWidgetItem->setText(0, element->attributes.value("title")); - newWidgetItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_URL); - newWidgetItem->setData(0, tUBTGTreeWidgetItemRole_HasAnUrl, QVariant(element->attributes.value("url"))); - newWidgetItem->setData(0, Qt::FontRole, QVariant(QFont(QApplication::font().family(), 11))); - newWidgetItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); - mpRootWidgetItem->addChild(newWidgetItem); - } - } -} - -void UBTeacherGuidePresentationWidget::onAddItemClicked(QTreeWidgetItem* widget, int column) -{ - int associateAction = widget->data(column, tUBTGTreeWidgetItemRole_HasAnAction).toInt(); - if (column == 0 && associateAction != tUBTGActionAssociateOnClickItem_NONE) { - switch (associateAction) { - case tUBTGActionAssociateOnClickItem_EXPAND: - widget->setExpanded(!widget->isExpanded()); - if (widget->isExpanded()) - mpMediaSwitchItem->setText(0, "-"); - else - mpMediaSwitchItem->setText(0, "+"); - break; - case tUBTGActionAssociateOnClickItem_URL: - widget->data(column, tUBTGTreeWidgetItemRole_HasAnUrl).toString(); - UBApplication::webController->loadUrl( QUrl( widget->data(column, tUBTGTreeWidgetItemRole_HasAnUrl).toString())); - break; - case tUBTGActionAssociateOnClickItem_MEDIA: - widget->setExpanded(!widget->isExpanded()); - break; - default: - qDebug() << "associateAction no action set " << associateAction; - } - } -} - -/*************************************************************************** - * class UBTeacherGuidePageZeroWidget * - ***************************************************************************/ -UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, const char* name) : - QWidget(parent) - , mpLayout(NULL) - , mpButtonTitleLayout(NULL) - , mpContainerWidgetLayout(NULL) - , mpModePushButton(NULL) - , mpPageNumberLabel(NULL) - , mpScrollArea(NULL) - , mpContainerWidget(NULL) - , mpSessionTitle(NULL) - , mpSeparatorSessionTitle(NULL) - , mpAuthorsLabel(NULL) - , mpAuthors(NULL) - , mpSeparatorAuthors(NULL) - , mpCreationLabel(NULL) - , mpLastModifiedLabel(NULL) - , mpObjectivesLabel(NULL) - , mpObjectives(NULL) - , mpSeparatorObjectives(NULL) - , mpIndexLabel(NULL) - , mpKeywordsLabel(NULL) - , mpKeywords(NULL) - , mpSchoolLevelItemLabel(NULL) - , mpSchoolLevelBox(NULL) - , mpSchoolLevelValueLabel(NULL) - , mpSchoolSubjectsItemLabel(NULL) - , mpSchoolSubjectsBox(NULL) - , mpSchoolSubjectsValueLabel(NULL) - , mpSchoolTypeItemLabel(NULL) - , mpSchoolTypeBox(NULL) - , mpSchoolTypeValueLabel(NULL) - , mpSeparatorIndex(NULL) - , mpLicenceLabel(NULL) - , mpLicenceBox( NULL) - , mpLicenceIcon(NULL) - , mpLicenceLayout(NULL) - , mpSceneItemSessionTitle(NULL) -{ - setObjectName(name); - QString chapterStyle("QLabel {font-size:16px; font-weight:bold;}"); - mpLayout = new QVBoxLayout(0); - setLayout(mpLayout); - mpPageNumberLabel = new QLabel(this); - mpPageNumberLabel->setAlignment(Qt::AlignRight); - mpPageNumberLabel->setObjectName("UBTGPageNumberLabel"); - mpPageNumberLabel->setText(tr("Title page")); - mpLayout->addWidget(mpPageNumberLabel); - - mpScrollArea = new QScrollArea(); - mpScrollArea->setFocusPolicy(Qt::NoFocus); - mpContainerWidget = new QWidget(); - mpContainerWidget->setFocusPolicy(Qt::NoFocus); - mpContainerWidgetLayout = new QVBoxLayout(); - - mpLayout->addWidget(mpScrollArea); - mpScrollArea->setWidget(mpContainerWidget); - mpScrollArea->setWidgetResizable(true); - mpScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - mpContainerWidget->setLayout(mpContainerWidgetLayout); - - mpButtonTitleLayout = new QHBoxLayout(0); - - mpModePushButton = new QPushButton(this); - mpModePushButton->setIcon(QIcon(":images/teacherGuide/pencil.svg")); - mpModePushButton->setMaximumWidth(32); - mpModePushButton->installEventFilter(this); - mpButtonTitleLayout->addWidget(mpModePushButton); - connect(mpModePushButton, SIGNAL(clicked()), this, SLOT(switchToMode())); - - mpSessionTitle = new UBTGAdaptableText(0, this, "UBTGSessionTitle"); - mpSessionTitle->setPlaceHolderText(tr("Type session title here ...")); - mpSessionTitle->setMaximumLength(1000); - mpButtonTitleLayout->addWidget(mpSessionTitle); - connect(this, SIGNAL(resized()), mpSessionTitle, SLOT(onTextChanged())); - - mpContainerWidgetLayout->addLayout(mpButtonTitleLayout); - - mpSeparatorSessionTitle = new QFrame(this); - mpSeparatorSessionTitle->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); - mpSeparatorSessionTitle->setObjectName("UBTGSeparator"); - mpContainerWidgetLayout->addWidget(mpSeparatorSessionTitle); - - mpAuthorsLabel = new QLabel(this); - mpAuthorsLabel->setObjectName("UBTGZeroPageEditionModeTitle"); - mpAuthorsLabel->setText(tr("Author(s)")); - mpAuthorsLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpAuthorsLabel); - - mpAuthors = new UBTGAdaptableText(0, this); - mpAuthors->setObjectName("UBTGZeroPageInputText"); - mpAuthors->setPlaceHolderText(tr("Type authors here ...")); - mpContainerWidgetLayout->addWidget(mpAuthors); - connect(this, SIGNAL(resized()), mpAuthors, SLOT(onTextChanged())); - - mpCreationLabel = new QLabel(this); - mpCreationLabel->setObjectName("UBTGZeroPageDateLabel"); - mpContainerWidgetLayout->addWidget(mpCreationLabel); - - mpLastModifiedLabel = new QLabel(this); - mpLastModifiedLabel->setObjectName("UBTGZeroPageDateLabel"); - mpContainerWidgetLayout->addWidget(mpLastModifiedLabel); - - mpSeparatorAuthors = new QFrame(this); - mpSeparatorAuthors->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); - mpSeparatorAuthors->setObjectName("UBTGSeparator"); - mpContainerWidgetLayout->addWidget(mpSeparatorAuthors); - - mpObjectivesLabel = new QLabel(this); - mpObjectivesLabel->setObjectName("UBTGZeroPageEditionModeTitle"); - mpObjectivesLabel->setText(tr("Objective(s)")); - mpObjectivesLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpObjectivesLabel); - - mpObjectives = new UBTGAdaptableText(0, this); - mpObjectives->setObjectName("UBTGZeroPageInputText"); - mpObjectives->setPlaceHolderText(tr("Type objectives here...")); - mpContainerWidgetLayout->addWidget(mpObjectives); - connect(this, SIGNAL(resized()), mpObjectives, SLOT(onTextChanged())); - - mpSeparatorObjectives = new QFrame(this); - mpSeparatorObjectives->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); - mpSeparatorObjectives->setObjectName("UBTGSeparator"); - mpContainerWidgetLayout->addWidget(mpSeparatorObjectives); - - mpIndexLabel = new QLabel(this); - mpIndexLabel->setObjectName("UBTGZeroPageEditionModeTitle"); - mpIndexLabel->setText(tr("Resource indexing")); - mpIndexLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpIndexLabel); - - mpKeywordsLabel = new QLabel(this); - mpKeywordsLabel->setObjectName("UBTGZeroPageItemLabel"); - mpKeywordsLabel->setText(tr("Keywords:")); - mpKeywordsLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpKeywordsLabel); - mpKeywords = new UBTGAdaptableText(0, this); - mpKeywords->setPlaceHolderText(tr("Type keywords here ...")); - mpContainerWidgetLayout->addWidget(mpKeywords); - connect(this, SIGNAL(resized()), mpKeywords, SLOT(onTextChanged())); - - mpSchoolLevelItemLabel = new QLabel(this); - mpSchoolLevelItemLabel->setObjectName("UBTGZeroPageItemLabel"); - mpSchoolLevelItemLabel->setText(tr("Level:")); - mpSchoolLevelItemLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpSchoolLevelItemLabel); - mpSchoolLevelBox = new QComboBox(this); - mpSchoolLevelBox->setMinimumHeight(22); - mpSchoolLevelBox->setMinimumWidth(LOWER_RESIZE_WIDTH); - mpSchoolLevelBox->setObjectName("DockPaletteWidgetComboBox"); - connect(mpSchoolLevelBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(onSchoolLevelChanged(QString))); - mpContainerWidgetLayout->addWidget(mpSchoolLevelBox); - mpSchoolLevelValueLabel = new QLabel(this); - mpContainerWidgetLayout->addWidget(mpSchoolLevelValueLabel); - - mpSchoolSubjectsItemLabel = new QLabel(this); - mpSchoolSubjectsItemLabel->setObjectName("UBTGZeroPageItemLabel"); - mpSchoolSubjectsItemLabel->setText(tr("Subjects:")); - mpSchoolSubjectsItemLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpSchoolSubjectsItemLabel); - mpSchoolSubjectsBox = new QComboBox(this); - mpSchoolSubjectsBox->setMinimumHeight(22); - mpSchoolSubjectsBox->setMinimumWidth(LOWER_RESIZE_WIDTH); - mpSchoolSubjectsBox->setObjectName("DockPaletteWidgetComboBox"); - mpContainerWidgetLayout->addWidget(mpSchoolSubjectsBox); - mpSchoolSubjectsValueLabel = new QLabel(this); - mpContainerWidgetLayout->addWidget(mpSchoolSubjectsValueLabel); - - mpSchoolTypeItemLabel = new QLabel(this); - mpSchoolTypeItemLabel->setObjectName("UBTGZeroPageItemLabel"); - mpSchoolTypeItemLabel->setText(tr("Type:")); - mpSchoolTypeItemLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpSchoolTypeItemLabel); - mpSchoolTypeBox = new QComboBox(this); - mpSchoolTypeBox->setMinimumHeight(22); - mpSchoolTypeBox->setMinimumWidth(LOWER_RESIZE_WIDTH); - mpSchoolTypeBox->setObjectName("DockPaletteWidgetComboBox"); - mpContainerWidgetLayout->addWidget(mpSchoolTypeBox); - mpSchoolTypeValueLabel = new QLabel(this); - mpContainerWidgetLayout->addWidget(mpSchoolTypeValueLabel); - - mpSeparatorIndex = new QFrame(this); - mpSeparatorIndex->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); - mpSeparatorIndex->setObjectName("UBTGSeparator"); - mpContainerWidgetLayout->addWidget(mpSeparatorIndex); - - mpLicenceLabel = new QLabel(this); - mpLicenceLabel->setObjectName("UBTGZeroPageItemLabel"); - mpLicenceLabel->setText(tr("Licence")); - mpLicenceLabel->setStyleSheet(chapterStyle); - mpContainerWidgetLayout->addWidget(mpLicenceLabel); - mpLicenceBox = new QComboBox(this); - mpLicenceBox->setMinimumHeight(22); - mpLicenceBox->setMinimumWidth(LOWER_RESIZE_WIDTH); - mpLicenceBox->setObjectName("DockPaletteWidgetComboBox"); - mpContainerWidgetLayout->addWidget(mpLicenceBox); - mpLicenceLayout = new QHBoxLayout(0); - mpLicenceIcon = new QLabel(this); - mpLicenceIcon->setMinimumWidth(LOWER_RESIZE_WIDTH/2); - mpLicenceLayout->addWidget(mpLicenceIcon); - mpLicenceValueLabel = new QLabel(this); - mpLicenceValueLabel->setMinimumWidth(LOWER_RESIZE_WIDTH/2); - mpLicenceLayout->addWidget(mpLicenceValueLabel); - mpContainerWidgetLayout->addLayout(mpLicenceLayout); - mpContainerWidgetLayout->addStretch(1); - - connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged())); - fillComboBoxes(); -} - -UBTeacherGuidePageZeroWidget::~UBTeacherGuidePageZeroWidget() -{ - DELETEPTR(mpPageNumberLabel); - DELETEPTR(mpSessionTitle); - DELETEPTR(mpSeparatorSessionTitle); - DELETEPTR(mpAuthorsLabel); - DELETEPTR(mpAuthors); - DELETEPTR(mpSeparatorAuthors); - DELETEPTR(mpCreationLabel); - DELETEPTR(mpLastModifiedLabel); - DELETEPTR(mpObjectivesLabel); - DELETEPTR(mpObjectives); - DELETEPTR(mpSeparatorObjectives); - DELETEPTR(mpIndexLabel); - DELETEPTR(mpKeywordsLabel); - DELETEPTR(mpKeywords); - DELETEPTR(mpSchoolLevelItemLabel); - DELETEPTR(mpSchoolLevelBox); - DELETEPTR(mpSchoolSubjectsItemLabel); - DELETEPTR(mpSchoolSubjectsBox); - DELETEPTR(mpSchoolTypeItemLabel); - DELETEPTR(mpSchoolTypeBox); - DELETEPTR(mpSeparatorIndex); - DELETEPTR(mpLicenceLabel); - DELETEPTR(mpLicenceBox); - DELETEPTR(mpLicenceValueLabel); - DELETEPTR(mpLicenceIcon); - DELETEPTR(mpModePushButton); - DELETEPTR(mpLicenceLayout); - DELETEPTR(mpButtonTitleLayout); - DELETEPTR(mpContainerWidgetLayout); - DELETEPTR(mpContainerWidget); - DELETEPTR(mpScrollArea); - DELETEPTR(mpLayout); -} - -bool UBTeacherGuidePageZeroWidget::eventFilter(QObject* object, QEvent* event) -{ - Q_UNUSED(object); - if (event->type() == QEvent::HoverEnter || event->type() == QEvent::HoverMove || event->type() == QEvent::HoverLeave) - return true; - return false; -} - -void UBTeacherGuidePageZeroWidget::fillComboBoxes() -{ - QString parametersConfigFilePath = UBSettings::settings()->applicationCustomizationDirectory() + "/teacherGuide/indexingParameters.xml"; - QFile parametersFile(parametersConfigFilePath); - if (!parametersFile.exists()) { - qCritical() << "UBTeacherGuidePageZeroEditionWidget fillComboBoxes file not found " << parametersConfigFilePath; - return; - } - - parametersFile.open(QFile::ReadOnly); - - QDomDocument doc; - doc.setContent(parametersFile.readAll()); - QDomElement rootElement = doc.elementsByTagName("teacherGuide").at(0).toElement(); - - QDomNodeList subjects = rootElement.elementsByTagName("subjects"); - for (int baseLevelCounter = 0; baseLevelCounter < subjects.count(); baseLevelCounter += 1) { - QDomNode subjectsForBaseLevel = subjects.at(baseLevelCounter); - QDomNodeList subjectsList = subjectsForBaseLevel.childNodes(); - QStringList subjectsRelatedToBaseLevel; - for (int j = 0; j < subjectsList.count(); j += 1) { - subjectsRelatedToBaseLevel.append(subjectsList.at(j).toElement().attribute("label")); - } - mSubjects.insert( subjectsForBaseLevel.toElement().attribute("baseLevel"), subjectsRelatedToBaseLevel); - } - - QDomNodeList gradeLevels = rootElement.elementsByTagName("gradeLevels").at(0).childNodes(); - for (int i = 0; i < gradeLevels.count(); i += 1) { - mGradeLevelsMap.insert(gradeLevels.at(i).toElement().attribute("label"), gradeLevels.at(i).toElement().attribute("baseLevel")); - mpSchoolLevelBox->addItem( gradeLevels.at(i).toElement().attribute("label")); - } - - QDomNodeList types = rootElement.elementsByTagName("types").at(0).childNodes(); - for (int i = 0; i < types.count(); i += 1) - mpSchoolTypeBox->addItem(types.at(i).toElement().attribute("label")); - - parametersFile.close(); - - QStringList licences; - licences << tr("Attribution-ShareAlike CC BY-SA") - << tr("Attribution CC BY") - << tr("Attribution-NoDerivs CC BY-ND") - << tr("Attribution-NonCommercial CC BY-NC") - << tr("Attribution-NonCommercial-NoDerivs CC BY-NC-ND") - << tr("Attribution-NonCommercial-ShareAlike CC BY-NC-SA") - << tr("Public domain") - << tr("Copyright"); - mpLicenceBox->addItems(licences); - QStringList licenceIconList; - licenceIconList << ":images/licenses/ccbysa.png" - << ":images/licenses/ccby.png" - << ":images/licenses/ccbynd.png" - << ":images/licenses/ccbync.png" - << ":images/licenses/ccbyncnd.png" - << ":images/licenses/ccbyncsa.png"; - for (int i = 0; i < licenceIconList.count(); i += 1) - mpLicenceBox->setItemData(i, licenceIconList.at(i)); -} - -void UBTeacherGuidePageZeroWidget::onSchoolLevelChanged(QString schoolLevel) -{ - QStringList subjects = mSubjects.value(mGradeLevelsMap.value(schoolLevel)); - mpSchoolSubjectsBox->clear(); - if (subjects.count()) { - mpSchoolSubjectsItemLabel->setEnabled(true); - mpSchoolSubjectsBox->setEnabled(true); - mpSchoolSubjectsBox->addItems(subjects); - } - else { - mpSchoolSubjectsItemLabel->setDisabled(true); - mpSchoolSubjectsBox->setDisabled(true); - } -} - -void UBTeacherGuidePageZeroWidget::onActiveSceneChanged() -{ - UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument(); - if (documentProxy && UBApplication::boardController->currentPage() == 0) { - QDateTime creationDate = documentProxy->documentDate(); - mpCreationLabel->setText( tr("Created the:\n") + creationDate.toString(Qt::DefaultLocaleShortDate)); - QDateTime updatedDate = documentProxy->lastUpdate(); - mpLastModifiedLabel->setText( tr("Updated the:\n") + updatedDate.toString(Qt::DefaultLocaleShortDate)); - loadData(); - updateSceneTitle(); - } -} - -void UBTeacherGuidePageZeroWidget::hideEvent(QHideEvent * event) -{ - persistData(); - QWidget::hideEvent(event); -} - -void UBTeacherGuidePageZeroWidget::loadData() -{ - UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument(); - mpSessionTitle->setText( documentProxy->metaData(UBSettings::sessionTitle).toString()); - mpAuthors->setText( documentProxy->metaData(UBSettings::sessionAuthors).toString()); - mpObjectives->setText( documentProxy->metaData(UBSettings::sessionObjectives).toString()); - mpKeywords->setText( documentProxy->metaData(UBSettings::sessionKeywords).toString()); - - int currentIndex = mpSchoolLevelBox->findText(documentProxy->metaData(UBSettings::sessionGradeLevel).toString()); - mpSchoolLevelBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0); - - currentIndex = mpSchoolSubjectsBox->findText(documentProxy->metaData(UBSettings::sessionSubjects).toString()); - mpSchoolSubjectsBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0); - - currentIndex = mpSchoolTypeBox->findText(documentProxy->metaData(UBSettings::sessionType).toString()); - mpSchoolTypeBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0); - - currentIndex = documentProxy->metaData(UBSettings::sessionLicence).toInt(); - mpLicenceBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0); -} - -void UBTeacherGuidePageZeroWidget::persistData() -{ - // check necessary because at document closing hide event is send after boardcontroller set - // to NULL - if (UBApplication::boardController) { - UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument(); - documentProxy->setMetaData(UBSettings::sessionTitle, mpSessionTitle->text()); - documentProxy->setMetaData(UBSettings::sessionAuthors, mpAuthors->text()); - documentProxy->setMetaData(UBSettings::sessionObjectives, mpObjectives->text()); - documentProxy->setMetaData(UBSettings::sessionKeywords, mpKeywords->text()); - documentProxy->setMetaData(UBSettings::sessionGradeLevel, mpSchoolLevelBox->currentText()); - documentProxy->setMetaData(UBSettings::sessionSubjects, mpSchoolSubjectsBox->currentText()); - documentProxy->setMetaData(UBSettings::sessionType, mpSchoolTypeBox->currentText()); - documentProxy->setMetaData(UBSettings::sessionLicence, mpLicenceBox->currentIndex()); - } -} - -void UBTeacherGuidePageZeroWidget::updateSceneTitle() -{ - QString sessionTitle = mpSessionTitle->text(); - if (!sessionTitle.isEmpty()) - UBApplication::boardController->activeScene()->textForObjectName(mpSessionTitle->text()); -} - -void UBTeacherGuidePageZeroWidget::switchToMode(tUBTGZeroPageMode mode) -{ - if (mode == tUBTGZeroPageMode_EDITION) { - QString inputStyleSheet("QTextEdit { background: white; border-radius: 10px; border: 2px;}"); - mpModePushButton->hide(); - mpSessionTitle->setReadOnly(false); - mpSessionTitle->managePlaceholder(true); - mpSessionTitle->setStyleSheet(inputStyleSheet); - QFont titleFont(QApplication::font().family(), 11, -1); - mpSessionTitle->document()->setDefaultFont(titleFont); - mpAuthors->setReadOnly(false); - mpAuthors->managePlaceholder(false); - mpAuthors->setStyleSheet(inputStyleSheet); - mpObjectives->setReadOnly(false); - mpObjectives->managePlaceholder(false); - mpObjectives->setStyleSheet(inputStyleSheet); - mpKeywords->setReadOnly(false); - mpKeywords->managePlaceholder(false); - mpKeywords->setStyleSheet(inputStyleSheet); - mpSchoolLevelValueLabel->hide(); - mpSchoolLevelBox->show(); - mpSchoolSubjectsValueLabel->hide(); - mpSchoolSubjectsBox->show(); - mpSchoolTypeValueLabel->hide(); - mpSchoolTypeBox->show(); - mpLicenceIcon->hide(); - mpLicenceValueLabel->hide(); - mpLicenceBox->show(); - } - else { - QString inputStyleSheet( "QTextEdit { background: transparent; border: none;}"); - mpModePushButton->show(); - mpSessionTitle->showText(mpSessionTitle->text()); - mpSessionTitle->setStyleSheet(inputStyleSheet); - updateSceneTitle(); - QFont titleFont(QApplication::font().family(), 14, 1); - mpSessionTitle->document()->setDefaultFont(titleFont); - mpAuthors->setStyleSheet(inputStyleSheet); - mpAuthors->setTextColor(QColor(Qt::black)); - mpAuthors->showText(mpAuthors->text()); - mpObjectives->setStyleSheet(inputStyleSheet); - mpObjectives->setTextColor(QColor(Qt::black)); - mpObjectives->showText(mpObjectives->text()); - mpKeywords->setStyleSheet(inputStyleSheet); - mpKeywords->setTextColor(QColor(Qt::black)); - mpKeywords->showText(mpKeywords->text()); - mpSchoolLevelValueLabel->setText(mpSchoolLevelBox->currentText()); - mpSchoolLevelValueLabel->show(); - mpSchoolLevelBox->hide(); - mpSchoolSubjectsValueLabel->setText(mpSchoolSubjectsBox->currentText()); - mpSchoolSubjectsValueLabel->show(); - mpSchoolSubjectsBox->hide(); - mpSchoolTypeValueLabel->setText(mpSchoolTypeBox->currentText()); - mpSchoolTypeValueLabel->show(); - mpSchoolTypeBox->hide(); - mpLicenceValueLabel->setText(mpLicenceBox->currentText()); - QString licenceIconPath = mpLicenceBox->itemData(mpLicenceBox->currentIndex()).toString(); - if (!licenceIconPath.isEmpty()) { - mpLicenceIcon->setPixmap(QPixmap(licenceIconPath)); - mpLicenceIcon->show(); - } - mpLicenceValueLabel->show(); - mpLicenceBox->hide(); - persistData(); - } - update(); -} - -QVector UBTeacherGuidePageZeroWidget::getData() -{ - QVector result; - tUBGEElementNode* elementNode = new tUBGEElementNode(); - elementNode->name = "sessionTitle"; - elementNode->attributes.insert("value", mpSessionTitle->text()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "authors"; - elementNode->attributes.insert("value", mpAuthors->text()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "creationDate"; - elementNode->attributes.insert("value", mpCreationLabel->text()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "lastModifiedDate"; - elementNode->attributes.insert("value", mpLastModifiedLabel->text()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "goals"; - elementNode->attributes.insert("value", mpObjectives->text()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "keywords"; - elementNode->attributes.insert("value", mpKeywords->text()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "schoolLevel"; - elementNode->attributes.insert("value", mpSchoolLevelBox->currentText()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "schoolBranch"; - elementNode->attributes.insert("value", mpSchoolSubjectsBox->currentText()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "schoolType"; - elementNode->attributes.insert("value", mpSchoolTypeBox->currentText()); - result << elementNode; - - elementNode = new tUBGEElementNode(); - elementNode->name = "licence"; - elementNode->attributes.insert("value", QString("%1").arg(mpLicenceBox->currentIndex())); - result << elementNode; - return result; -} - -bool UBTeacherGuidePageZeroWidget::isModified() -{ - bool result = false; - result |= mpSessionTitle->text().length() > 0; - result |= mpAuthors->text().length() > 0; - result |= mpObjectives->text().length() > 0; - result |= mpKeywords->text().length() > 0; - result |= mpSchoolLevelBox->currentIndex() > 0; - result |= mpSchoolSubjectsBox->currentIndex() > 0; - result |= mpSchoolTypeBox->currentIndex() > 0; - result |= mpLicenceBox->currentIndex() > 0; - return result; -} - -void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev) -{ - emit resized(); - QWidget::resizeEvent(ev); -} - -/*************************************************************************** - * class UBTeacherGuideWidget * - ***************************************************************************/ -UBTeacherGuideWidget::UBTeacherGuideWidget(QWidget* parent, const char* name) : - QStackedWidget(parent) - , mpPageZeroWidget(NULL) - , mpEditionWidget(NULL) - , mpPresentationWidget(NULL) - , mKeyboardActionFired(false) -{ - setObjectName(name); - if (UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) { - mpPageZeroWidget = new UBTeacherGuidePageZeroWidget(this); - addWidget(mpPageZeroWidget); - } - if (UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()) { - mpEditionWidget = new UBTeacherGuideEditionWidget(this); - addWidget(mpEditionWidget); - mpPresentationWidget = new UBTeacherGuidePresentationWidget(this); - addWidget(mpPresentationWidget); - } - - connect(UBApplication::boardController->controlView(), SIGNAL(clickOnBoard()), this, SLOT(showPresentationMode())); - connectToStylusPalette(); - connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged())); -} - -UBTeacherGuideWidget::~UBTeacherGuideWidget() -{ - DELETEPTR(mpPageZeroWidget); - DELETEPTR(mpEditionWidget); - DELETEPTR(mpPresentationWidget); -} - -void UBTeacherGuideWidget::onActiveSceneChanged() -{ - if (UBApplication::boardController->currentPage() == 0) { - if(mpPageZeroWidget->isModified()) - mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_PRESENTATION); - else - mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_EDITION); - - setCurrentWidget(mpPageZeroWidget); - } - else{ - if(mpEditionWidget->isModified()){ - mCurrentData = mpEditionWidget->getData(); - mpPresentationWidget->showData(mCurrentData); - setCurrentWidget(mpPresentationWidget); - } - else - setCurrentWidget(mpEditionWidget); - } - -} - -void UBTeacherGuideWidget::onTriggeredAction(bool checked) -{ - Q_UNUSED(checked); - if(!mKeyboardActionFired) - showPresentationMode(); - mKeyboardActionFired=false; -} - -void UBTeacherGuideWidget::onTriggeredKeyboardAction(bool checked) -{ - Q_UNUSED(checked); - mKeyboardActionFired = true; -} - -void UBTeacherGuideWidget::connectToStylusPalette() -{ - connect(UBApplication::mainWindow->actionPen, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionEraser, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionMarker, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionPointer, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionPlay, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionZoomIn, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionZoomOut, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionCapture, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionHand, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionLine, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionText, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool))); - connect(UBApplication::mainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(onTriggeredKeyboardAction(bool))); -} - -void UBTeacherGuideWidget::showPresentationMode() -{ - if (currentWidget() == mpPageZeroWidget) { - mCurrentData = mpPageZeroWidget->getData(); - mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_PRESENTATION); - } - else if (currentWidget() == mpEditionWidget) { - mCurrentData = mpEditionWidget->getData(); - mpPresentationWidget->showData(mCurrentData); - setCurrentWidget(mpPresentationWidget); - } -} - -void UBTeacherGuideWidget::changeMode() -{ - if (currentWidget() == mpEditionWidget) - setCurrentWidget(mpPresentationWidget); - else - setCurrentWidget(mpEditionWidget); - -} - -bool UBTeacherGuideWidget::isModified() -{ - if (currentWidget() == mpPageZeroWidget) - return mpPageZeroWidget->isModified(); - else - return mpEditionWidget->isModified(); -} - diff --git a/src/gui/UBTeacherGuideWidget.h b/src/gui/UBTeacherGuideWidget.h deleted file mode 100644 index 5c445cec..00000000 --- a/src/gui/UBTeacherGuideWidget.h +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBTEACHERGUIDEWIDGET_H -#define UBTEACHERGUIDEWIDGET_H - -class QTreeWidget; -class QHeaderView; -class QLabel; -class QVBoxLayout; -class QPushButton; -class UBDocumentProxy; -class UBGraphicsTextItem; -class QScrollArea; - -#include "UBTeacherGuideWidgetsTools.h" - -#include "interfaces/IDataStorage.h" - -typedef enum -{ - tUBTGZeroPageMode_EDITION, - tUBTGZeroPageMode_PRESENTATION -}tUBTGZeroPageMode; - -#define LOWER_RESIZE_WIDTH 50 - -/*************************************************************************** - * class UBTeacherGuideEditionWidget * - ***************************************************************************/ -class UBTeacherGuideEditionWidget : public QWidget , public IDataStorage -{ - Q_OBJECT -public: - explicit UBTeacherGuideEditionWidget(QWidget* parent = 0, const char* name="UBTeacherGuideEditionWidget"); - ~UBTeacherGuideEditionWidget(); - void cleanData(); - QVector getData(); - - void load(QString element); - QVector save(int pageIndex); - - bool isModified(); - -public slots: - void onAddItemClicked(QTreeWidgetItem* widget, int column, QDomElement* element = 0); - void onActiveSceneChanged(); - void showEvent(QShowEvent* event); - -private: - QList getChildrenList(QTreeWidgetItem* widgetItem); - QVector getPageAndCommentData(); - - QVBoxLayout* mpLayout; - QLabel* mpDocumentTitle; - QLabel* mpPageNumberLabel; - UBTGAdaptableText* mpPageTitle; - UBTGAdaptableText* mpComment; - QFrame* mpSeparator; - QTreeWidget* mpTreeWidget; - QTreeWidgetItem* mpRootWidgetItem; - UBAddItem* mpAddAnActionItem; - UBAddItem* mpAddAMediaItem; - UBAddItem* mpAddALinkItem; - -private slots: - void onActiveDocumentChanged(); -#ifdef Q_WS_MACX - void onSliderMoved(int size); -#endif -}; - - -/*************************************************************************** - * class UBTeacherGuidePresentationWidget * - ***************************************************************************/ -class UBTeacherGuidePresentationWidget : public QWidget -{ - Q_OBJECT -public: - explicit UBTeacherGuidePresentationWidget(QWidget* parent, const char* name = "UBTeacherGuidePresentationName"); - ~UBTeacherGuidePresentationWidget(); - void showData(QVectordata); - void cleanData(); - -public slots: - void onAddItemClicked(QTreeWidgetItem* widget, int column); - void onActiveSceneChanged(); - -private: - bool eventFilter(QObject* object, QEvent* event); - - void createMediaButtonItem(); - - UBTGAdaptableText* mpPageTitle; - UBTGAdaptableText* mpComment; - QVBoxLayout* mpLayout; - QHBoxLayout* mpButtonTitleLayout; - QLabel* mpDocumentTitle; - QLabel* mpPageNumberLabel; - QFrame* mpSeparator; - QPushButton* mpModePushButton; - UBTGDraggableTreeItem* mpTreeWidget; - QTreeWidgetItem* mpRootWidgetItem; - QTreeWidgetItem* mpMediaSwitchItem; - - -#ifdef Q_WS_MACX -private slots: - void onSliderMoved(int size); -#endif - -}; - -/*************************************************************************** - * class UBTeacherGuidePageZeroWidget * - ***************************************************************************/ -class UBTeacherGuidePageZeroWidget : public QWidget -{ - Q_OBJECT - -public: - explicit UBTeacherGuidePageZeroWidget(QWidget* parent, const char* name = "UBTeacherGuidePageZeroEditionWidget"); - ~UBTeacherGuidePageZeroWidget(); - - QVector getData(); - bool isModified(); - -signals: - void resized(); - -public slots: - void onActiveSceneChanged(); - void switchToMode(tUBTGZeroPageMode mode = tUBTGZeroPageMode_EDITION); - -protected: - void resizeEvent(QResizeEvent* ev); - -private: - void fillComboBoxes(); - void loadData(); - void hideEvent(QHideEvent* event); - bool eventFilter(QObject* object, QEvent* event); - void updateSceneTitle(); - - QVBoxLayout* mpLayout; - QHBoxLayout* mpButtonTitleLayout; - QVBoxLayout* mpContainerWidgetLayout; - QPushButton* mpModePushButton; - QLabel* mpPageNumberLabel; - - QScrollArea* mpScrollArea; - QWidget* mpContainerWidget; - - UBTGAdaptableText* mpSessionTitle; - QFrame* mpSeparatorSessionTitle; - - QLabel* mpAuthorsLabel; - UBTGAdaptableText* mpAuthors; - QFrame* mpSeparatorAuthors; - - QLabel* mpCreationLabel; - QLabel* mpLastModifiedLabel; - QLabel* mpObjectivesLabel; - UBTGAdaptableText* mpObjectives; - QFrame* mpSeparatorObjectives; - - QLabel* mpIndexLabel; - QLabel* mpKeywordsLabel; - UBTGAdaptableText* mpKeywords; - - QLabel* mpSchoolLevelItemLabel; - QComboBox* mpSchoolLevelBox; - QLabel* mpSchoolLevelValueLabel; - - QLabel* mpSchoolSubjectsItemLabel; - QComboBox* mpSchoolSubjectsBox; - QLabel* mpSchoolSubjectsValueLabel; - - QLabel* mpSchoolTypeItemLabel; - QComboBox* mpSchoolTypeBox; - QLabel* mpSchoolTypeValueLabel; - QFrame* mpSeparatorIndex; - - QLabel* mpLicenceLabel; - QComboBox* mpLicenceBox; - QLabel* mpLicenceValueLabel; - QLabel* mpLicenceIcon; - QHBoxLayout* mpLicenceLayout; - - UBGraphicsTextItem* mpSceneItemSessionTitle; - - QMap mGradeLevelsMap; - QMap mSubjects; - -private slots: - void onSchoolLevelChanged(QString schoolLevel); - void persistData(); -}; - -/*************************************************************************** - * class UBTeacherGuideWidget * - ***************************************************************************/ - -class UBTeacherGuideWidget : public QStackedWidget -{ - Q_OBJECT -public: - explicit UBTeacherGuideWidget(QWidget* parent = 0, const char* name="UBTeacherGuideWidget"); - ~UBTeacherGuideWidget(); - - bool isModified(); - -public slots: - void changeMode(); - void showPresentationMode(); - void connectToStylusPalette(); - void onActiveSceneChanged(); - -private: - UBTeacherGuidePageZeroWidget* mpPageZeroWidget; - UBTeacherGuideEditionWidget* mpEditionWidget; - UBTeacherGuidePresentationWidget* mpPresentationWidget; - QVectormCurrentData; - bool mKeyboardActionFired; - -private slots: - void onTriggeredAction(bool checked); - void onTriggeredKeyboardAction(bool checked); -}; - -#endif // UBTEACHERGUIDEWIDGET_H diff --git a/src/gui/UBTeacherGuideWidgetsTools.cpp b/src/gui/UBTeacherGuideWidgetsTools.cpp deleted file mode 100644 index 87c0c722..00000000 --- a/src/gui/UBTeacherGuideWidgetsTools.cpp +++ /dev/null @@ -1,724 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "UBTeacherGuideWidgetsTools.h" - -#include "core/UBPersistenceManager.h" -#include "core/UBApplication.h" - -#include "board/UBBoardController.h" - -#include "domain/UBGraphicsWidgetItem.h" - -#include "globals/UBGlobals.h" - -#include "frameworks/UBFileSystemUtils.h" - -#include "customWidgets/UBMediaWidget.h" - -#include "core/memcheck.h" - - -/*************************************************************************** - * class UBAddItem * - ***************************************************************************/ -UBAddItem::UBAddItem(const QString &string, int addSubItemWidgetType, QTreeWidget* parent): QTreeWidgetItem(parent) -{ - setIcon(0,QIcon(":images/increase.svg")); - setText(0,string); - setData(0,Qt::UserRole,QVariant(addSubItemWidgetType)); - setData(1,Qt::UserRole,QVariant(addSubItemWidgetType)); - setData(0,Qt::BackgroundRole,QVariant(QColor(200,200,200))); - setData(1,Qt::BackgroundRole,QVariant(QColor(200,200,200))); - setData(0,Qt::FontRole,QVariant(QFont(QApplication::font().family(),12))); -} - -UBAddItem::~UBAddItem() -{ - //NOOP -} - -/*************************************************************************** - * class UBTGActionWidget * - ***************************************************************************/ -UBTGActionWidget::UBTGActionWidget(QTreeWidgetItem* widget, QWidget* parent, const char* name) : QWidget(parent) - , mpLayout(NULL) - , mpOwner(NULL) - , mpTask(NULL) -{ - setObjectName(name); - SET_STYLE_SHEET(); - mpLayout = new QVBoxLayout(this); - mpOwner = new QComboBox(this); - mpOwner->setObjectName("DockPaletteWidgetComboBox"); - mpOwner->setMinimumHeight(22); - QStringList qslOwner; - qslOwner << tr("Teacher") << tr("Student"); - mpOwner->insertItems(0,qslOwner); - mpOwner->setCurrentIndex(0); - mpTask = new UBTGAdaptableText(widget,this); - mpTask->setPlaceHolderText(tr("Type task here ...")); - mpTask->setAcceptRichText(true); - mpTask->setObjectName("ActionWidgetTaskTextEdit"); - mpLayout->addWidget(mpOwner); - mpLayout->addWidget(mpTask); -} - -UBTGActionWidget::~UBTGActionWidget() -{ - DELETEPTR(mpOwner); - DELETEPTR(mpTask); - DELETEPTR(mpLayout); -} - -void UBTGActionWidget::initializeWithDom(QDomElement element) -{ - mpOwner->setCurrentIndex(element.attribute("owner").toInt()); - mpTask->setInitialText(element.attribute("task")); -} - -tUBGEElementNode* UBTGActionWidget::saveData() -{ - tUBGEElementNode* result = new tUBGEElementNode(); - result->name = "action"; - result->attributes.insert("owner",QString("%0").arg(mpOwner->currentIndex())); - result->attributes.insert("task",mpTask->text()); - return result; -} - -/*************************************************************************** - * class UBTGAdaptableText * - ***************************************************************************/ -UBTGAdaptableText::UBTGAdaptableText(QTreeWidgetItem* widget, QWidget* parent, const char* name):QTextEdit(parent) - , mBottomMargin(5) - , mpTreeWidgetItem(widget) - , mMinimumHeight(0) - , mHasPlaceHolder(false) - , mIsUpdatingSize(false) - , mMaximumLength(0) -{ - setObjectName(name); - connect(this,SIGNAL(textChanged()),this,SLOT(onTextChanged())); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - mMinimumHeight = document()->size().height() + mBottomMargin; - setMinimumHeight(mMinimumHeight); - -} - -void UBTGAdaptableText::setMaximumLength(int length) -{ - mMaximumLength = length; -} - -void UBTGAdaptableText::setPlaceHolderText(QString text) -{ - mHasPlaceHolder = true; - - // the space addition is to make this string unique and check against it to know - // if we are talking about a typed string or the placeholder string - mPlaceHolderText = text + " "; - setPlainText(mPlaceHolderText); -} - -void UBTGAdaptableText::keyReleaseEvent(QKeyEvent* e) -{ - QTextEdit::keyReleaseEvent(e); - - if(mMaximumLength && toPlainText().length()>mMaximumLength){ - setPlainText(toPlainText().left(mMaximumLength)); - QTextCursor tc(document()); - tc.setPosition(mMaximumLength); - setTextCursor(tc); - } -} - -void UBTGAdaptableText::showEvent(QShowEvent* e) -{ - Q_UNUSED(e); - if(!mIsUpdatingSize && !hasFocus() && mHasPlaceHolder && toPlainText().isEmpty() && !isReadOnly()){ - setTextColor(QColor(Qt::lightGray)); - setPlainText(mPlaceHolderText); - } - else - // If the teacherguide is collapsed, don't updated the size. Or set the size as the expanded size - onTextChanged(); -} - -QString UBTGAdaptableText::text() -{ - QString result = toPlainText(); - if(mHasPlaceHolder && result == mPlaceHolderText) - return ""; - - return result; -} - -void UBTGAdaptableText::onTextChanged() -{ - qreal documentSize = document()->size().height(); - if(height() == documentSize + mBottomMargin){ - return; - } - mIsUpdatingSize = true; - - - if(documentSize < mMinimumHeight){ - setFixedHeight(mMinimumHeight); - } - else{ - setFixedHeight(documentSize+mBottomMargin); - } - - updateGeometry(); - //to trig a resize on the tree widget item - if(mpTreeWidgetItem){ - mpTreeWidgetItem->setDisabled(true); - mpTreeWidgetItem->setExpanded(true); - mpTreeWidgetItem->setDisabled(false); - setFocus(); - } - mIsUpdatingSize = false; -} - -void UBTGAdaptableText::setInitialText(const QString& text) -{ - setText(text); - setReadOnly(false); - onTextChanged(); -} - -void UBTGAdaptableText::resetText() -{ - if(mHasPlaceHolder && !mPlaceHolderText.isEmpty()){ - setTextColor(QColor(Qt::lightGray)); - setText(mPlaceHolderText); - } - else{ - setText(""); - setTextColor(QColor(Qt::black)); - } - onTextChanged(); -} - -void UBTGAdaptableText::showText(const QString & text) -{ - setText(text); - setReadOnly(true); - onTextChanged(); -} - -void UBTGAdaptableText::bottomMargin(int newValue) -{ - mBottomMargin = newValue; - onTextChanged(); -} - -void UBTGAdaptableText::focusInEvent(QFocusEvent* e) -{ - if(isReadOnly()){ - e->ignore(); - } - managePlaceholder(true); - QTextEdit::focusInEvent(e); -} - -void UBTGAdaptableText::focusOutEvent(QFocusEvent* e) -{ - managePlaceholder(false); - QTextEdit::focusOutEvent(e); -} - -void UBTGAdaptableText::insertFromMimeData(const QMimeData *source) -{ - QMimeData editedMimeData; - QTextDocument textDoc; - QString plainText; - - if (source->hasHtml()) - { - textDoc.setHtml(source->html()); - plainText += textDoc.toPlainText(); - } - if (source->hasText()) - if (textDoc.toPlainText() != source->text()) - plainText += source->text(); - if (source->hasUrls()) - { - foreach(QUrl url, source->urls()) - { - plainText += url.toString(); - } - } - - editedMimeData.setText(plainText); - QTextEdit::insertFromMimeData(&editedMimeData); -} - -void UBTGAdaptableText::managePlaceholder(bool focus) -{ - if(focus){ - if(toPlainText() == mPlaceHolderText){ - setTextColor(QColor(Qt::black)); - setPlainText(""); - setCursorToTheEnd(); - } - } - else{ - if(toPlainText().isEmpty()){ - setTextColor(QColor(Qt::lightGray)); - setPlainText(mPlaceHolderText); - } - } -} - -void UBTGAdaptableText::setCursorToTheEnd() -{ - QTextDocument* doc = document(); - if(NULL != doc){ - QTextBlock block = doc->lastBlock(); - QTextCursor cursor(doc); - cursor.setPosition(block.position() + block.length() - 1); - setTextCursor(cursor); - } -} - -/*************************************************************************** - * class UBTGDraggableWeb * - ***************************************************************************/ -UBDraggableWeb::UBDraggableWeb(QString& relativePath, QWidget* parent): QWebView(parent) - , mDragStartPosition(QPoint(-1,-1)) - , mDragStarted(false) - -{ - if(!relativePath.startsWith("file://")) - mRelativePath = QUrl::fromLocalFile(relativePath).toString(); - else - mRelativePath = relativePath; - //NOOP -} - -void UBDraggableWeb::mousePressEvent(QMouseEvent* event) -{ - mDragStartPosition = event->pos(); - mDragStarted = true; - QWebView::mousePressEvent(event); -} - -void UBDraggableWeb::mouseReleaseEvent(QMouseEvent* event) -{ - mDragStarted = false; - QWebView::mouseReleaseEvent(event); -} - -void UBDraggableWeb::mouseMoveEvent(QMouseEvent* event) -{ - if(mDragStarted && (event->pos() - mDragStartPosition).manhattanLength() > QApplication::startDragDistance()){ - QDrag *drag = new QDrag(this); - QMimeData *mimeData = new QMimeData; - QList urlList; - urlList << QUrl(mRelativePath); - mimeData->setUrls(urlList); - drag->setMimeData(mimeData); - - drag->exec(); - event->accept(); - mDragStarted = false; - } - else - QWebView::mouseMoveEvent(event); - -} - -/*************************************************************************** - * class UBTGMediaWidget * - ***************************************************************************/ -UBTGMediaWidget::UBTGMediaWidget(QTreeWidgetItem* widget, QWidget* parent,const char* name): QStackedWidget(parent) - , mpTreeWidgetItem(widget) - , mpDropMeWidget(NULL) - , mpWorkWidget(NULL) - , mpLayout(NULL) - , mpMediaLayout(NULL) - , mpTitle(NULL) - , mpMediaLabelWidget(NULL) - , mpMediaWidget(NULL) - , mpWebView(NULL) - , mMediaPath(QString("")) - , mIsPresentationMode(false) - , mIsInitializationMode(false) - , mMediaWidgetHeight(150) -{ - setObjectName(name); - mpDropMeWidget = new QLabel(); - mpDropMeWidget->setObjectName("UBTGMediaDropMeLabel"); - mpDropMeWidget->setText(tr("drop media here ...")); - mpDropMeWidget->setAlignment(Qt::AlignCenter); - setAcceptDrops(true); - addWidget(mpDropMeWidget); - - setMinimumHeight(250); -} - -UBTGMediaWidget::UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget, QWidget* parent,bool forceFlashMediaType,const char* name): QStackedWidget(parent) - , mpTreeWidgetItem(widget) - , mpDropMeWidget(NULL) - , mpWorkWidget(NULL) - , mpLayout(NULL) - , mpMediaLayout(NULL) - , mpTitle(NULL) - , mpMediaLabelWidget(NULL) - , mpMediaWidget(NULL) - , mpWebView(NULL) - , mIsPresentationMode(true) - , mMediaType("") - , mIsInitializationMode(false) - , mMediaWidgetHeight(150) -{ - setObjectName(name); - mMediaPath = UBApplication::boardController->selectedDocument()->persistencePath()+ "/" + mediaPath; - setAcceptDrops(false); - createWorkWidget(forceFlashMediaType); - setFixedHeight(200); -} - -UBTGMediaWidget::~UBTGMediaWidget() -{ - DELETEPTR(mpTitle); - DELETEPTR(mpMediaLabelWidget); - DELETEPTR(mpMediaWidget); - DELETEPTR(mpWebView); - DELETEPTR(mpMediaLayout); - DELETEPTR(mpLayout); - - removeWidget(mpDropMeWidget); - DELETEPTR(mpDropMeWidget); - removeWidget(mpWorkWidget); - DELETEPTR(mpWorkWidget); -} - -void UBTGMediaWidget::initializeWithDom(QDomElement element) -{ - mIsInitializationMode = true; - setAcceptDrops(false); - mMediaPath = UBApplication::boardController->selectedDocument()->persistencePath() + "/" + element.attribute("relativePath"); - createWorkWidget(element.attribute("mediaType").contains("flash")); - setFixedHeight(200); - mpTitle->setInitialText(element.attribute("title")); - mIsInitializationMode = false; -} - -void UBTGMediaWidget::removeSource() -{ - QFileInfo fileInfo(mMediaPath); - if(fileInfo.isFile()) - QFile(mMediaPath).remove(); - else - UBFileSystemUtils::deleteDir(mMediaPath); -} - -void UBTGMediaWidget::hideEvent(QHideEvent* event) -{ - if(mpWebView) - mpWebView->page()->mainFrame()->setContent(UBGraphicsW3CWidgetItem::freezedWidgetPage().toAscii()); - QWidget::hideEvent(event); -} - -void UBTGMediaWidget::showEvent(QShowEvent* event) -{ - QWidget::showEvent(event); - if(mpWebView){ - QString indexPath = mMediaPath+"/index.htm"; - if(!QFile::exists(indexPath)) - indexPath += "l"; - mpWebView->load(QUrl::fromLocalFile(indexPath)); - } -} - -tUBGEElementNode* UBTGMediaWidget::saveData() -{ - if(!mpTitle) - return 0; - tUBGEElementNode* result = new tUBGEElementNode(); - QString relativePath = mMediaPath; - relativePath = relativePath.replace(UBApplication::boardController->selectedDocument()->persistencePath()+"/",""); - result->name = "media"; - result->attributes.insert("title",mpTitle->text()); - result->attributes.insert("relativePath",relativePath); - result->attributes.insert("mediaType",mMediaType); - return result; -} - -void UBTGMediaWidget::dragEnterEvent(QDragEnterEvent *event) -{ - event->accept(); -} - -void UBTGMediaWidget::createWorkWidget(bool forceFlashMediaType) -{ - QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(mMediaPath); - bool setMedia = true; - UBDocumentProxy* proxyDocument = UBApplication::boardController->selectedDocument(); - if(mimeType.contains("audio") || mimeType.contains("video")){ - mMediaType = mimeType.contains("audio")? "audio":"movie"; - mpMediaWidget = new UBMediaWidget(mimeType.contains("audio")?eMediaType_Audio:eMediaType_Video); - if(mIsPresentationMode || mIsInitializationMode){ - mpMediaWidget->setFile(mMediaPath); - } - else{ - mMediaPath = UBPersistenceManager::persistenceManager()->addObjectToTeacherGuideDirectory(proxyDocument, mMediaPath); - mpMediaWidget->setFile(mMediaPath); - } - } - else if(mimeType.contains("image")){ - mMediaType = "image"; - if(!(mIsPresentationMode || mIsInitializationMode)) - mMediaPath = UBPersistenceManager::persistenceManager()->addObjectToTeacherGuideDirectory(proxyDocument, mMediaPath); - - mpMediaLabelWidget = new QLabel(); - QPixmap pixmap = QPixmap(mMediaPath); - pixmap = pixmap.scaledToHeight(mMediaWidgetHeight); - mpMediaLabelWidget->setPixmap(pixmap); - } - else if(mimeType.contains("widget") && !forceFlashMediaType){ - mMediaType = "w3c"; - if(!(mIsPresentationMode || mIsInitializationMode)){ - mMediaPath = UBPersistenceManager::persistenceManager()->addWidgetToTeacherGuideDirectory(proxyDocument, mMediaPath); - } - mpWebView = new UBDraggableWeb(mMediaPath); - mpWebView->setAcceptDrops(false); - mpWebView->settings()->setAttribute(QWebSettings::JavaEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::PluginsEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true); - mpWebView->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true); - QString indexPath = mMediaPath+"/index.htm"; - if(!QFile::exists(indexPath)) - indexPath += "l"; - mpWebView->load(QUrl::fromLocalFile(indexPath)); - } - else if(mimeType.contains("x-shockwave-flash") || forceFlashMediaType){ - mMediaType = "flash"; - if(!(mIsPresentationMode || mIsInitializationMode)){ - QDir baseW3CDirectory(UBPersistenceManager::persistenceManager()->teacherGuideAbsoluteObjectPath(proxyDocument)); - mMediaPath = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(mMediaPath,baseW3CDirectory,mimeType,QSize(100,100),QUuid::createUuid()); - } - qDebug() << mMediaPath; - mpWebView = new UBDraggableWeb(mMediaPath); - mpWebView->setAcceptDrops(false); - mpWebView->settings()->setAttribute(QWebSettings::JavaEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::PluginsEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); - mpWebView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true); - mpWebView->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true); - QString indexPath = mMediaPath+"/index.htm"; - if(!QFile::exists(indexPath)) - indexPath += "l"; - mpWebView->load(QUrl::fromLocalFile(indexPath)); - } - else{ - qDebug() << "createWorkWidget mime type not handled" << mimeType; - setMedia=false; - } - - if(setMedia){ - setAcceptDrops(false); - mpWorkWidget = new QWidget(this); - if(!mIsPresentationMode){ - mpLayout = new QVBoxLayout(mpWorkWidget); - mpTitle = new UBTGAdaptableText(mpTreeWidgetItem,mpWorkWidget); - mpTitle->setPlaceHolderText(tr("Type title here...")); - mpLayout->addWidget(mpTitle); - mpMediaLayout = new QHBoxLayout; - mpLayout->addLayout(mpMediaLayout); - mpWorkWidget->setLayout(mpLayout); - } - else{ - mpMediaLayout = new QHBoxLayout(mpWorkWidget); - mpWorkWidget->setLayout(mpMediaLayout); - } - - mpMediaLayout->addStretch(1); - - if(mpMediaLabelWidget){ - mpMediaLabelWidget->setFixedHeight(mMediaWidgetHeight); - mpMediaLabelWidget->setParent(mpWorkWidget); - mpMediaLayout->addWidget(mpMediaLabelWidget); - } - else if (mpMediaWidget){ - mpMediaWidget->setFixedHeight(mMediaWidgetHeight); - mpMediaWidget->setParent(mpWorkWidget); - mpMediaLayout->addWidget(mpMediaWidget); - } - else if (mpWebView){ - mpWebView->setFixedHeight(mMediaWidgetHeight); - mpWebView->setParent(mpWorkWidget); - mpMediaLayout->addWidget(mpWebView); - mpWebView->show(); - } - mpMediaLayout->addStretch(1); - addWidget(mpWorkWidget); - setCurrentWidget(mpWorkWidget); - mpWorkWidget->show(); - - } -} - -void UBTGMediaWidget::parseMimeData(const QMimeData* pMimeData) -{ - if(pMimeData){ - if(pMimeData->hasText()){ - mMediaPath = QUrl::fromLocalFile(pMimeData->text()).toString(); - } - else if(pMimeData->hasUrls()){ - mMediaPath = pMimeData->urls().at(0).toString(); - } - else if(pMimeData->hasImage()){ - qDebug() << "Not yet implemented"; - } - } - else - qDebug() << "No mime data present"; - - createWorkWidget(); -} - -void UBTGMediaWidget::dropEvent(QDropEvent* event) -{ - parseMimeData(event->mimeData()); - event->accept(); -} - -void UBTGMediaWidget::mousePressEvent(QMouseEvent *event) -{ - if (!mIsPresentationMode) - event->ignore(); - else{ - QDrag *drag = new QDrag(this); - QMimeData *mimeData = new QMimeData(); - QList urlList; -#ifdef Q_WS_WIN - urlList << QUrl::fromLocalFile(mMediaPath); -#else - urlList << QUrl(mMediaPath); -#endif - mimeData->setUrls(urlList); - drag->setMimeData(mimeData); - - drag->exec(); - event->accept(); - } -} - - - -/*************************************************************************** - * class UBTGUrlWidget * - ***************************************************************************/ -UBTGUrlWidget::UBTGUrlWidget(QWidget* parent, const char* name ):QWidget(parent) - , mpLayout(NULL) - , mpTitle(NULL) - , mpUrl(NULL) -{ - setObjectName(name); - SET_STYLE_SHEET(); - mpLayout = new QVBoxLayout(this); - setLayout(mpLayout); - mpTitle = new QLineEdit(this); - mpTitle->setObjectName("UBTGLineEdit"); - mpTitle->setPlaceholderText(tr("Insert link title here...")); - mpUrl = new QLineEdit(this); - connect(mpUrl,SIGNAL(editingFinished()),this,SLOT(onUrlEditionFinished())); - mpUrl->setObjectName("UBTGLineEdit"); - mpUrl->setPlaceholderText("http://"); - mpLayout->addWidget(mpTitle); - mpLayout->addWidget(mpUrl); -} - -UBTGUrlWidget::~UBTGUrlWidget() -{ - DELETEPTR(mpTitle); - DELETEPTR(mpUrl); - DELETEPTR(mpLayout); -} - -void UBTGUrlWidget::onUrlEditionFinished() -{ - QString url = mpUrl->text(); - if(url.length() && !url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("ftp://") && !url.startsWith("sftp://") && !url.startsWith("http://")){ - mpUrl->setText("http://" + mpUrl->text()); - setFocus(); - } -} - -void UBTGUrlWidget::initializeWithDom(QDomElement element) -{ - mpTitle->setText(element.attribute("title")); - mpUrl->setText(element.attribute("url")); -} - -tUBGEElementNode* UBTGUrlWidget::saveData() -{ - tUBGEElementNode* result = new tUBGEElementNode(); - result->name = "link"; - result->attributes.insert("title",mpTitle->text()); - result->attributes.insert("url",mpUrl->text()); - return result; -} - - -/*************************************************************************** - * class UBTGDraggableTreeItem * - ***************************************************************************/ -UBTGDraggableTreeItem::UBTGDraggableTreeItem(QWidget* parent, const char* name) : QTreeWidget(parent) -{ - setObjectName(name); -} - -QMimeData* UBTGDraggableTreeItem::mimeData(const QList items) const -{ - QMimeData* result = new QMimeData(); - QList urls; - urls << QUrl(items.at(0)->data(0,TG_USER_ROLE_MIME_TYPE).toString()); - result->setUrls(urls); - return result; -} diff --git a/src/gui/UBTeacherGuideWidgetsTools.h b/src/gui/UBTeacherGuideWidgetsTools.h deleted file mode 100644 index ba944ddd..00000000 --- a/src/gui/UBTeacherGuideWidgetsTools.h +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBTEACHERGUIDEWIDGETSTOOLS_H -#define UBTEACHERGUIDEWIDGETSTOOLS_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "customWidgets/UBMediaWidget.h" - -#define TG_USER_ROLE_MIME_TYPE (Qt::UserRole+50) - - -class QTreeWidget; -class QVBoxLayout; -class QComboBox; -class QTextEdit; -class QWidget; -class UBTGAdaptableText; -class QDomElement; -class UBMediaWidget; - -typedef struct -{ - QString name; - QMap attributes; -}tUBGEElementNode; - - -class iUBTGSaveData -{ -public: - virtual tUBGEElementNode* saveData() = 0; -}; - - -class UBAddItem : public QTreeWidgetItem -{ -public: - explicit UBAddItem(const QString &strings, int addSubItemWidgetType, QTreeWidget* parent = 0); - ~UBAddItem(); - -signals: - -public slots: -}; - -class UBTGActionWidget : public QWidget, public iUBTGSaveData -{ - Q_OBJECT - -public: - explicit UBTGActionWidget(QTreeWidgetItem* widget, QWidget* parent = 0,const char* name = "UBTGActionWidget"); - ~UBTGActionWidget(); - void update(); - tUBGEElementNode* saveData(); - void initializeWithDom(QDomElement element); - -private: - QVBoxLayout* mpLayout; - QComboBox* mpOwner; - UBTGAdaptableText* mpTask; - -protected: - QTreeWidgetItem* mpTreeWidgetItem; -}; - - -class UBTGAdaptableText : public QTextEdit -{ - Q_OBJECT -public: - explicit UBTGAdaptableText(QTreeWidgetItem* widget = 0, QWidget *parent = 0, const char* name = "UBTGAdaptableText"); - void showText(const QString & text); - void resetText(); - void bottomMargin(int newValue); - void setPlaceHolderText(QString text); - QString text(); - void setInitialText(const QString& text); - void setMaximumLength(int length); - void managePlaceholder(bool focus); - -public slots: - void onTextChanged(); - -protected: - void keyReleaseEvent(QKeyEvent* e); - void showEvent(QShowEvent* e); - void focusInEvent(QFocusEvent* e); - void focusOutEvent(QFocusEvent* e); - virtual void insertFromMimeData(const QMimeData *source); - -private: - void setCursorToTheEnd(); - int mBottomMargin; - QTreeWidgetItem* mpTreeWidgetItem; - int mMinimumHeight; - bool mHasPlaceHolder; - QString mPlaceHolderText; - bool mIsUpdatingSize; - int mMaximumLength; -}; - - -class UBDraggableWeb : public QWebView -{ - Q_OBJECT -public: - explicit UBDraggableWeb(QString& relativePath, QWidget* parent = 0); - -private: - void mousePressEvent(QMouseEvent* event); - void mouseMoveEvent(QMouseEvent* event); - void mouseReleaseEvent(QMouseEvent* event); - - QString mRelativePath; - QPoint mDragStartPosition; - bool mDragStarted; -}; - -class UBTGMediaWidget : public QStackedWidget , public iUBTGSaveData -{ - Q_OBJECT -public: - UBTGMediaWidget(QTreeWidgetItem* widget = 0, QWidget* parent = 0, const char* name = "UBTGMediaWidget"); - UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget = 0, QWidget* parent = 0, bool forceFlashMediaType = false, const char *name = "UBTGMediaWidget"); - ~UBTGMediaWidget(); - tUBGEElementNode* saveData(); - void initializeWithDom(QDomElement element); - void removeSource(); - -protected: - void dragEnterEvent(QDragEnterEvent* event); - void dropEvent(QDropEvent* event); - void mousePressEvent(QMouseEvent* event); - void hideEvent(QHideEvent* event); - void showEvent(QShowEvent* event); - -private: - void parseMimeData(const QMimeData* pMimeData); - void createWorkWidget(bool forceFlashMediaType = false); - void updateSize(); - - QTreeWidgetItem* mpTreeWidgetItem; - QLabel* mpDropMeWidget; - QWidget* mpWorkWidget; - QVBoxLayout* mpLayout; - QHBoxLayout* mpMediaLayout; - UBTGAdaptableText* mpTitle; - QLabel* mpMediaLabelWidget; - UBMediaWidget* mpMediaWidget; - UBDraggableWeb* mpWebView; - QString mMediaPath; - bool mIsPresentationMode; - QString mMediaType; - bool mIsInitializationMode; - int mMediaWidgetHeight; -}; - - -class UBTGUrlWidget : public QWidget , public iUBTGSaveData -{ - Q_OBJECT -public: - UBTGUrlWidget(QWidget* parent = 0, const char* name = "UBTGUrlWidget"); - ~UBTGUrlWidget(); - tUBGEElementNode* saveData(); - void initializeWithDom(QDomElement element); - -public slots: - void onUrlEditionFinished(); - -private: - QVBoxLayout* mpLayout; - QLineEdit* mpTitle; - QLineEdit* mpUrl; -}; - -class UBTGDraggableTreeItem : public QTreeWidget -{ - Q_OBJECT -public: - UBTGDraggableTreeItem(QWidget* parent = 0, const char* name = "UBTGDraggableTreeItem"); - -private: - QMimeData* mimeData(const QList items) const; -}; - -#endif // UBTEACHERGUIDEWIDGETSTOOLS_H diff --git a/src/gui/gui.pri b/src/gui/gui.pri index 56f457ad..50d2fdfe 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -40,9 +40,6 @@ HEADERS += src/gui/UBThumbnailView.h \ src/gui/UBDockDownloadWidget.h \ src/gui/UBFeaturesWidget.h \ src/gui/UBFeaturesActionBar.h \ - src/gui/UBDockTeacherGuideWidget.h \ - src/gui/UBTeacherGuideWidget.h \ - src/gui/UBTeacherGuideWidgetsTools.h \ src/gui/UBMessagesDialog.h SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBFloatingPalette.cpp \ @@ -86,9 +83,6 @@ SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBDockDownloadWidget.cpp \ src/gui/UBFeaturesWidget.cpp \ src/gui/UBFeaturesActionBar.cpp \ - src/gui/UBDockTeacherGuideWidget.cpp \ - src/gui/UBTeacherGuideWidget.cpp \ - src/gui/UBTeacherGuideWidgetsTools.cpp \ src/gui/UBMessagesDialog.cpp win32:SOURCES += src/gui/UBKeyboardPalette_win.cpp macx:SOURCES += src/gui/UBKeyboardPalette_mac.cpp diff --git a/src/interfaces/IDataStorage.h b/src/interfaces/IDataStorage.h deleted file mode 100644 index 35921dbc..00000000 --- a/src/interfaces/IDataStorage.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef IDATASTORAGE_H -#define IDATASTORAGE_H - -#include -#include - -typedef enum -{ - eElementType_START, - eElementType_END, - eElementType_UNIQUE -}eElementType; - -typedef struct -{ - QString name; - QMap attributes; - eElementType type; -}tIDataStorage; - -class IDataStorage -{ -public: - //virtual void load(QString element) = 0; - virtual QVectorsave(int pageIndex) = 0 ; -}; -#endif // IDATASTORAGE_H diff --git a/src/interfaces/interfaces.pri b/src/interfaces/interfaces.pri deleted file mode 100644 index bac61bda..00000000 --- a/src/interfaces/interfaces.pri +++ /dev/null @@ -1,2 +0,0 @@ -HEADERS += \ - src/interfaces/IDataStorage.h From 71d182ce504ae78b5f90ab33b9ab021c08d4c4d6 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 24 May 2013 12:55:38 +0200 Subject: [PATCH 04/24] restored fonts with a compatible license --- resources/customizations/fonts/AndBasR.ttf | Bin 0 -> 250908 bytes resources/customizations/fonts/ec_cour.ttf | Bin 0 -> 51076 bytes resources/customizations/fonts/ecl_cour.ttf | Bin 0 -> 71020 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 resources/customizations/fonts/AndBasR.ttf create mode 100644 resources/customizations/fonts/ec_cour.ttf create mode 100644 resources/customizations/fonts/ecl_cour.ttf diff --git a/resources/customizations/fonts/AndBasR.ttf b/resources/customizations/fonts/AndBasR.ttf new file mode 100755 index 0000000000000000000000000000000000000000..d785cc9df5d995453f3b09819fe96b2b05029c5a GIT binary patch literal 250908 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%0DHbO~WNV3a=DEl?lon6&3t-cd@%^q@ZW^ysNu8!* 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 z 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

6r9Q60f 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%0Ag$kO4;1x+xQXNxl;6BKX!Q`EKRwlEBLp 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ଋ}=TJLMl zwn@U`Y68Fy)mi1k{Y=>l2^|U9yq#Wuz`H8oQ(ESQmO7W(ywQ@uX?=5g7Ic#OZfc3$ zmSuAk*vfsY!X4gl7wJgVB&Jf=)qm zqaZ324m7X#H~X3~0 z9F%vP!al`TUrP&aNJ_j-q{RLv$&i3QxVpoSmYaaQt*s;IkNSN;=EcwgNx|fOZb&(`P zU%b%GP;fQSVgmWo3{mySoV_)pYqp{D9i=%6}?gTt8v3mo?2U~cHq_efzq)G<|x`h1-4rat3h|9sR_Ym-zrr~dx|)sbxCg)Kr&snrdDqdj9CqJ z3%7a65{9Xm%%!1-iOe9ywFQ0aZN6ZqKO71YmsMw-9nscMIG(YpixK~77&lk~YRE@9 zjPBL2lx>uc`kGpU@Nxm$`mmoQ2?Er}gM*7e9P3*{kU%hIzO+&&P$dbd@zgG zKv3bTu5ufrqlP?XM21&TR9IFYdI$m#!NDv^3l0{66XDf9=`V6HD=t zCPAReks@Y5yg=p3Y`{DtT9YO!N;WOt=0^aiT${FX%{I+ZvV&3B$1E@WDIyl%hNxls zT07dj!7KzD%`&KJMTYD$_y=~9*?}_%huXt_if-CKBnF5H-sX#EmNM%g!t~}L5UcBGn&I306eIe5hzMzbQ{&Lsu#`_O)FX6`Nc)!xDoOU z^O7&6(V=Yu7zy75mQVyp{(|gvJ8Hp3kt!&6NZnRGG;g|$YzUGF*F(E^+8R19Nj|(z2y~h$jH#GU$<*@cPtqq3O zBa&LJSRS*47~64l^hGndY!Y)E(P0%{q7)Iuc?2Z2B42SQp^Ms#k^e}L`GNfJ`=J)=mg=N8zd=nC@X0u##dDE#4zO_;zuW}>i>O2mcR+gqIz;U zRZfb+^!!f~g^&`)lOnzjXaq^3Gvr6C-(px=Irz2tF-&zV1joRa=-m}{u1aUc5>G9# zFZ9^TtE=j5b=Bqd%bc|yTSc9%rnb7V!tHTm?q7%Nj7;0Iiu#4s4fQra)Ha)+dzzKAuv13u#ix{JkwTQQC~$k%YoEst8v!WSGXD~owc@_hT59yIuCHT zfwroms=OAhc$Rq32_SM+*DSBCSg^1@6P4;wm}#r8b-F!EoVANHiNb1hxz;8@vOy(q z*gTC?xo)AeveJgTgVSP2YzwO^-2gB1fP5$BnTj6tTyike=5{V|E}$+LhzU%0!DIok zYJsQ9Q|qk6YC(<1RY4i>uADCztMY?0u!Q)I?vJu6ada>0zz2mk+g$oC;oSl zeyA>2p^Jp4zPc7nsHINSE~}{XWZImy6?G(p^4jVpzztD=N4RZk01E*LHB;o0Sg4Hd zB`O4bNNUeg`L#|*R?4`X9xfFZh@WGkz|ivUW(8oqz7mjHWznCPA% z!~S6U;uy(4CjqNTT_PSoXr|tgyu$b;>9t9^*P<-MTJY~zYfkppfT4DS;1B6UHF!gE zAPG-FYLtA7O8v6o{0pz-UKICz(D84k>o&Fub-o_e-$bXr85N{=U(L5~s@LCEpQk41 z!c@@a1#e0Jr)nyv$`L)7rQw``G**w%qBO%CA9Ye2q8Lr2)g(m)5s>3S)1rGIo5ZZ3Il0BaeWnjRejPELl(wZq_IK0^ukJcK_%IdRrr^9ZrU=c zMfS^y4;Bz?6gHb=_f2$q7Dgi3Nki^^*%Gq8Sx62XQ$X$cKuZ|oleB<1qU=*)3`Y&@ zp9fSefkmuD&d?{Kel_|OeOul5c!Rt&37{Z%?hHUs-Y(R)86s%$RFlsHA+ zDgb^H&&aM(BH0q>+W}2FOI}D(LJ}gW60fPIl0L!Ppl621YR8=rTZ7Uj)Qw2ZF=*%j z)^=H!uo^ux>ypRvX}rq2`GA@3hb1n960g*0Wr<0@O${O43WAFr_*H$TyF_`L>^<36 z;sklQc+FB2D%v}7pKuda>KW0bu9QU}-YCmV_modmyd;l6?GtawJ~T<6YV?m}N}hvs zg7llD(u!-sPdaaEc^g_FE)s9)j>6e4VU^7f%ev&<<262{c}jP)WBNuTk6Kf@LG2i0 zlPEHzkT@!-)p)uUe-zanz)o}#|A@yO$g6QnCGnOgv0tj6N-h+ctU^s?T}&=3`$BPo zO==;@k|;JQCGHuz9R!a^lgJv79vhxb^{EZzq|3xb;)k+9#0j%!L@{x<32>?(MvFly zC(;9=mFx`ZjnZ~Q+DeDWzLLxpcc@pSCuEHjk0@TCd(HSW%Ff3Nr3bUnr!cUZeM_`# z#0R?90=i6(W9W@Bo|SxwcBNlbi`q_%@hG}ABD>zaHKc9u_NzG3H=kAOB%!|QD?YZO zH{>sf$6={minE546@Q6(;w|Zf(y#cKns`TjG)Dq)pi7Qe!+IoYdOW>^dmZHGmpn4< zpRz#ldP7*ru2Kye(`tmqQ$jk}m;WaYgiwn#+US`V^tGc`M7hFi^n+lVK#@s{X(Nr^ zQ%tS2))>pCep8=Gi_{(JSAP;P?S&gYsT{MQDx`X(YUJvqHOWA^Vdv|Ri`TsjU?y&~ zAd&qsdScK-(lUJs#U&&~f;(5DDn2!8y3kVZncPB@(TJzErU47h>b@TL)#xIhptOiQ zAo1OZ=@nO%#fbnX*>FQglspX^9&b04H4gzkj2g|)F#)OI;lx*VZ zuLc&HkrVgSoVrnBHfFT_(Qasi5rwGu!k7iC2&I4RG-3dXK4{KFaSiF7k~8@)qP@3Q z`ZjtP-`6E*&4|JkXTM%w4LS8?E0w0w9m68ioRnHIY(PlbPJ$o}C$B|!NDB>*(gA%` z(GhuX1Hxt-2^fO5K_|!$sPRftSEUry(6~d}64szoaX(%{6u~5NIuYipv_Op+8kaQw zs2!y-6b&eAOrucAQ1wd5%7`vaZm8Jje41fcT(ZYLcpw}84Z;hNwWK~6x*RWAr{o)P zBP>@x`m%fmcSsVX-K!;j<=LnO)gy{6RhjbLt8qo%m|9ikG@ghH6uXi~41mJ*xJQw! z8k33x@jg$@;3z&IX)3v?F+iH%ThA2-4EgoXE0Y5?@Da6`!BoIA&@7&Ogj%U^$-Mg< z-%%rJr8#9pazjz3EGo%}IH+W(I6!pLm?2FtV{oNKN+)Qg%_r|05>&oFvF{;ZC96al zVQ2-#^<+oXj5Sd+`|mwbqFPch5nUVcZC-HRyAS(6_c7Vy3$}p7s;z7&UZUx@4tP!Utf00N09aGZ%)#m#*wBe zjr%t95903mW*`)`)7Xt4eM)1D5vt-wWwX^fgPL(E9Zp=$SJ5-sMDm5kI3c}KR;9l< zpCVDBfNB^VBAqbifXY)R>ZlP95}l-LS@@+@67m?N!9ILZki4ZC*Ag#UF@8u>f`BKE zlczRUs;HN0Jz2%eO8=C08e>e&49E`=U;Timwv>E{lLYPS6Fb=-qLx~uUqu_~WV0MI z#%$7P&**`oVwJ>9F#u_i*(>5R$w>7*ac&;M9imOekw!a-d{*-|ii8O-jaTxxisOmV zma?(oxbc&#tq0A!zG{?yo3Wx=H0@C>=%OB-?^#Iv+(XT0h&#kfn$MALk}WX(HA#=O zPWh<5y@iKfW%X zm6bGG>6_Ce3&Rc>uxgFs+l?SIKFv?io&KdrTqC*A7&7O-N*aAdQv|Op=2y*-6lT%{ zl7-R>YNfAvCTRmnoJNVVj9+IhgIX~7Oe_1Ur9@5auf=%$hK9w@ANup1YPIJ74{K!o z>x8LA^|4t_6`t1^YhlLon!ch8C21N{M`U$kUT5nzhv>O6CsoyW_FTbeP0)=JdhSnm=zfN@WXq7RXA1$>AaN-iwSXhs%K=Nc=?Q+7yjl$S zD&QjR^{`828y;XItkr0ba4$h=C4Q+*f}af)K9dvVB?&tw*~Coy0k!)QMDse`|5K0u(l&7F|(k z1Ac1&SBF}P4x);vrFGRR@T6A$F2H@FKuJRJissNYXqzAwfUbH;1+_%IBS_*(J?=Zv zSE^5~E|#T=GU5qInP@SwkpHK)6&=KX`u4k_1JwUY{1IlVOS*C{B{tlv1{AeR*vs&% zxKDhe=b1{g6n~V=O&uh<-Drm>rkga?Rws;xti6@~0M!brMs` z)F#nv&_h~F+GLCc0~?JpqJ!EYS<@Bar;$LKR1J>OJ!2HA7F2B;XjfXOdPVgTxoeCT z1J0;-J`1668EsR`2Cc*!dcI9kBnp+iATE40-fTpB@%yV1*UHb`XGQ(2Z1nr0@*N9b zRwUYm*9n^aUc7*a9nq0;ysYJ`4|n(~X@|bI2^((%>g`9Ld9R@z8+@Da4vo!2yX9j5 zm9(v%Hvg-=r_H_y-igFEXtNxf{8ynK-nsIbh4P)C2wo_NVt2K#&E;+PN4)`CmEOUM z_tauVSpi>5G^;ffT5C3IQX@N4i8p=}aq^PhILoRwq02(iXs8V@%7pzb^`Ul^G4L<% zg}M^0;T59L+FJQ;DCP7HUTo}b4`GXPsGYWU$2d^ehHb&JXE8XuZh~INK^EC=sHBN-vf#@TotOq264H0j1~ioDHKgCvShf}C8q@RNRXBm)P_L{ zM4NE893^TKT0H`d4%Df{9h$(<0(Fy|ln{g}A>5Sft6l>ps%pYZivem{;{i2l`QTg( zm4H%3EXi4VY?dXlhA;`Ekga!b`{E6?tt3+kdT4os9x57~Gw)VQ zuF~QXg*xZrE<$Ei6#rY|89hd=zM_rKrC8Umv4s8FHj6Zdsz1WL8Li z&|;D)&j_#)pIiIT{`k7pQk%@0^x&7cVd&erV<)~gO+DyAv00xM0BD4e&XT;^zoPv* z^kV~HjVVPHuGLcHxmwWIh>WME4(-yS1GQ~(f_f6}g9=kFG=0eewQ2)iU;ICp3-Ptr zpth-j-@Ja{8@JwD%hk5P-nw^ws@HwvR^$6j*5KQ7tm_-sCOIeCbv5c~A;?_vJGaMG z(7`Iyq$wr-(`UM$?M6)9$A35*iq43llVWf(624iH!cuWIQyNY(9E4fK5PUIV7`{G{ zjxPX=#Fwf@Gn_4iuM>>L7uPPv_ddq6OQ3oaFrS>rCb7xb?>rTII;P_rW-}4fW?=<* z7WQh}v5ztrd-n6O%d(Ia;d3G-Y&M(2=CXNgJ}Z?Gt&0mpp5=1RRKYEn5mh2Cra4y) zBKTSum3qX&jfm7Q#q4SY`wqK|UCypxE7_Ik>?*K?j6@3@6RoVTfmsWH1+=2lj(tJ2 zR!7gvJ26Z)z(8+g-(^>^O>8s!9^1mUvTf{YoR4)ayAEI6*v@va8`w^^i`~d}vzyo+ zwwHCYo7p~m@bwmatME27r?E5^4 z{eT^3KV&D^!|W0EBX*Mg3wspbI6TE3!uj4eYH`sr&H`(vmTkOBs+w2eA ziZ8XN@&P=J59EXRU_OKo<-_=Jo{q22kL08HXnp}7!!P7x`9=IC44rY!{_pOd_FJb zPF}`c+|50_oG;)Dc?G^@v6xr#CA%khDX zmHbNX<*RrTZ{|MU!dLTF?q@xG4Zc^hmIrtn53(~n#Ln_|zK(}^ghzP?@8s+8LHZ56 zi+#X1^6&Di_$KxjzL|fIZ{b_{Hhwj~hF{CCu@Za)R`M>km_I$NX>n6ZS{`cm65=2mg%!FaMnXlfA>g z;9v67{0#5mX9W{n2!T&4iDZE4e7#RxG{j1r^81!9c2 zP>dB9iHpTJe3#-9VG|QXhL|WOiOFJ$m@1};>0*YMDKbTt$QH9ij<5@d$Q60`Qhk9a z6h)#~l!)14j+iUviTR>bI7OLo3AgZwaX|pMU7Z0YDJx>7Y*zq z(I}R&{}z{u}G;!ol|_BZwk`#bxT{eyib{w&@Xe-R&uzlsmVe~XXA|FHMP z$Kr47f5a!^@8VPO5Am7!U-7y4r}#pADNc(sqDP#?fk_zET z^lSGx-TF5_ORlDa)Kk?jE7W+(HAH!=Qkh*9 zmD$ZAO+cARKv}Ma%GFRgc9$o`i&w32bOGVcvAfIVufrkR%CURwY2Gm2q4zf7v=rTZ zuKu+v(0uz)ue=@O(NHhmXYTaHu19*C{9zpJ(Gu`&h!qag?CM>RA1fGPFwo#VsMfU# zdjpvTCQw;#AhW;(D(($r7653d;(rWAHD6}7rs*k=|KjnNSW6jxvZ_3l2z zXVfx*a${v0lUbmFNU|}Yp*UIurKLg*Vgd9bu>cAZ zD;Od*C3ZQ&RGe6uW|v8>E-;a#cyT;|)-|Y~p=)_s<@3-#t$qc%sK6|8>LRCERHTdW zDSM-$%j%39RZfqF@Wdd>a#T@Sj#;D$C^HEtb7&}s2~{A6gx%#%aVCr^j~XfteczLl z=IlMH9J*UMDNav32XuLk=0uJ*0y+5#Wxi2vz{w`;o}4^IN|AkFlR5g*nwmpVZxhxW zqpG=_VvQzG3fz&OmyIRAI$HW0=!&c7>RqoW$vWqVOUtg^;lrhlbX0a4O8 z<~Z_|b#deuSlvxtZG3Rsslg??aP7kFaL6lZ&9N6LTJ1#|tW4X%GSd#av>kMrcF?8m zpv$y_E^P;0h8?tfT!mJg(FId$^~DiX=1##8Muv5Su50Go^V5927*eLYTBaH5kiV#+ zx@>nFT{jqRz-#p@Gu6+f)z4+BpG&Ks%Tzy?RzH`iey#$mM|Hvz-w9WWC!rHsL+p8J zp5C1>I9ntI>u|_lbV52eNI>bay;wRulxw-#b$NOIz}2SGSXakU;jpKzjoPr}dO!abT zcDl6gxTKEcI0}je__N)iD4irCS%(tiTKLx}atn&B6>&|t%B>ZuiHd|KG=VNHS(lV} zj=i{0R4f{>#=xpj=4y4%Ri57N(RAfX+XLe)IfBYYxl{{SZH+uv+91G5E`8i<)T z6zd@nYeo$Xd$FX+;VRGpMnRdiGQOHt(p)WvT&=9Ra)hCpipX3An)kVyt9cTg-IJ%~ zn5$Wlr5^M>GEdtuhx`R6%Tq$}%4PVX zd@VSK)?cO9IS!>qFt&!CYkY?jmb-JWmX5Ql`=2(D8qs zC#5=pCz^NpYHT)5b?x0bJ{0TcE6jqbS!}7mp%u zVBI+=w1rR>0VuRA3N%&4MiaUZ1-efKZfkv9Ckiyt1-cUjuE8Dgx@PT&*NZ$WPNgH$ zF2z|0YU9?(?x4s})%IutJv!JcDo*Y&6~Qpa9!CLq^#M4`p(vU!}L6m@vsk+PJ>MrY5SNE>SsH^EL()?F+!uvU`T?$#3iA*(Lu9a7L zPJn8W86LD;lUJ?;ZZFHTE?20QpMy$ikV83Fpwiqd*Ho4(8Q9BmhsbEFEH}G0N{+<3 zF>crt+tW72Vjx9hv9=e*xz-i&kU429dP8bUQmibFU0IwQhjFbGGRLkKE)W-JffZ}@ zaA}*Er|LVDhjtbgl??>R^qXB7mO}w~mo9U~l@$+CaK+iQU4Y2Xag<3w`ZWL@4!dN# zBgd{rM2=dd$#J-qRy$nI0kWq!rD~PLlAEK(sl!z^K=MECj$$=3 zUzQS(kd=c}P^>P9G760ou22oVuhjQcbMgvtg44W5A+vdfd4t9>C?F#Vbt`3Ec1_41 zj7k>3`Kzn6rPf)d&0YRbSQiaw!6u_@+C`Nb@o$iP91x)mLx|tQ18`ib zPnM-+;}}0D)?OkJhKFr<68SiuaN-%~O#V0?bmDI&|0#alcosPm&o4*d325rfpW+Fq kE1?9B<~SZAUW&((c0A}LAYj7xw^_i}VLy)7J-lu`eeTNhfBu8=3k>u5pJW*J`DZsTo&U;vHhzR*ezwLi zx^(u!sgum;lm7?9d=}rqe%rZ|&tGJIoBb5NkAA*({^YsM-t4(AGmLN-w*SkE7cO7< z_=Er3quBOW48uQp@zUnSpLyTgS?rJFGZKSm^ym6B%wqBE6@Nd?FoY!>DG{CsL?jZC zi9%GO5uF&sBo?uWLtNq!p9CZ%5s67cQj(D}sgNqEkveIRCTWp2>5wkzkv^Fr12RkI z$dJsF1u`OwWK5RGGFc(3WR0woJ!CK0M>fcQa)2Bphsa@agd8Qu$W7#Catk?5ZY8&o z6XbSs2f35nMeZi|kbB8}nY@L(mAs97 z2YEYr2YHdale~+(o4kj7CwVXVF7n;vedK${`^g8$2g!%X_mU5jkC2a&kCBg)PmoWN zPmxdamoJ_?wJB^qf9mYXbJFXtUbwRP+sm z)P<{;N>816Zj-xw=6U||=5w3p`AvGz()lyzH*u`97tYIJ-c~@UX%O;p5~{jP2SC~Pd$10)R{A< z&RjZm^_+6`{F7LgQx`66@~1DId~WlEG?unC^l>AlxO~O-WFI+lvUYnBV ziIbN%rOmTv&s@BG=CV?p!Bb~9pI5Q0SDwCbm6At4ef7-QoH{vK@{i^R+dc|?UwGo` z*|VEhgw69$f)f0dGiRUNG`2sP@6TS?lqez3g3{vU%~Nzyr6K7I1+Q^nyXZ(bG-<*Tk9+F1JOeHkj^%p^$MP>% zkL}v|*mP(0_^x-4Z@+uzu6OU8zAK%(diKhhi)UXD?k~Rn{#|?BKix~9m-pPJdUDss zlhcj-Nf7oldva4cH9bkJ9CjBri<8{k^(kCMvFz%E?I_XZGu!W8*tPG4>AS*(oOOk( z#aUe4wa?Y*KG3KZ^D7LsD)eU$ev9XX(ebKy&N3o%^W-_l*vuW1=Oyg(*yK6SXw2Ek za{=!^KY1=P8S@TUD^iki>?_OM{J9+_3b@FQM*3FaW=WfT+Zq|CE_4T#6#f63Ce(lL(^KcVd11ov( z!ljevPj3#Nx^%2~w z_QVUd`(C)XId>Fda{Bz{rP|_fnfWoM#vElXFjuhzo6Jf4Ut?~~pPgssnA`ErCFTrX z*O(qNV%G6k!~2WO0v^juAMZbT!>5PX_Y~ean}6yOa}duj;V9>s)7Ua(p2DkRH|+6P z{^}~;zrx&ueNN*X&gS2Hl(~<&3*YwY`@i~@2XLfI%w?R#1$=i6=RVBO`PDyh1pCt! zpzH7?KJf(e0{-5IzZdb&99C&FKi+8^j~=^*RTyFo@*j4>RUV~2ST(_~P;B~Ee+kQ# zctMn8Mb&h}v~0)q{2+|tB+bf|YOUUAw%VO;uRk-Gog2wEU@+t`2L z;Gx4ujvl+|=39>6dfSQH@3`}>yYIR8zWX0|@S%qvdGs}}eO>;|k3D{pVV*dJOUi#X zpJGlwja6Zuc^0p6s%P=vx$_rrk@$H%bLsMxtIsja8<^)`c;i1~zK!{I=1mOq=C{1{ zZQsE#Z+{2f=SAk7?_%D~yyrXd{JqR~G2i{Z?|J_RKKP;UWtb0tgl_*R^D*Y*pI|-- z_ljXk>?8Qw!D5vd0f)K{uj3^Ag%7a5!v1c}t0lEctx@aL7HWIyjfT^RuV2UhHRk)_ zpFF<3pIeJ+S*@1ux4vsX`VHUmXN`XMe<0saevtg|_Tw|;$H~7UFXfNV5Q+ysqw z3v(PocpGy90(b{=CxqZ`h{nBO#`~EEmNG@?a`7|yE4b;DQ^?oI-+^u- zvqTQc3{M#N+zd0obCxh7fd~#p%yf&u=37L>V*=xvB7LHzn8C}3QlKMmzzHQ4Og4u7{6OD|MC}?>v8>=M$)_|2yTkw z=Y9@9SZT(({_hd1{581pA#ft&cDi_AW%7%nmlX!PAHJ7wX>>dD1RKWmnxV_+YUH2X z`MbPCmtwq#PjhxNfBY9Na2=-_1fk)|a*35B#q_;)Ck!n|RVBGv8+7XpUDC5`b-vNi zSt6?VI*Db|BpKE%OO<8A_xtl{TDn7NY2;&pW(vG0YK~#VlH_^5YG|788K!Ajwr{(U z=Mmd(mRg=qJg-9}KGEFN5JicwfuTE|VfZ$_-q&^4HMjP&{#dH4btb zhf|_XSOM2IVTEqa?S&YvQs!@h8}g+HyObTqc#91ApxtYA`ZQifo0Vc z-OzL}cNnx<{r-nKwrzTya=C0uezVz`sp4ApT#`*iLCmeHs_ZY0SJvic4M|EZi zmN|+ELlQf7i7SEnnk}nFx4XQ&yz(1qxm>Gs8opoGX0xn2JKJxy((jj(IQG1H1N4SI zNLZG+hkXX}%(#?E=_6-gNGqVk=cr zf#a|SIPUoRPcvU<7hqqQkgmv%3{95q>+g8S{!ZTsc!?E6*Xy-!zyDAF;=yQkG`H00 zg&Y^m&5qW(GZv2J;8?$jV+A?*Umv@INy6%lhCJYD*a4qY8Tt^mEO+D;}5iox@#=jxik&&{Z+ z=V=<%9FFg&tip3qmX))>7esu|D(v4DtQA+B3C`k$D8T!a9?wIo>3DyaXf7|Euyozf zO&sz*RdXCo(^R*QugCsF{Qe&KYJM!Y$vyDS!P^P>n=N|@*Brs#)SxHpuuOMc zCCRZouQzKuI*Xl&B$|2$#1e*)JmP+73Yc2gYQJ?uVC?tRiEf3PU$-?6#sGIM`V#&74qQEvxOY)Z-YcYE&SvqHRF0D2C)I zq!##4?J`kC*;EbPb7n(9a~(;RY+l#RX1m(49Y^F#&VjaVk>?U`023jV%iVIe=JCtj zS~i3L)l=V3{3r^m0#P+qiNdI?syr)~N<7TCVAR4e@%n*ac&?%t>47xxwa}Kru$+dT zc5|BaJov>}L&yPe!>=;%k=)!IP%g-=<7DloTC{i%E1EM{v2a)#D5&PPfq}Z3EZ20Q zChzRx^jxJae@Iq>ahCQ>1C~Y+8bNBQs-jq7=*W@)XGB)qG}X0=*F+Y?7$EqlZ1Sxq8lu?R`Xm=NwZF)-Lo~G7nM>;P;}j|4ossR z#hT6uwjHpVN??q;f#2)Rv|CMycQrv!@v1q@vXbw&akP@CsTNxj49J>?wW?sPs_@2{ z)h2b?wxw&CnwR3yY%DMBC96$;{PkZ-0$p{3fQn3CblfP86JIfs$}jc%{WmEZDcQ5L zd-v|!JHN8Ae|=AH#*%I8xo?0j4SZJ}-*u4ciOD)Q5WNL^$x80sOmuGU60H^toij81 z0J?oQ2|v`YRs}~>v3*XL*-^P%!ty&&oK~`OxHed=MUfbHq9}6O>!MfA%JV)n9az=} zlUInW`fbx9()|2NJxzQ|ku^R2{Y1gJN|GJ@MP?Y~Ac`BKYR!$YP6>2U9XiQHY{5|F zvn`4AO7NgssPJ}k(aJrtVy`mU%_>W)6OU!Ow3MxmdtulZ!p_!)foV~bZCX(@Txj5D z;r2L@Ov6zj9iAqLJTLG(EMgS3(=f6f6$B=%qP)~H4eUK?G+2Rm>_+2gWSE`y;!?A@ z@5Or)*U@l^5kAXvTuBf#mQ5@K&`DaZq|G?V<~rSp?AV~u0JMVk@W&<>9^hbi4v;QA zV~7q_E%VqIu2OGxyhwywvgP?KFt|RkOn+%H-N5-6PMH@>XbrtIm=_0}iBsAjzx%z% z^}Fub=Mew4LwD&XJ}D4|mqgb^nfJ~h3zf7XA zlbRL+7sGK{Gf~K^2H|<#Ra8@epi3g8JW+Tdkpws~SOFW}7-R)vDM=*)`=dKnvkt%6 zRun1T!{PWYe3F8dK#Gpkse9U}~PZW@woJ0FX5m#Lx3 z)$LxgxD1O#Lp69G!nR4nBA1D<9!1Sg3Wk&=p2I5na+VF}fn3z*Pb7pGwqb^v8~Z+s zoRC!F_|H3G*c?_NF>`A$(KEKDnPwQqQQGSmfxFi0f=p(+GhS-8_S@~2dfTvOnrcaw zEnQ$mo+Wl0y0=~*L13s4aEqlYxK0ro@wLn!!Iw#?mf8t4mY2jEUX8YWo7wGWf3)M} zym9AgXBo#We6%m&xO1;OZun35Y|m~VpL{Ft?Mpk~_{mpy!R) zLWWjWbBBS-00=`LU-c!+j-qO19&!H}(aO3LoEMNUbn^lB8xt(gA%+YWNBV zD)79rL6@Mex+B*RaIjbLlYW7^{-PMi7M1JO>z^gRMQ#PU_T7k33zbUcwF@0eFA>VN zFuS1-QskByYK2~AL64~#5DVp8IHTK(RZtHROHMngOb@X6lI>O)Q`dg#1yBy8r-1A( zFUzXs+jfT|p=FsW%d(!PDm+mQm=*y(x`00{G;N8aVY{M8@H5{t)9LKdB<`O1p(I%_ zrYbByN00+%VMv=$Xqs5kWmzbhR+=`N9bLb3aZ!rbR_`)pVchQ}dV4THG~0d{(UPH= zN`J`9YmEePvaDDFYh;?nmv|nWrE8f3U%}U9N!N7!*7ajY7Dqgp8QhonL1gj*kR!n; zaliU9;Q_qhLy9Q6u3NROMzs=#y3PtqOAl0AH#eI^^@EwV zO*g-7vfX-dg&i!otBYfJTYjV47{HsuGJ}v49$p=tRn=}Rn6zQ zy|yh=j|x#orQ*txCiA5dKFsqHzEqYKSpq}}Z%GRqX*ym_5}S)O%XYgpUq$S!d#>L| z0$H|=B(1cw1LSZ?1#{|#tcs>#L3NYYh0ri~gyj+>SL8VsNF*mfBPbGBP*GLxz2w-b z*;$q~twBSwmTsOChDYE%FJxs~g11J>a?#m~Zwf4Zi2c?btAy?NuyT5W$C7n$h79>X3ty#>se! z7!|pg>(|-a*gpo=evCnVM=t5!Bs?l8k!uHVMG;hiSUYs5BrP-}rN2vQm(z`#C=MI| z#{w5jL>>E!g_l5Carb8nowJJ*aJTp+v0q7qF2t?+Vf_NOqqUflO%vG~y3gNKi_I=0HO*S=4W0I&*c|4`Ig8^5Y_}DLzK^J~RvV31N((EUYQ;2#^2WygqrGk; zlq5ZIN4?%+yHXAS>FU(SfxbGy{s-hgKA5AOJJxgC7c2|{Ws;?B<4JiX*AE5WopZvr zw@;11#1)^!r8zwjg;3SCy>ViUb`;BW%Qg?vZy~QQ$-L@&k?R1F7InCX%`oy{EkPhj zmQ4U(WjNaIV#IrXx3|9M*h0Twu2@#PeZn~0?bfOXPqZIAdSnC}Vp-i1FCSc58UX(2 zAb+3%;)So1)$k%GKm0C9|^So`h{k?nd zY-YOAI?(NQdQlW89Ji=j&4tl$zET0)9@T2C<;BHrd3ky7cy>0m=jR`;rfCQ#OCh7t zeZA%7Lr+~OnX!!@MUh+0#n3ubuM;*a&jl{n%JzKE;-KGDATnW2E1rEEa{e!w&%^H- zPo#NDr$WYeM7a>X@D&8gNw6yv0A&hjo38aFkSeoYxJ!%yu1p1a>N(_}qV%4+7vGfN zxdx$(K(;CRn84aLpl08)k_r;RhOBUM9JiV?GlOpPfx(PunEeoHxq6_gueICdhUbe( z++7*ZM-dPvB1-|Zur4Aza9m=Tbw5edW|FXyWu}$k@bJOjpjvI!p--hGJy32m+RNjm z`g)qlb~&pifp02;ps0bWw16d`g3ZdxBVoOqk^iLXE#Ei&(M-1s55g*!dtSKEZpV?P z$=UJar{DR|L(64NcO?$NACL=6R_xyF;K05ITU}3=mS+bY15zaz{lUV*eSa)-Y-!l* zmFdosZpo6WC0^i<_TF~eeWDw^cK^nl3+%#v=#zsjJx89=r zrim0B7*!U)0}Nv9pMbo67tJoxpp1g?1^h#WtdOuB;VZ(o8>vJ0EB3^Gg%7wR%CF#} z33R#p-HA${@KvGGbH8(k%9NKbx62hFONS4_x&<`=jFqZm3nfUgg?wUbu+q03-f6cN z*49Gmg+*DpnB9|cC*l13G9pLV)2LEy zG@H#X!cNktFOWSd(n3g70wggE_ID7?3_9gXDT#;Gv|%9^G~Bb&9D0fh^ukYTD=Ygu z_5GD<$ElR-jY`Eaqj(0a<5)9E(iyGxn@vB4Hr+p0u9VxoEQOs>;l!#+I9Q%tU8vVN z!L))nYDJL_hqY9%&Ged0_1Xt@(+^yem1SI;h71|a$Nm*$_YgAOZ>2e5(wq=$su2BL zHDaanfQFK+N@((IYO1Mx;;})f+*5xox7GC1xxIE*b0xgP0N>JHk8xBkk73JXOclU* z5zOFwChOBLA+HlkEWJ)cb^(E~aMYWX>fU+B5Tw!ot`>|iT;&isGaVLkiVRcpJ-f+)78k@wku)rNyV0hNl0<%Lukeyp@xpJ^I^Pry+uq{ z@D#Xe`=w7KMbd5hC~@UD5q4HZz}0ijVGQ`1V}Wj)nrc>DK;Nbgbl=mEcVWY@-(Ooh zeDBgrINeal!&V$6gTbKFsZ?y1nrzAaMu~2|>gLWo^4LQA#ajxD;JfQZETiV0Pl-Xr?Feyz9*He5cihqbSixfMp%e ziY(9IB_%k#^$g4YhN=KU(j~B1m>wK7n{H{gHRvtQ%?uWJRlK>=uFpmIT6~+PrK}8J zPv{J0sq;9TyYt|}d_5hFjx2OKWrG)>s=(x}QrUHUq&WwkD-qL-lUluL)G9dQXmoV_ zK&8sLS3S6^RoCS_f7n^CEFP@r95L4JI^T#L&w<}qVxzb}STR%69;L0=QaOVaXO3?? zPE#uVIOdbADU|}xZr2YTc_2{?*9cA55D^}G`^fJq3axn&XpIQ_GW%z!=dqZ#qvARs zHRu;=we$QlNZzFd)1&=lN^bi9j=3nff|g@!vtw=}3Jv9NI|#YvpRyTT|LKFWbk4my zW~4Zz*!3y*7n-ejtFR?EAm3n|>i2%L`f@&*{k%yB62_XyWC%AH_(@7)G_vd^4 z{(es2)ir3!Je)D6;fyJAGd#i>YmkRCaB_foNFF=^-x66r=qvJE7)GY5T8ir0HW*oA zNf2bI>kt%mRO7@(u&gL%rP55JP%godi0n9q<5=QrHjJiEUZaF@O{^s;IR+d>EQuvS zU9lZOag_%%M-4sCwqmu^%rZZ;kRPhrfaS7s*?sw$(b$7K+L@h$xhs)&XPqb_H(RfX z6p4i@jT2~Ed^(E5^5V+!LpLof^rgM^n&rhwt2OG?>T`&PrRxv9aiucrE+sTP@@tVo zwKz}ew!oJl@XKb@X>TYxv^C@VswmNjMpYvN={QbNY}@r50^#qvZW1>* zj$cSp%W$9}qEH8@1GOzwG))ACuiKoQmB0G#cW-@Jw_G>STo0MEyrznfPXMFIV;=I& z__O(H3|i=U@cXyoPwIZk_QXyfq#NvMv=fIA%F%XFu^27Qes1}h~t1mYEcXh0WxADUZxzv1xCRkn#uDB zmCkv?;T@&-bhpK z$W}srjQvUx=Kx~O9|eF(pF;2KL^)V4zgz54{LOveN!VGa2j~dwl_R5cad**fqBW>9 zJaL_igcAilUq!1FHhXG_ck58!yLhgiQsJ z8rF~+)*Zt)&fQ5w+k>fz(NiF1uTUR*Yn7I!0aIfoocu2JF$?uEwJ}a^V_rppWML?? zfoa6Ki9yt}kNm8JWVGCj zDs;q2*4HG*rmKK~^ja;sG3Zi_O?SrM1iLTxS-%G2t1?9Z*d4k;fqTe=i9r(-cy* z!$^6FVy;KAaTnw>K@BD%2)j9zM(PRf9B#*p#CNe7sx7;gGdDlK5Y_6)IXbA!j2Zwu z92KBF9R74+;SeDF9tyM;j~sbmy#GM0*6SYDZfmuHhnD-jg`3vbyItQGRmX+7Go8Ba zNJKr-z z;lp#Y)z>U75tNVCI>#QFpLf#P+3}v0<#HDVl}(gS#)gR)aX4CNm^SLcI8F`V(9As> z8-FoqcVehqmKZuM%>@uCS&l5TCUO!U>roqa{W|yk?EejU*ci?Cc&{6Ut~EITw%{2(|^np9A7rpN{gkV}ZCfPpEp%n=wQ!0JFy zOw)E0MTfZKc!DH2W(oK`$Ld;C&(hI46bK&}aQJ%F0EaPkg!_#It8SS|Qfa3f03lMK z6Cey%!ihlKRFFhK2xpj@A#2DRLR59dbt=_XV@&p+o|`4a^Vfm4K6SIaun#{E)*J+H zj-bJDv>|ndh7xKO>EvPk!8`T>W*N+cKtfbC-g;d$#80(0(|@g8s&)r5i*})4fTu+DC2DurZU>OZ^~h#fIK!t|0p!L>e5pA0UUHK;nql&Z2HQ z=>x0L#=CAg(r7)aOPa3gKt%N%^+j%n^3fLieUNFNd5NMAIbCw4-xOgoau(qzp(*?1 zf}TSQ#cmMKZ3_W~nOmma^xgIRpJc#7Wgub;Li}^7GNFu`^VsSV>>2#4NuD@2d3oR` zi0t`iY|MN4`%0B?f>R8c`%k+yp{Gd7_E*aU{h?h$H?UH z0s$P7u)s=v0IXKk&bf@wxvWexfCOB|qwE+NK=?iyq9HU0kP1@KGHQQSbP}L=g!)w| z=yRNgW!62|B-3hKrTH`;dV#_x4k~a&aw%yx>#EGIl*@#)+A~QxTdunEuU`;1SJ#%7 zFOZoR);g{?bo55n8`{2D+jsQv;a0tFp?iTvT|FW}kusBobhqNsQp@?Q-+t)wK60W_ zhY#mf*}Ay($<@7k(sCG*m6eOVnc3B{A6dFsBa%>5$Uh_$LMfwqW6*41F^nujWkR`L zMOyGC&-Gj(1kIcv({(I9Rva*os<$mEU2UjJ`pNupLmHAEb$N%~5xUt(7|-}I68Gg= zvoTX2&ikINprR^nH2O)knl-{ufTyv(@BHzVdd(0#e+KCZm^j&ANE6h$7*9 zN*c{-4NW#Yu%XeyT&?OliVRN=El#TIl|j9-ryGgt*iHw%D7UF@)KaUlWhm@Gm-yRz zebq$e=8@%N6puQt!L$C zr_pqA6(fpa$*u*=Jm~jEqlM9WeE-Z$vzek}gthE;0^V3(v}I*5c+J*v9XXm1B|N&R zLVPI(jzJH<1iGo{+WX4H3QcM|3i+YgLTYKIkE!2D#pTsS$fbBACpOY?lgNI$X#96Q1cEMO*K@YJQ+ueOO-O=01*ZjanMmEa;_5x9*UiK z0an0E9k`>k-wjm;su~PwNrBL-mdmz=0DzjSqF&WiyPDEI}s# zk~iqXbDd7-zHzne*eIwe>J2h9IJse1Z{zDcUFT_yLv>~_)(o_;(UeRl*e-FXR)=-u zZfg`X;`Cl`{~|IWC~>f5LGXE$lLA7@^$1~W;76Nk@NJ)HyV|IWz<3gwps*M$le0%& zBS@W=soC7P0S&*A<90J}UR}A{s7}~zSBi%G9VD;Un;rJJ-r}&`N|UdXQi*mB%vi__ zvMN_9;WtfUuT!lCC`17(0lst4nrWII>bzC4s9m@TwF?zmyU;qJ9qIOJwS$L74;($R z2v^#&d#GJFys(hLU1G1IF%IQWGAg0qWGjlQY^nW)yOx%$RMk+U7)j{C;B-k$9Ji#% zKET!4KTq~{TD5i(`!twQQ`&j-jwt7K{E zH7HBDDVX%5ehL1lhT67b?aj$LwzokyDv|V&i#|k}uI41O(vIG`)E-n`fgl=8#nsbRP=yd__f;<$nGLsIemt#3f`&_;?v zm_Sq@-yzSV9wY{G4o+j`Ak3Q8s)?Wloiixs@H`1oO%{X{c-3_TCOOt>#9=TiDTBag zMbihS-*kNxn`GjlwzNw^Yf3Jn_1RMXy7)QEe& z0+Dqr^OOChUax+8qY=th)3GJi0h(f>rme=IY|$_?1BKJB?a&V|peV(0da~+J6kkOH z9w4?z1zPCEqND;g=_e`j;%V#Vz57mxawYJ6r~~+_NsMyb5ugRJTAM?iBrVgXnNki- z33D@T!2Z3WzKpvJn%{#CSoAp)dm8uW3O{!%ZAvBjlInCy7iv_|=9{~iJB}x%t#9Xh z?9dLGDV_#4xd87d;HeDf+=2es38+pP>i}7%9T{DG2;?pbVOCezRfG#A78P5Lg8>7m zFPIr@9_w__$3yFJphH6_&M@k%WEqM@2BVcu8%Ptnc7h6;CPUQli#*xq#&KOlUHktc zJ2sXR)e01`^8B z|1D_t9D3UsxA62KX7rJVaycO;2Dp&cZ5z5fyePVf3Uvq(rIedQb_MMxhwSF`&)q7j zDJRt5?NqI<{F)GiD5i-~Cm~3k&aqPnt%GqF4FowX1I$}QMI%xGMwWK7ltn`YDnDA4 zGJqA!Lzyte5fB0 zS=wsO-7y?;OG{_Ao?5I_1s2}h!us0A@!J=BooF@;1Xfi|OE%NAmYJ3wp!CbsecG_I zKu+BCx=Z8X!puyP$`T^8<`Q}LiGIHp4Cj}Q&d>LH8)>?AKu5BePQgOCmWGlKWg<6! zfSM1Td7Swd+uCxX9CIl$Vfu@Oq;&Zo5hBo#_NFi2C@9;W5iO9Ph$Z%&=330y{EH2(9j@qawH1w_0D2Qfx2$qc&)2U#!Zxk$^3Kn?WOlC(b?Lx57CW1EW zz(#g}CGW0B@haqJwu)vt06k&}fQ@I%K#Qx*)K?S;Z<=+}4D}l_YJ zRqrBJmY{m+`m%4@db1PT^G2syujj&+rfcM*5H@Z&JTZ%wW>B#UVM8`#qgx2uaOl^2 z{oA%)Kv@}tO=Qz_5w>>D;7p znuX-4iK;+VWf7UqdbM`5vN8(1Bj~;!rdbhNvY$en{wVYF%&$XF=BrxJcS2<tg0 z$w7I6l8q9CCI$1ygh6t7oJQ~4)WSxpMBO64FoFDcM6%eg+u1<0gI($Gwr3O4H+HNk zH~GGaKScE@eH3mDEk4@T$vDXs0{@fd9APm_s_SN9t=nh_mS(VetF<~mH)n}ar*r3? zZjXf~H=?i+(y~SrbRd%@*}(H7!|HgR?gB8F?{$Be_}*yfqhJFds#!6huxA=g2YCs6 z36WZ@ahBCRcR>XIdHp-OT_83n6oD`!)0@E7TPAQn6yP}tCx~-l#QrBeifgKbtUEwI z_KZJ2+P|$qrDLId{#&R>u9_He}|i!J3{{TEww5cFTJ)^sUU5S$r5PI^piM6 z{H=?#o%I?ld`THEZY5h4KCoe^Qq=5W1ur z(eT6^%DkZ_5N5>HBs$RVlhMM_@!Tv@u4s%_!&m5vrB-|Jd)NL8d;PzDT|C(vHrnlW z13iIUmM-3L?@YaeW=*}M%pN-Qn4Lt?Or=~Rs%~O>L&TB+K5JBxp)QU;qf-RIf?ZQ` ze0M8hBjgEWOdpuUGE`1?)A|P0J*7bYe_^tBd&k(9y5a7w-Qb0Tgp-c+sgM`PFOCdm zD7>}R2_U#z*{nj@6punrOiO8s1LXFrKw%1YnsC_-yh?Yahum@TSJ_Am!w!ocqwffM z|>`u3$gF^e8k$0?JT>!233Zdh5BVb;GJy ztB+-gMgGT-Gy{dUYrS4gK<5sR@da+$i6cpnLDM81XXx}q3az`mftec6?t!epU({ zcjENzd_8Pc8?88Pwd$yV6Il`S3(|6fi&WNY)<%h2R_|U}PLMjKXaf9tOVKz$X5{|F zK#z2}5`YlG!#1!>lH z9gYzjMHL+}4M3n)KW)#jrPuufN@RJH78I0Nv`h<)=7ZhY!~0RAkyOISRTbo4MWK=o zEq%Cu-@dqB6~DD29w|PbTz@BtuYZz$o=4vq zp1Q@E)pkI%kF&Sd00;HPmw!<`bJv~gbyOfUg0Ok*vop4hSqHiYhYx)iNty&$UPQ*6 zs&(o}?+K;`ObEfX*@p)Sjp7{gj?=eSgdp69r8N*^VX}UFkz)QlV z=8v35x*cSs3ZQ7B5{qiwDcek4v}aRQF$foAm~jIX2hn~~;xK%P*MQ7`1$a8>fmdx? z6_B_>J&eF1U__3K2k$?!1kWH>{?lS%$|E^Q`$3}nXlS=->OfEtBqKnhqJSPx17+g^S3+eU zl?8|bV5+>ulfT`Bea<^NFO@7ch~4GikEDB&G`75lYYk z7{G;jE1oxxa&p8xD(V*DEW-<8;Ur2WAq+N-VlVV^U+Eq%nQs(~z=J_0=d3tIS4lY0!geip)&(C?14lGdh9Ct$* z?nFaU3Kr~-l7Gyy%4MAD&l}K|m~3m4Z75ajAbWv91uUklnO593fI`E|$HXcLc~3|t zE(e`C=pB+(Tk`B`IS7+DiNl(13b5sfcT1sVq97k`nk+yqc(i@dLYP1sbTQ$;BHZHr z_rEUa1o%<}fYs`uYd^nrZx1753=Hx~TcItFSJzfpft1ml!Fm`I6{8)K;}qG`Jq;OC z9)!oh29Iwnwc_#mzR_F{X%$05qJ;b=`*t+ES8E%*V$KfdX9kUi4?lrgovjQ*^uB?4 zDi727f+1a`8zh1T)jNXZ?no8Nye527*qB$!)zsOhJ{cY%erd|yr*cF`W_@Z;6eB#+ zz)O+i@(VOMs+p?!C|k&vPb((i22l|+Az}(d4Al)fbRR?v)F`YCN-rT|h^2 zCYq6VmLJJ&fN!dx3>ifcwiFveB6NGSvA z2_c|RwV1TQsu<>>YFI0UjJK^zJqTLYPP0Eyv&=Hg4kjU@qv0nq9Wt7vU1JH+-;crv zED`V$ngvSe1~<@0RzYC^*087@W-9DRj8WWAk8wBzp0YUU6lO9Ij9uMM^jsJ zhlApodDN%WdBK-ZkBd4yxRh`=e@WD~M@mRRda~%P9O$GuuZ0 z#DgfbL3axZYoK@q^c68%3G=(;X-qYAaYkrCr?abQuDM(he84wr_IqXyjgwI z);Gi}ci(paYhk(;m_>vlRbXE%60)ch zL+OzQ)o$4+?;FwJbZpKu}PkptuAzXe@@vpzMe&?q;zjSnT_!EasQw!vKB+S^zC*T?=)Sz?{L%pL6ISLtslCz6#hvM5BF3KZ>cN zghT0;06zl-MYIqdZ=?AXoX`F$%c1a(buD|q&cg8HEOe3k@+GJ0>!^VS3DNfX0=q_D)b0f1>4gVjHk;$ zSgZr;t@7?inG=uzGh}(|*Wl7()Z;f_T68NwvzebRVd57A2p7x_ke!0NtI4HLU|Ae&7`=sJ;YKMI_$CtzAFwYVkPM2xDE zWVNN8hTH3Bn0PB?y%h}d@q8U^E(j-dgtxhmQb7yXZFshU9#V9F+fDbCqCzP=6}49| z0K41tf=WV0TWG(P*XhwSQ?E|;IOJ$i8pAthDmQF~;w|G<24#R3dSog$Enj!eU- zU;y?IbLcnELp3M}iXt8KqgbJVl4N9U<0J@s_oMPsN0jdY*XeO(O^s9zM1*zLGPL9& z2@H||Sxl=auTiw9a_zU--~Jjp7zgqYfaN6a(ujv?*s#H?6Xk~g@{^rPA+9nHHgHMQ z@ZvcV0b(JTUAhvOE~ZAIio9P^cH0I9M_{y?3tll)jKYP{FhDe(Lu&=CAmaa?##4m+ zjAvTj(yW0pSv5|5_h%DYqKg}|Z~~{Zru1&fw}$BJ^y5W`&QGF0TcnCJJwf5 z2!Ij-=SI()iUXBUlctz=ALQDHX;_*lTNutmYi}_M5Ais3s|llz#H*~d zQ39gMs*WxnmSffC7E0jf<$e^s{=+_!JwXlKprHw`MpBV3umX%u6i{8m>E*1^EhE0i z@E35O^@);LMbxRlG8fn>;-XLHxKjrb0U#*%Enyj75w_BN@r2KwUZqA095RH)*R%>s zR^UsaHaYKGqCO2dAxT?5&x#_ZbC54=-N{O{ge^D7F1n`7I7MADu4AH?yWr&v6V{m3 zJjR;h>N!_8#EEWN&f{qWWRsyv|JYT81r;r`PgoTHSR8Vs5oYG=bczi5j71I62*$05 znh{tUnEeKRN0G7e_g^Huix3mYpFP75ki!JXgt4e!{wtsg0{7)FqUJzFQyq_PJj{|o zCt?}Wh;=M*64HP!ee4E33hL(}^0r{oiW;gAB8z7dPjF0uAIvuuG@+g z;}qeO1A8|t6=O&($)&5kEm{HwDzWt?j=meL~!nY05w;dilh(*lzBBn_hYZHDX=^22cfMf zN{87Di8JgE(gcm9U4p(Bp3~{fNE*kyA8WD~6XKzrii^#m#)((bo#F)4z!c#Mb#3wx zVAld1puPJ=P>o|?33FDM#tPwd&wsQ~&}S2-ff#;?m3ajvU2Fp`1GI7pkTk3LnTr9u+((955il5S0qZYlX|vpG#r78(5`~%7vuw&NJ!NSYWbm&$jey% z89KBG7$|{Z<9^}iIaD>}tL#)4W&x29H|!N_4ATIz>0#YcfyWoRh`bImbUUpH-JTk` zv$lof_$t8M#D*h=oNC&FD+_6FPna`TR0Sc6wasllod;J~7OLSU!aIr6S0^6ql+=Q_ zg{o!&=pL?{pyCg6wK49~)v~$X6quShgM=%ZXmMX z`rF2$1E`;BXP~7(F5oD@D$xN(ET$4+(hWrmVRO;`OH)S_N<-Ic;6*;VTkr{(2oa!~ zh|-=J4i+H-`@(@7(kv0s=5`#12{@h6=CZD0l*9bIdICzf8;(%O2)uVD!3EG z6TnTV342A9nZrkvp{c#2@{*GV>rSout0)tECXWpYS_1UXb$2cmzr(Jh#!-;MN{ms^ zLn6vr=$mgxlZTB_#lH0%z!Jk~Pn3y7-8H^YCe-mK0OM*2tW2@mv^WduhpmWD-FMGM zJqoRMl(Z1KUdEIe;I8%F(u==RNuxe&+F-8!Z>b|&s1^9~M&?4JQb!+RQ~Drg4p5et zrD_R5;ex01To3al; z18iGN)F?hg$?^b-IFa%|!X9M_Y^J+@K)do$<3uL}0-2Mfz;pDBMI8%r9nglHVQ%?z zbNhl(*)l{^6rmAKqtjh0FAj9nhVd*Ftid>2>mm&RoEagdg?Owy3ii#-+PH?%_3vRG z#Wf(}4&nZeW@aw3{}IQGf#$44>7T3E!uKp#%Lh<0 zF;(<(f2M1gxGtp!lvSysA~8f;8$l3+q+|dEfvIVT*fJ=*E{3I`weFfXORotiFNQLp z@5<=+_l0v^7d5~vZ(FI`oeTH%d+5S3Nf{Zh8oiu3;H~uDC66)>vX2$B)oEr>R2I`{ zjn!`Y2U5Bh9w_iFdXI^p#yuuD+^fdGlzw`L3F6YR{7sRLI)+`vX-~~5grcZeqq2lY zo|+!h`$=q__HORgA0F|Q<0?SU^C`plk^{AO8bYRUKc#GVGUGCt%7xyCQke8I8H24B9+e|4y z4gZMw0wdE*gv|^-&np3L;DwQnWIvaO2&+R5qG@ms z2skHnO2WKGA|b9V&}sP9Q5osBuOK6fwPAl0Yh&hUCiBxL{7rq6U3QL! zBlI>2)N)dC)7M?_idblfJUhZ;h5xBrczj{^O*hotx8opRiIeG_I+9omf^LRrSu1yg z;Mxm0A-=_pJ;?iSydwwh+_8PLj;(L(x{b%o^bQ}W+=2i1wwz|);yAEdhhKbSlm_vI(2PuQ>SzckLmrEgy$(IVq9?H=E@Gm0C}T}Aze!AwZB)quia}r4^gYZk!USK+g;Yu9 z3Mn^>|1CMXZDivo9Hf!ZS4xNK1Baph6ecfXUV)E}&pe|K4NX(1a2Ry7h{APhJErmI zfCDU`=b73!t4WM3o@G^m+@&0Vuomej0BrIkA2bE6?ItK1UJw->c$k9R3xHFK37%W( z7XZ%8l1}j(I8)G&0C0lf0J8fXI@Gv8edG|W^D$7Lb9S9#YBU|AC>Qb!;gM{TA!JeJ zUt|cqXeUFs6vvYcVHF@OCce0+D+l#31&BO>In0ma4p?sijVM)sofmqrh(ih~r^J{d zVpRI^Sk7(UcC?BQQvEpbg`Cloai_(2uj z_gDg$Nyn*ScqZ^A&4KG-*U;vosR?c>gsJ%%ylG5fY&SqWxVNjg$A=Rm?O?S!D1?_k z=xP_#D15%j4qeCz&2JP(E)FETPet;Sx|@p9ZVxfP8|V+KB<1q@!g^@|&1N$C(Ppx8 ztOouO&9pF_*g~+?X)mB{0PP6q4M>uu;VL`AzPLTb!T`hTaJwDyCuok>KbADvZ z0q@m0qmMSWnMSKB`?&W9=Khq?Tm-1H?ZoKQxwZ$L*BHy%=WeRkaHos3F=%RGw^Bya zT)V3HsQttA5+s7Fpmbyhy><&VZ=??Jhpi~@#||){xF-*WIdw_>w#C~&bL;p7Hy+=dE6^21eHs5Hdev|`Ek zg0Moyi|DNV>AT*0dVT%$d+(b3|Iq#`4=>K&cW#6JKfLF{UnLur=D|^V_-K1CfF0J+ zY$BGlJz3|r=G^GOYWc9geAHuqeQoo_+irXD|E=y!pyRBrJN~{Its{+Qm1d+FjYgx< zE{$aE60!}lY>aJW*^;aUV@$D40wjT$Eotfy0?o-n0%?{Lf&)p&+Jq&Cwh1LE&7qBR z;3S+wl5$R=Nl0=a#7#>=IW&%?{_g$087;N}Z*6M%U444r``-7yx7_#MefRz^&TO3D zon3P`j*RS|$k@Lp+vm>-gyTIMTSsQ<%Dq*bX*}pIVy-U@RwggOqz7&0s8`NzIqk$F z@_*p_h%-$~`frY7%N|WRK}F#S;;l8wP`tVil}{YT;NqYv(*Yc6G~D|66U1A2gNZ~b zcv=kWP_!O|Ep*@lz)Br2wyTfw)ma_pOV;1B&Z%Xb$&?{AEUOk7KC=C>IABtrFS4%L zT;d6F(B_g&Oi^)Dd3hAq8v`!*4tg@Uvhn+{d5j?Q;1nj7qTjnm62N{0JDQk3E$hAJ zJFa))U(kd^l`OY+g;i$P$-LP9(J02fGjcVtj9g3^*?}mxv>B*wE5+S6j{t>TfJJE;=b7Rs$!(39ue)}O z=R%b0Sx?IDY6ZTCMA=ghazQ41dlO6zGw)Le%l!A)+AF%SaF(gE;iYnsN!t|;qwJkV zOj{QYRWr|{v|DIZgQtLelw%p-0OTM5mGNM?E5E3z#D@xBMO{1*VRol4L_?+37OGew zuWVF;p_YvRPxw4}LCe*L1{Q)?R3ZiD0`WT@T=1%;s%<6sL_yRh@-4La*aopn@?t_( z3-4ZjqBYX~TavRl3v~ZWRwj&MDHe1h5ymRPmI!|Xpai5l<$*jG0$*gM#n!4W@C`&9 z{P-c}R;Dpq94y+PQpxI?jLZ7g{Q1_m+N-O(32yN{_S*Y9o~1r^!+Rdi@}7`AWaKlK z`Hpbv<(T-Jidw_)8tgTyio}GPNzu~_X5Hf_h_~_@>VeNIEXC@LT^z#=C|?Zdj~^Rt z|I^=p;tLOtuI!QjLHEelu>RK_a{d1z@2ah>373l+l z`I~|6r0DKDIr+v!epLujlp8>4PeC4P-?SL2G6mm!5>>D`zLflcb?05xFke52x$e++Tln&-hbRdjSQpJPTr#D!oG zK}!$?7i7l;@IfTYs5il3{P<2n#X|J?#lxjnu)RI-ZP@DkgRdiXL1M&8&GoqZM)*=1 zKO3X?>U@f|ORuw|ao8vG(6J6Px)=Rv)Mc$T?5!v95x1f?1y%$wUp>Pn`;{TxPi(VVsb}bwv7K=ETIz}_`$rn`6B`CsZ|nr9rkMU{b&vxm#}N)5(MABU7>7$;)t8=g z{$Ni}ODhQCC8hH_#Q{e>!aM}8voP zCOGGyALUz%9SLmRu)s5+WSH$nSlS=cjbin0uoGGTzV?c1j$Z9$Ju4tu04_NFCcjbr zsCZM39~Jsd*FkIDp0-w;xA7;n1p@OU^rQpbxh# zcCWdJUXxzpwxuQAL7%}5P@&>h9&&GV`pmF$rzcOP*9hkb!j%QL5$aP3#2DV z77P@k>6AKo@c>rsIC%-;tu%jdrVq-7)+bhoWS zd%YsUsW$A2wiZ2lPZsz6l_RrrzP`f5A-`YS;Nr~;{BptBRR z;bfw_DN%!=9TvX03={yI$Ur|1TJR$hXzpuCqm3S5A(2<$4}xe5Xu$y!Xe1miy)t*i+63*3O5_qX@5 zRw%(827s&Xc)SVUCW-bntH3t{4x+hl6-Fj4{vg_J&7g*1?VYN{mk8dM*3>qv>F=wp z3S)E1@}o1|JCKQ0bQxMWoSFXgml zfhSy5i^*u#|4X7)+Ke-RCH`Ofz({lazW~&R|ChL|DS+3e!?xl7WtI4U@dw2JON9Oi z0;TwWN!NLf-hmeyK|kQN6I1{#=`1&sCUKH<(uB7KwFP>EViT zt*n(jqcniCPgHhmOB9#&4?A9$5Rua#(U$-H@4wnA#YVpxwayTl3vkl1+)$oax2~OG z41#K}4&!u7;B*HuO`FIKVgNQ|5N}$eOFX2zAV>J~*oSbA=ej;Oa${BNqE(or>8KrO z>uYIetK*E>#(1JSlN+=B*)i+&wlHRciR_rIamFlqzB*=C)%EF^^{3*=?3j(m0u{&w z!1%T9bMNBhGz6Ch4=cp(UY2X!`rDoeZ8mL>9W_-r&Zu72ZcAD>Cn?CCv7Xs+Jr9K4 zXb=TUaFM1ks;{+z$nkyY`5(jJ@?){g%$n5=Kv4S`&mnZF3i24y0o3`6>RJcHL^s5t zQos6dDyziLIo{KN#!WPLB@iLlBf2^c-;3hEi4k2E@kj8%P#3SjgExlvoasfJ5v?;q zs>8jDVZuKQ8Lt6WU?#Vz%Wde~s7niHbbgkutCqna+7_BwR-9we$GAGljqnpWl8{A# z&4shL3_rZ})@!V_<>Jnvla&j2xtAe(7Suw=-w3r^;Bs6^fGqlYt|S`b@vI{WjumTg zB*B?C)?hV>v^bKmEPRb95PT_mgxHO^$7G0JwbZAB$L0Ck&-!`=mpvSEaM|;$CAjPj z4Qp^H5$f37h1-wgIFv}&t2>EMb-Za6(11Si(}>-a?M}k7k~vUz+H%f9M9*Pm?3Vnjou#XpcT$^jJcOJ zAdqt_(EK^b%dAB6FIQ(EttA|IR^T!QKwfbfvl7l9M2kg#AOh#_mS$9!F^)r!E8qzH zM<1}DV2thBb;}#H;GxfopG%BcvhcBPS5h3gIQWtEYaF2csdbA$`{7ax7a=}Obk&gy zYcG$dF&M-_L?^xg948^#szqqTE^`v{9X4aAGb1XH4Hllw$m}_@kxW@uI)A0pYyVTwQ`yDwl+tpz4|_r+sdm%=0;Tmh3@(^konx;K?y zEilOy$G{}7UOT&eVt6@B@?bAWgOQ_u5@de~mryTC_HSUoAurq!ih-`%;~RbTT>`&Q*=;@|it*cJGo# zsL5efAKbhdtm>#>RX5?*%wN+UO{G$ObyS}~%{X{b>>g}SUiK*HRd8MUu3%jp+p$*y#-Syw8eMjaW}y`$avg z3@2yYoF;Oe)riiq2(3dUXs<*$vbS2mX%B&ec`W)Os8KKh&=;c(4*H@i&w2{=%w!>8 zg7ZH{85yM^7Z!?(Xm$IR!azoWffTg5enDicYVFFxKsso3e!NFxI(2<+zbHCL;EV-o zj^6BmF}77Nf-!#L=(jhuwsMqOfwO3iFp5_v5-xWt)m0gd;~oSw#+$rNA^a4$qY>AK z=MR)ci(~FUdpMa~1g`s34kgk7u3Lix6-9~c>{!<$z;(@lQQasgks(Ei>}sx#w}SI% zxBY(ieg~TqpP*+NSFor5B*8iH1hBFTt;Ih_VOar(t4k3O=ZUjWZUzYvtp2)KDc*Yuhp4LF;P6fu5TwV(}RwOb!S2lryZ9qB(s>?&s4H-L;~!#&EpE$i0C zk0EP4IW()=QD%j;z6L_pd}%ZiDyfRN)1DI7^hp9+mAwJ5ENg2z7Ap~79?T7ydbEz5 zIy|6t_|~&shxSw|Qy*2{&l2%$)Z(T7NVLRugl)Uox>{0U0eQ+?TsL85d}W~}U0u72N#9%B+DhXY6uL?MoDv|N{Qi7I30tg?j51jihtoZ`YTfY$i92bmMs zlc)-S%DMF{FbHcBNsWu6e6ghSmW2RXw_K|b8hXp-e{&Z21w9&L3~N933SH>Mt94Xv zH^&fm(1vtERj!zoy)Am^?3LzOf+dr)HCR0CSY|FQoWbeNbm+p~y1PB7XLD8oh636! zGS`VwBIX8wLcmc0CMd^E6;du&J+K79O0PQ{ZVi={1+Ys;n?_KuSzIOp-!+u=w3krOK4i!(XDJaM^m3XV` z3k6GAamMi9P+^sY;&Cw}z)Tc~vPA;~JXQd@7mw0TUIb-TqOWHbh7?<`++2ws)Nv2{ zWIocLtQI5naQc{gn^v6Q)t*TVzJGR3;nt33PvIUpW2k)8r_>w&o?xzDC#WT70*!9P ze13Z1bXP8&xlaeF&bnpk487#L%jCO5S;c2tX6eqI7oMcSj}7{vThRNqfXI_}N2>6g z6RA5bgg)yd8I~1jJ^@P@n?HCuczxOSK7dE=NxoZE%a*Jg&cv60VZ}Nja(W-%x^hV{ z|LkehKtU;MGrP~vvag8=#>65rnJ~!iW%K=+sE}lCRv*t@6`o$D%r4H~i&yjapGL*7 zW?gt0InQ^k1FQnlrW{p1Xk^LG41Q(VtYO@q1Cn#x_}3XLWz(i(Ki z;;50vVj-u{A6;yY#Vf3Z>2l1nTDPm=IG0g&d%u&F)N38*U`b?}DwOTea`QHkoXJ5B zCW?!29QsMzK-*(UW9T;E!Pmxs+IM2~sQZt_n%b~pT)*YDkfF{!5uVik<+xLit{mMB z$Q|suvd3p92psI6UTcgZ1k5g;7VF}*Ywz{y{&++7FOIE}Q-|NOjyr;Xw!Csq4U~(u zkyx%%iEh@HHXhlm*<~(YhNg3-YRYHT$%b>SRR^w(RBIvFt!Eah?1R2=6bPMLI>Pmy zB!`AuS+SlG__EcZ1lSN?9`5k8p$}fP*NZcIwCc70HL@nE1wRSYQ00TK1(IaL*q#7l zNlayAaLU}mPtHQ-xTs0LJTcr-?b4+X06QlJQ967g=%r6BTLWdk^MHQm*3-oX&lAS< z-D1ojc@5oe%rMt$20)N|#F+DV|GHO=S^qO*Hj>}QdkK#ce(41A+(_8OvzvR2*+Rw_ z4jVH@Ik)aHX8g;>Y$MO@Ny3xHOqLSJV@IAb(|%)SNH;_LEa~PZjkzdJxXYNGJB_*c zYGZcs-rf9t>0`!Rw$Ye9JijMRc*YKUjWK)4Z(rP)%eOdzzu(kG*iE>7F~RYm;;pK z-PFr_UNGjpl;u|Pecy+Sc|ZAnFmB9;ZZzh$|1{>qJbQc6m^*%H%wLi2<6M8@Dq}wR zgfX8w*O)tRH|EoajJfMkV-9}Pn9n?7%-ugS=ALVf`D~{#pWA87=kGD*UY`BJW5#@u zG+%nmdWBP554~+IYq@){(Ohf#2!87;*!=dgJA1RKvb?6-DmOupoVvKzZ|-IVCBF|C z+%uXC*HPxT27bo~HH0uBMW}NAmbfbBy+VA|Sk~K3Ie+)@dyd~RYr*up9s}QQGhq{9 zH)+03nGSKC$0+z7WxSK{75@G;UduqTaNol)vPjtuOG*k4&9;hHrbuxLx1l zJyITm=KUS)C&^#KE8Ksax;R7~O4vdm?xh;^d~H-Pxsrn zPdzOQZ%2McooRhZon^y!*~2_a9#TKqAa&vdN=p~Dn)rGGGd(tny53Bi_1v=_5|B~T zmfVnh)1`YJaM$ba?K5@B2Ta{a$1{=P2iz?Wm~|a`5$llHY@B^_w!Q5MFp+|h!S=Sz z51cnXGaRcW?jc@l3K|~ZziDkZ=3CZ+%iMOW#Gc@v^|E!ll#Jgm)4ZkjZ}SJ_g@1rM zmvHO2|3)XrC)gP!QhoSuo&p`+D?x4mDE&LlX zqngh~O+TjjjBA?hN+&gbO7q#FPfcq+GkSMcW9BrUz2s9ze)-Tk?$+@}p+gH#Lq{}z zoyJTnog+R?`Y<$2{@CX!?NZvyd(%86cSkj5TrI1RH!5vb z+M={oX`9k^r5Sy8m0ou%9nlymVZB+exoyzv^Oatpbd%D}O1CJzQ0bUHyG^erpbfNR z9&`XSss?09Uz5-;gnG<}Pa^eslxw`!khCFTf-v?*fR$l(>J^s6@R z3hh$bqiKeej%dnJjhCL&Mh-%^E1lFdbI^9$Hv!G)buTU6PH%h_+OO9G^q+R^A?>ua zq#Vu z&q|py`qdfAe1z*MO}|6a&vCbt+IRt4$9p^JT|yg_HY#ma+M={oX`9k^r5U9in$Ie| z?pE5TF@p=gCbuElx06y>U$dcM*Nlx|YGS?Ly~7b+c7x>fVsrq>fncWBJ4 zzGaTLtfF__2K6aTE&P`25onjTc$a=x7j<=n7-`uqBW36^JBaBfjnFih^4-+4&`zaY zN_$A(O>G~B%GY)4sP8s|8b7q~A~7SH!>Fd;sB~QEcBPY=a!PZMl6M>758Y-~c@NIc&PM_MPPwfTE zx{vyN8k#0eA8!8H$Lu7#iUv%|`V?$Q`3k8r32)VuK4P@mEmcLzW#7Ambj!1&0A_UiQz z-!-6lf(xxNV|sT=ujllx}0yHB&;l@gBfuIHgLpN^8hP^sbd+6wFS zsr5Pou7?jCAzo&{^>}y_Dl_1EBQxN7BQxN7BQxN7__pLAGvIn7GvEfD={E3<9x7B>qtDGH$D$KoP7HQe7jJYn=YVKFPTjmze(daY5XRQ->fyWg=b$vVj%o{ zi`Lr~;^kWApe@wc5va^T7xL8!sLU)E@}*BhWoEgMnvrXnSuWK2xlm`8F|EBZ&3R07 z9@96Dk@FGSMrMjJa(E6ZGsQS1c>yXse4Kg{D*SVtdJ`%%2aM}s#M9)jU*q=_D;ERCwu>@`@>KLAVq4mE*>wj9yfX+S~k1?rK_};Ygy=fiM)8z9!F~aMnmDf#c{?Zo{e2?(D8J-m? zylzH$-Hbjvqjfk#+vXE5JZ*-2d{7znGn&sVX-%`4XWC3}T^?i?#kU-o5*e>^p99pZX!g$X788 zcWVEAr%Kq*;P~VCpT6_>!6WUN%nUwH;`3bx4?l3{ffMA{7)JX%!~E=~yXN;DxZ_`T z{1ZdG862Oz3p>OwFmJfTJN#cY$jXCR#=;S?#MOL-+G1=kJ?8%Fok_CXOCDI*)4|K6X?-Ie+9(xRp3OfAS@=J(-e z@hI~rPaQgTl-+mgztcbJ9Vhnfzi0jweJ1%1Y=*b0#e2i&Q}>7_^ZRL|N(Ts5&3|n2@xzrf)&cRJeyY|l?I0PydE)35SE)0KMy>RH{3kN5w zdxrMzS=@W&(B3Ntd!-|%51%@8{O|+9_0i8?KXlghgR=zsc=ye#`-Tqg8yw{Kp<@rS z`{t$ngPTOl;dEg>y2<&WZ{aDTW>;gfqn$1vTHJeV=-gw2y~44ObcNH=U7Q{|=k(wl za8!%=B15GLeQm-TZ4)MmPti8Zh|J!2n`6?<_3?HB=NyT*c}8Pi7H{~Iq^2fOp=4~b^_=8TD;9OY4VwPTfqLmiMK^&19|qt zrQOFsRQpbsE}h?Zbo>f5?R=>{bhtAQu7Q@^aqPstqX*|Zcb>Q~ z+Hu=qFueJbx9tb_Id#qa!P8)TyRW-ye6_=??Yn`p%wtDOQ=Q4l)sF89dDDT?9S@YQ zd*Jx|_-+g#{NRbwbf?FBm?<&4nPbdpG|xP<5AP-B(s1i2GtOLrJtvq$_*`OI%oMW` z%LeS9W+t)pm=WwhuGv=9- z%x&SZ(>UuCa}D+!#2p0xiszZaUDBsJ-|z3j zw`t4K_B(*@-@!b9|JULFaqJmK>(b{sgeRd-cml_!@e4gl@laG^N=;IV0{I76h3L>) z{|U<_ctMn8Mb&h}v~0&sdMQ7h39`9-p;#(csM% zOJ4f2m%oBxUilC`=T*$BU&B1iJn}2pel3RR>)-IkH$D31xBM!@ycJp?16A+s%sbx6 zJoYa7A;I2^{|z)&f)Q}3XQ9dLgAVd2`$hI!rDQ266-t#-qcmCCRIXH_WQ^)T$ zF~mlgQKrp|fowX=1c-17#L{JEKrXY)9ERRT@Wsu{7G^86joFUDwUfDk*##22khzGt zn7M@6gTZ?lb2$d?Ugk;+m#Z;|t_3k(&)mS=$lSy{hq;-#g?TRXJcjl%x)Cqhlk{~2 z1bPhbVULD;?!|vPG)`dO!v9w@ufhL^u|C335}>cwVtpOf*E4Tm-pIU(d6aoG^A-jaf!AA^kSfA$s*%4P z>pPft;{RhzNFw18N{sY%8;0E>=B{uXod-6-F4q|9hD!x1Xgb_z6h5Us46#XVL zGh~O%@PvUL&oFIlvxE@|hG2V&85|MV@Q6ql5}q~LEZb$*F586sw67`TDF*K;@>IWs zF$W4@&g6;0eJ8xW3Mz2X^I7zE6~Egndv&bzedYFGA5r>GuebIsMfruIkRL_s4@~nH zdrXu6OGR1uaiOp-h?klnzv2Z}-;DSj;6G1`!M9QU3E?Qa0R?*NTo0=m8mw0sl8 zxU+LudbsnZAPOQLguV%0vKk%;56(2J*p(;rSW=wwl5Vf+tz7+~eRO+oT9pOD`!dfH zmQC;qyD>qMG9H((X(A;OY$8eC_4vvcD;G@NBt%klA(2Q(GAEn5Ve>4{vw^OeEGJ5f zM}jipSm7CS-DUt6p|nK%kkaaMT55t%On^5qbGU7~`g2vWi}iduvH!&9ztAgZ%6C_S z>br+}Yk5yD_UtvO)J2)heSd`4nWxvgZQW$FMcSji^<0d^0~ni!!C6j$d%OsIf^i#7 zETFou<7n6Uso}*-hDR#R#stBEF6~!HFxuncH<$kRW@vYJr}1shu7=C`G{G}m%5|J# zD&-rlEGJk=QcN#dZ}`6DsH!9vOYLU4qDy)%H#bqK=qwRc+>*qy*&yhYElZVU!}CTa zvf0F5rKWvz&1Q@S#oJSwDe$7GIfjvuq-4@l4NdcshG|-s?b&WRnIyJdP1KSeNhTXa z;sedi8lor>Hf88e(l9(5cj)Q5>ze&-thexQbY0lKUax=;QCj+K&=S?0YZzCrx#Ik_dVq2fcdqJn=enL}Kk-f5@lwsKu4`Jp zkxFTq%-C24FZ%yqf?%wj34%;}EC^KJZv~pJskxT#|G0l6`S7{dFU#NjXZcf{@$dg- z^dBr_vn-#<0niUs#Y5rd5g3O%~Bj~RI8q3=JWYR(zNY2%3xDKw^a3#{#QwF?Nyb% z>F(@?@i9Y^vX({6(IA&|6cZX)#<3Gz0+g@WvT8J&yuMH1JT}(M<;JwK=T#bo zQa=9zIml#^$#Uh)J6CQ0VL73Ma^g@ZCvwoHYS5s@pfyD@gK;Tipi9U!AO+C6^nYrl z6ri71N`i_hDWMP$1liySE0`>~{Lso5%lf)0D+wXNK{ya%K|n}_tiW;4q}IEA9l9c= z9Ub@YK{L!l8>~YE9EaA|gQmy$w8NM9V@w+7)9pWd=%H2bpaa2+KLCp zKs=ticorY>^CJeSVp^0}0E=I84@Qat|7r6-21J!swG_fSAk zArT7;v^0^lE}qjFpw^N*3%6DIC3-2hVz4Zt1$An`pL$ z^m;eM?p8I&(KJnU2mH!f_1>E3f49n=&)B@-)$LdQQ~yWAT4yEy(YF`;_3lv9hQ>`9 z7X2Pr@mIrge-5nmeSnStzR(sCJrL!Rx=anYc%}^2Jo>G)m>|eS&romsJp9O3iE9_wC2X@z{22*4}4akwQ_rdny zy>oS^dHXkivGPT(eR;o4e)O(0pI+A#M zDz$0iUL5eDZe-}h?5Ky`R4=4osa8xv4PJ3T4e>iAiX}s9pufZ9A0h(U;j0nC$Hatf z=S6|7n3m+tIM!TBQ+eB|p!;n@QHj8Iy`oWot|Zz9bVv@5f zPWwfHs2Z!J{d8Vcc~(v&cv$a(QS$vDIg%2Lq^l@Kc6&DEX}&G_em?6bwTrVsD|zN4 z{}+9C4-m4GK*3%JwCfeXw0;H172}4+4;@{h6&m;1Kw*#ep(n$E8+91E1WIXj(VT*c z8h6v6gW^3y957U4d*{<_Z;_Q$HJB4if%(0TOJ2MfBvavMrXms7I2My1}e zHJ%rhL_$z>-7B_Dqn^%aIw#n6iq%vCqqmvzTCLG~tt#=ZCI~7%RXe#{!t?65T0+!R zi%ke;?q08#ex$^@8y#b-$#tsBF>_T4doA+J9yO$*rCRCDY$kJFby*v)HY}*|x|#H< zKl{@lrK@f#MVaA<=(y=jCh!y^DE#Tj$favH*PFPvJpP_{Jg8_SVULY%-n?b=#O&5> z8#lE^E!np2`^7J)NCU*T278P7Tc~F($HyXT9tdAdXBGGcQk%(ah@!+gcnH1BMT{h5 zB2AOfX1UEJfDz?300lhLR*Z{r#L_!lFZZ zC5K&&to9^*ztVxRTjiD|k&_kqIQza8$6nq$Y?wFYr9<&2+k+_0zVa zV&o7Orn(}vloPtR1VTV8c-;5r)GH;wD_9G4ITjb#H1 zE~X%xFJ!BkAUED1`#qqfK1Nc&UJg$?W9Rt3oMh0vI!jY z=O`N3ojxBDB*G=R-b5~Ca3jPry_xCkR2F|C6|1C)SjjU+_$u}IQHk$T%)gU~tyNYTG5G;}isS+r>5J&<`ShTzi zqzRl6JYJF#1bU?ISk*GXPFqm~C6}vL^94|?pt_dnh_>yBmMA8ae6BrOD5$KYh`eyw z`rY-UXBtV%G*h0RvQxV5xV9=OT433BQj)}kk+hS^ENgQb+&YAHO;fW3UJy*;=th=L zu+TC!ps*>Ru$JYxfPejDl5^}DfL1?cW>kd}6-}4%G4Q-<$|otWNfK<)^m2wIE^J

&Br$G(q#3e-@aMb|jUNl6f=_vzcFjOrzlj$C`KI-Ctl_@N$ji81+ z3Bkc(CNsP}(DgT_)73^6gIkt(4n5?_xm;%ge$w*9# zU+omZp~g3)Qsk=jduPy7SAwYJT!*VM~8CDT+BvTW%B zEAlL{>rh3?1Y0Iy(Zq?kJ^|y2-&}yy}3QIIEPjH;q8H%zue*!huC^= z=HOYcsYUy9Y;kLS&m8yVB}?=LOPgrp_!-`Lj%T>~zw-?KI#|X#&wAan_$*{C4C6c= z^mmt@?y+;@8=oVwtT=_|UXFlng@5}(jE?SrS;jWaTxjS}o))vd^I>5>@+8Ynr;CLN z04qiK1Z*vtFM!x9`Fg!pEPBaD`mZIY)?S$lJL9>WZ5hx#a=DRKw^^?jVPqIaHdn1R zTMOS`k5qx{4Do}rX_cZ;5k3aFcs^>w>=(X3&JVbGTjsXZ!iUzo!PgG=$JzIX{y3kz zatB>C=sGaYXo*FUxL#A!;|~g+S1iMvdw z=TY5pJBc5EVAj#25o)uUonGQA=Vyk$PlZF$E<>me+u;e*%<5{27qUcA5e#IU!^Gwj zK^FdcNm6sawLZfpl8%@nN%dD4+o@zSZ_w5+tL~I*2>88o*wmk)h^HuKG7JB(9;rcA z$8G;C#{Q;N^rVl$dlsogROU6I1JUM%vJ{yqz6bIOEg8sj+Qbo!4MeFJDOV9_ve;1( zMFQjr>5(c!+u5+YhK23`VjEaZl;hA_I3L4%LTzZKGScDY4V3`KgREEr zYveSIPw+g3i>~Dy7+0PyOS-1(mu|dp*Yp%mM%&i~UMg+!0^%41Bf)*?3Bto^jxQ;q z=(=vvwkpMf@9R1%%*@`!ZP+M%}Sd0>@Tljw7;V=iLoWa>2qD_KORf*w5qr94mP_XIgnnloXj| zC6%WZk|65s5l3EZatqE!1<{$pr}&!$&t{RWuC?Y6`j4M`i^UKc4{85_yhA zoDL^|Un&v?iK439nRl&6ZQM7=h5N_GSk|=K70H^pcwFf00vI!y%i9u6U_vG}Fks0_ zo2Fr?sz+>9(KSoU=l5;8WYf&-$Y=(!09ya1?$)h!j7cKrvYRrg&23mZ6V+Cs!neFk zJ!2Tv`W#w5m4=lvGpfVN)-jk98Yg2@(;kjuG}y~x{cjiW|8FvX&HNqnB=b+8_3tx3 zWPZ#%&HNHP5xRj`o$GS6o0BoH81;F`CqaJ^90{^mqA*H4k$j?*=29vNDTIqzXml;m zTg>!uz8KjYbYKjBH{!lSG>7ZO`{*5oOKgxdV+%E+^C9|;?1jP* znC9lv=_iBC?BpaOebNHSWX2_dYns3r1>Gpa4(g;pa()VE*7!^+)6HZ=(NP`8%@{<} z+-fZ=%LGIQzq)RusMOz! zk^EEd|NZn&e*&;iA%7(o3Zox?w+Z0Y^ODJ8T2@2>Vx#0Du1wdY8Pl)Vw!=;~rf(X* z@q%5ohOKh!!h7^IqJjj+w%LagmW6AK&Tx`41-6S1&18jjbG1UzAf@6&u~;pagN$i# zdb71{3i8udR7V#0q%+;U!FFrD?|Fb|OQosqY+`b@Q7o9Ikl(s>+wNAg;!BbqxKpjx zbiI&IAr9#o1RE~LDY-91A&80pjVJ2&l{rMgQeJ*}OxIBy+uNDnV1A4F9p?9#PcnbR ze1`c`<_YGj%r};3TSTWfX+T@E>XDeB=fE&ysslX^mH|y~CaLby2_ebGL`zZL0Z=kf z4k+P8szXGtP#}iTloi~Te!WN*M@%$+mYgPM5iIVxj`8Uu#EI3m?c!d~zw!;j>Hqvv z;u`|XlY0dgaYnV#Aj1l^`u04qQMe{enQK7Uwr6H`fK@gvuvTMg*X|qZm+vT+n#~K0 z%j9-hO6EbHrYs{ykw6?L(|)zvsOywI0ZAjqjFt$HN?beP9I-LT58i@^p zY8IG#*))jj)atgVtE!NaWCHI^Iz7>yMQ9n~Z>bHvK`(BHT^;x%rXh~DZ>TogqodVY zCIj45HeAOp1eOJ+mI0R{&se$ql&~?MGZr3aZ(n^SiT)YFC;HD4MUMd+NS{dMyBtzB6w_2S9 z%gNulZgR3cVh9kxMx#B}lk{Y>cH@@q?Xed0AS@Ud3-mSQuL8La*wzx2gftS1-KD*u!!TrV*ca)F!&DwA3K8$be)up~?1_mz zl;a@UCF)z3`$0_ma4GZjovs*bCnw7l0${OOtyW5^xSs6+!!1wE z&SgAB2?~>w8z(1Au2U{_M+!w=L_8)uzfhbs-QTcbvR-%Kxfq#k*CYfEfXyWY+bI^t zoMb6g-@5h2PBteL^5ixZ6oM#qcrPH6``40>tiHbZ#V?#9q<<4Hz5kvQ{Lg;K{=KMH ztF6&eIkJP&wR9$BnF3cXPtJ|?+P*>+RH%epHrJ}>3;FSFQ;2c&s@0LXsYVctS`LQN zXeMnsg+isAFE|jQ+sch?v$LhFC-Z`;BsX=2gO;d-l(K+=Gq8nO$Q0t>^rS}1Owa1238v|(64|ASfT2Z5nO zL*igv6V^0e29U5+Y_vM;(Yd*qM59xjley<#bB)FZnK3AT4JdyQn^gH@J6=k5F1h5? zj@syrjv`4W3vJ#OUiBJ_Pu$YqK)$s0%KjzMM9WjFJ9l0;bNdE&TfOd^UD(d>e>-KC zgLRDfm0~iP@^V4fy5)JBa$d%7=W`3cp~D*iT~9(-uVt~XN=Q7}wE3{A!}~{7xE4Z^ zoE&(wL5jtRQt_(kDWU%rxIfLi?-m8iK(2yf3&(|1x+I->FeI8al0(3qVx24z%gKLa ze#HEg`2}+ZNiGTGvKz=txW!&|w1^6~4F0uvy^6Aj}Xag0dBQn_^m; z+X@H!k`*!(-!ja5C_zL^tkEHEm;P`B@!;yw$y|m-0CBl80W=;(qJv zEUc0QT!tL{8x5WxbzIoItKG2K=c(IL2$2-7@!K}wN$xYN>B z(s^j%44YV5$rb(I!vj8Ky!p}o>%UHB`(OJS%j)cV6C*Dnm-atFE}eYjkx&C0{r4Mo z?JU>rWGW$5a{&VHNBnf!yM61PQIRz`)ymYeQ?{8kXWJv0G@C$>q?2?qm7`Z}FbJm? zc1#yGHacFC1CE5@oILGv#lrTDyQiim;TbF$)p7~ei%BFm*+#03=eYSq4H!IxgTNd4 zMq_f<)Ks=SF}dT)@eaI}^|5wC5M@_pvmvmB=1q^6>y3*=mB$swr(5mXSi-GV+dHxp zv66J%l9eYjTafmni-v0=LBwFcvlwOeOccmhpvW^7^YryY7&-#p5vAwR+!ywVcw9xc z&Z`IhU(|M(L=}f^sN8T7sx|CIw&D%s=H)g|6{dZg^ty9X+sI%X(D#8NIG|{n*|f;4 zLrRVqyw{A<3}Q8NK+?nZ60Q~^)Knc99?@{S)6;2&!S;cIELNM{W~jnO@*?{A#SsW? zmvZvuD8t|eqFV@mA>~7RCUuFhy>Z2Vh~fL%>3#A`ADB3J~TZvR-OL zk;i>MZK|rJsIG16;O{JG ztN59cSPHV*!bbLq)z_!V&tr=Z7dxGER6m)tt&Ez0YVG+JLYs;<{4TkC-hJZksczCu zx{a~%$#OYC>Wz&=5xKE)Nu+*T2&oJdeHPzNXZ-y1Z11LvCMQRv&E=An%mlUCRI5}T z2d)PAFKZQRLM^LiAH}aK%Bh=PFk2XNX95a-c%`&L1tw3*Hu$5aNj)>&sBcveQ8p)D z+Ii0I-L+BAQ$>m56{?yx5ZuO5v(!yG1mOrx*9|fij^ihTtYtX1n@RgR;A|imLP66+ zL@4MsC+G4%dide~S9HsDQ<|GhF8tP7Iv1mdxora!b|zg)CMCzo=2AYJ2n@75=oA<&0w=~L zWi*xIL^BCeM<51ub!b|>P}6IKF&*x>%(cxr4a#4Z6J%V`UJZ=Gk)iKN`OPnicRxOv!frliMqsYZe!nMR3 z0Jo^K3{hB;ig@%SkO0T6X585lV#hs^O+dLC$z=2}B+hXpFIDl=o{StW$-;#T@c%;1 zfd!#BxiaM}3Ep*+@L;jzh+Hg=PZaXXihM$`|6fGtoIW+${~1vykG_HQ{}0)E_;45b z+4^H2``AbSD^=-qCZ|R^MFq%%1rALTh1?j*Ft}r*&2lMIl4Oz71xYUyvSY2zc(a|! za-Lf$H5;{!CuKL4-M)2dcDCG`-8kEw%8VmYQk1-GHX~h{kwogu$UvXtIUvgY`MkG&Ada0LQ~M7E3prqrMZNRp8i`v z3O3#uC)8Q~ZBb`=lz9w@%N(jrZ6~`>Tk0~@le!i)q;5gosQp9Q3fKh~5?iE1P!gM< zQ0)-C#2U(3>@6bEh|vDu7#yYjC3T>VpAVOiAuf_J)kvD5xd3$~RC;_m0OFI|q`7D+ zM9ej`H>#nxWWb0KR22@qXl&ry;j;L&d4z@ep*Do<&VgDLa{NYbu17iSKsy<{(|zHJ z@j=1vaIC;BU4{b4zVD*T_*4Ad_ix|*w6F!vSe5eNjA5o&+4pnj;K5KG;93F~R=|Z3 zb>)vO;d3cjbaJiVGfXq?A{)Q*$=7viHm~|P;W-Tko6!VR4sl@s2!k_dZNkz~|tZrpg$WNRc}u&jFRGVOw9t5n*)t$V|+UDJ8X zY9)Ai=j3D-<~iXw)dB2WNoRQ0K_F4Nl%AZJ7$9UnMNj4Dpk>3&3tcmQ+I4E>r71Cd|?A2X)2kSd2VrR{DQY$u*-qz3tL%&PYG?U zc!tS|#lpf@SI~>WeSW#?F0^cEMH~3*GuQ7kl{4eHzGv8vKV*Z)=F0G$f zkFCqzQsl#uGDEu;$ElJ+sb?wZVKGW-KtHkGG6;DXz%;S7iqk{hJvbbZU`R-z!~uDo zD(%OZg<21*Q5+Az;v}Z zW00}=6jiKSMK~o8`~d8*5{fuDS)iey3od~h;Ura+6~y&xnqg{&tRZg5 zvJ725b36C=+NZjDrp!(Tnv{Zg%6%&H7#WfYPBgGCxEblOcD;kT{7?l z1MpbU4k?@uDLhYOdk83;M-c?X_CU+l07;+>4k;iEPDb9o3MdVc-Bg1|@|ojQEVGia@ZmX5cAuyjbn^&~UNGMZOB>R?2jhu`C8QuhSsNj3xOkhSb!fe~s3R>C7=$?w!sS3Ujl2F22Fh_{T20 zl;e?%P;DV51;M<9v2?Xoo~iJ;4KN)Md1#F_%DJst=GpV zp82;GI+8i?=ksjrL%RvIFdQfUfg!K!7nm|LU^wV^`l z9-vVsY;|UX@Y2NdUs>WxFT3Rynf+ZNUvtf85<$>#kd_EnERrk=qxmF^QW%h|AS;er zER9c2q4XAyB3GqiwG!;#J60}x(1eil7-T0sgg6Tb2N?B|NZ~He?m4<;BQ$vAnN@Pd zVlYyvWYV^!AT(&AQy#5UOL@~wXS~r&hLDR@H(gVU8Ou--3m;~0Tzw_K{`()lw*OIb zO=LHQ#G*`*=eFAra?=~zjYfdfbV!P9wptw>y*{&XYI16-1uX@6)DU>0q)p*B-D;&# z1sAg?i-5_q0kWz1VyT-g&gAklH2e=)=Yad2RN+bI}_-{;=OrQHxh0)m0*!Z6JC?YRO@VD2;AKlsF*V z0Syk0M7Kd{@x1w2^cCFq;*TRlYHge)v=TwKpP8CY{08~p@2EQa3C(p|iINF|>AxSr z`oJ!rONUXVnRGe@oB&a!BXH7a_5_?XWnDvQ0dT>rh6v^Zne_AwB275>h*B1DP^eAh zTql!CBAg#_9`L+ofo8zFi(r2Ni4my|jSm%C#eCkj=#ZceC0dFsJvTW8z#)x-ftfZq zW)txy{9;V1uh5v(Y8aC`oyiEIjk|UO#BkD>RGC^2=E7$73#+e)F?~;e-^`EyvrFFF zzdekj0&jdFYRI{HA%z+$DtnKdFSN5;KAM?yC-QlOO(jEC8^)eGaKAv`2CGHvDOhdy z`W-u~BPNu?g@-D+97o35dpJq!Wik#yR!(fxO zQ4!YwA{;EsN5b&HItvGhhrtjMaz1Jq`6&w7wOV7H7T22Y)N9$`X9WIyRCO4&YUwnq z!n=<(8)TA=VljpIW)L;dL4X}dfQ`V8q}Ob1+;q|8$VedsJ1*CDQLtmj&Z!%A@0y0$ zYS|R-xL|TJ2lIgK_cdDXbglI?4bM_x8Hy8m4?SIx{=Sye;2Qd&Y?4o;WE z00CP-HsH-0`(CiQQ7hGhj2A;22B3`zWOt!L;tFUZZ~<)qluQl44MaI#bmoKW>1-)K z_SsRLOOTFI zb2wsFaeYTDFZ#b0uN#!82>BiSFyzZpCR0Jq5e*&b|Dpw-Hyulnle>zllaZHOX(rtS zfQit{T}~sY9eEloXIrS7gv@%kir^~Gq>kyfB8{c|3@m;?%>&0Y>%%b(-wT*WIs?Bn zzHB1gJm;rm)(2K)qxOdeQvqDoS46M|k5*J=Npf}Nk1B;9;D7U*KmX}XFMiP+A>L_Z zcPBjs+|IGg$3ESH6S_V+ju0u1pr8Rf%0!XLc&R7?Z=I^6jwAI$8+yv~QUzJOe9PvG zF;ap|HW;CfV@b>;7ahk5YQ7}lYLZ)ygD~Vt+C0=}jNHx~^|c@%Ueg4mi0ck3*-q7x z{YvGEa;r5nvH&C*dc^9?XMnnbXQJ*V#nDbK%I;fH6?OI4&u=h)$@~rT_X8Q;3}rZC zYKHqiH2Z8Qav>@~BlVf~9MujD_={>c~Nl_p{a=nHCV%(E{0Z~&s~7tHr$}k$J9x!n^xyk0wzJu0*+S8E$aDw5|3>nTduF<9 zr*p+vtq$YVYBjg!i}~!9R*Otb?Cwr1;!i9rn>T^W7QV4Dzaow7}fDoi}(qV-C zQ= zQN%rdyj)aYiTgHaMn_HO)w6e&bqt{#%Y@<^F8|LA3w=%NM)y$Ud594WSWz=9Xg-kJ zp{8{H-Is+?QqB9k) z0*aiHgeW2FH}|tMRqh|wUQg>yV3rc}J=&w}gZ-B{8GFKL6wBq1LuIoY$lJi7KnjxACLl7$tlT%?#GzH__3ZIYIXw@b&*nVkg_lr z_ASNfqVL3j`y#h$He$agMegb8;f>G>(~DA>h=q%PFSZdv#09q(srqZClbwqi39LgJ zBn(KNIyZBEsadHANJe4xT5WD(eB2V#jmDLmnk^Q?&Pe+epL)4@q}>X9nw)eb+kcA#Y-8+hngh4p3P~#V`Xh z*(ZSZHC})Xz>SaZBA>pbR3zP*=hX@Y1YRO~8H%F^H4YG^E{-)emJoK9P`cAwXUfy* zbh*-3IYpbuVJTT;JC$k?v0VB5&Y;aoB0m&ub^rKnne7PI*#bl12NK#h^!(BO09+&NF7T55$)oNM6bEJV1%LWSwYg4cQ*>EFtfl!12^Yo*2qL>UxqO>)S>(s7%*O zf#@rnH(#kF9ppq7(o-_@!9p$wF9*AW?cHMor)(onXW|g1o?~JJ@*6; zy`ulj_elQZc=f(ZzWJWV`t4tc&l3Jm$)B*_{pCNj>ot@d%d(;fbELk3y!x^cUsX{| zA?b~ccXv-tk&%(@>7ba|)@otsWNX#&%R6a9PhiaDdWZUVZ49zV-OXpKm4YJFIxX+D z3(o{yQ6I^b4P3m9sV7j1-P93YmM@H^(}8{4&Yfcl@_`+HOYR^USBqT&?7S9$lnXOxEm?t2`BhCz!);v*1G&Mj&Bv7$z zv#~SRs%1~3d`NDbZ)9k6HC!bZXp6vxFibCO8M0r_?hUAb5a(!T+3}qhnk>(?~rxXUz=o!>FO=L2A zTpwwGxOs?)Mtvri<3M%h-j_r zE>|7q<>yj8zSexz$TR0rK8XBBJVC}9%H6u{gR0CP*7Iqf{IO#fU;Mi(+vn>?*smuS zZtfpiuYHvN-^|yvR3CcPe&Rt3EBodwj!QXl=2_H}Se&_M#oSDb`yT)b`0#p-6XE4# z9CTb?tU(@CEPMd-e!UD*09>&LE)1o@AR!|R6_zG$Hsq?5X>KD;KML=Q^^}NFMq2Yw z0jH4ZE>3_#+41?%B`G7@4%6@o@GmD2u%rTBguOI{L_4FH1a2ovuLi@k5ozw&Nr0It z2YLf)F=5IdT1-YkZgD~upbX$F4k@KN(q10x|0Nk;d%aRhNN@uQN~R`hf+Gq9F;@cr zl_yXLN#l?PYUs9)30Fwb(N*Morp)dLX3j#Q4wB$jUtqDN1?{#ctphb#CsZQi32Q%K@@PBoyTH z(hvgZNg5Yt(AwR=S|ubSBI6=eLFqoEAo+P2bJ2(z_^phl7uK)+#!ZPbqIo!W4|^%X ziwmvp$)yy0Ac1-tx-k{onUHkG67aG zM_{7Em4#e{T(00@rnR^){&Cg5c;GzyV$j62DdVL&Q2d*)G6y{nj+bTw5nI*JxQ&&X zMu@5nl%%L*{M5I<{jG0(``iDB*Hce@``b@F_2iTHWK{*}m8l#GLBJ1WK_N(Rn8J$J z;M)Q5^9a~N-kNQz0z$nIpDb`9+&Yp{ve$2T_Fqw;81bwAR)b?v z)g);PfHC-lpe5ZAjt?jrD~cR%$axmfQvx6eeic#SHnQwlNe&ttd3YgRnqkMqe5kWZ zJJ&JW(o0}7t>yN`F?hmZffT7>wM_d9sh<)p*j8+{(@uz;dz8Y%_V*)046swE|AqMq zI6}KDbbpgh|C?*Ab3gyd<~I`^sj3K^Lqvd}0=c!42-Sq)tpXZEQ4TJFOgGAfz=YsM z3k$;WSC}*}nAU$oaudoKBP37FqNo;XMmh4J_TiAnt|a{;39 zLjDsb!ipkw&Ia%?=b=bxQHi%5qF^IbZ_~opH~}#*NJn=j3Oe$pGGYO-fr~W%wN?6} zirI0_lmCQBAZ^-^`Gjp)^~0v7j0Qaso4R47`A`b^(jfWTS+AF9;HN60R7)-r)&x9L zm2CwXswX-^0=ynmwqeGCWO4#o^FZQM8#oV={!v2kQ(JdqzBj{6=52&i zCS*VXdfEd#0!Rj_28D@97=i>nq$6?!U|7EBfRph2Q!%gjYqT4k6YN3ElldylggK}T z9nEMMn=g?=2Y6a!x`Z?sg`lDUA|3Bxk`0n_A!BKyg{=~jD9S1z`y}MSRQ?VOmC!uN zkVS64=+Zu~xi1>-7MzJr8dN-#>a0xGWM*`%!6QqnHwQ+|*M zGJZ)n0fIsHCKJA8qM`vzbXfo+Pts~<7N99wa1bSzt&jfo$`|3LufP7*R3n93MVY!{ zap%Gx_pfbX_67rUhGc8LEqCWO%(4Q>2aPEi;PK0SJpkCg@`dzA0c3CY%1kg6Va z*t}~~Is+^Oxj0rD#Rw*87^Y^b<}GZ*lMru3!_PyuWP&XzU`vP}*CF`8meBW+ZUiSV z*b>mf4&3{KfLYGaoG5dEprhUWUs6Zex!2v3k3O0f?!Nk(ZRJcrXI!*QpZ(y%O=($4mT_0AL)|4+DV({IvMDNx(Gwy)7yU;kmg`Q(ISqK* z9{Q-LNMFC3%HC9@54mN8%y3h5YDw4GE<&|6%q&_QIn9{p$VKQZ>NuhN43upiWzJa@ z#nzF1g<$xL`~ONZ>#W^H-3LinwS|N1drOv?hf;*;YdMzxNKOYcgfq*S0lNAjSpEru zfu!qx0>wTJ31t`&d`$}-tUXYoSZ9XjNEgF7N|)FEzZO;}! z`==vlpyQm6QoGkdQpN=G9?HDnNeDgAG!EzlOagfa5E7J5MI@dmKL4zG*QmT|abNu+ zN$NC)9VIREis5E+wk-(cMx=D0C<{_JAhgf?&Uz1y_Kol}=397n>QS9oW%gP+*F-pz z)9@pjq&FAUdkP1AsCg{$4QeuN4`JaD6c|?OhqproALE_EZuh}M33CWViX^GDZ=bp) zMOi>PkGYnFNm)iPhxPDCnfOhKzx3~yzxM6hH+ku$=jtdLtYNNsUE6fD(_%p)sxB6^IYmUFr z7^z0?zJZFi%7CO9nE<>aW=jhW(c}tBQ*mMihHWG|2Sb#`$*cxu#`_0D6h%oFhiFHX zm8!^BFy{#}b4BQ`sO^BD7NqQGP&_PK1?zNCd6eLC{NUOl)2}sx3 zO($j~{U5JBL*wAU^zh)VV(>mb7`$FWz5wnwVq>tH$j@+9TIvKNIcOO(C=96+6C5N* zfN!x1cO8m5q6jMza=cVZLXKoQQ+0Wv58HI@VQn(XvkRD)`IG3k7zvK!-=lfT=$sZy zY%*kvVNXSxb!1V7!+f~e*SA&=&7!fu4(*$JehP(LoX})MIAmTk0}B++Vcru1HpZ-jQ==Vsg_0^|^8C>aV;scf{sx{M9|7W*Y>-J~4m zrCvT0R1`~yNU{(GsfOlU_{7~QDj`y|j?tpTr`j9Tn{JP4eN>P{k+eKmBT8osXCSoe|MATO8tDZG!0R02&;qgC*bQ5qJWl8u3~9L?&pCZ`0xh1%Wgu zM)ms+oeUMezXo4~=S4)d9iM&`@mqvL-j)En0ZBi!lmT{QQYmnbolDh&hARmz+x`;E zA-$h+gU@*qRb(Xf_1w#=1KRXUuRdHvpURi+)4(Wg|1oF zv*^iX9WxMR6d{Y2fh&1shY#DXE4K&ih>W25Y3sKLR|H$3J(n3YKS79F1-V$T4Gp9g z3-CG`Fb=;8;~kUIuHL1nz(Jnhe|WtW($jo*0<$}TiJ_(0He#0HZqww%JCQU?TRM%j z5+iVv8O#iLH?%<|YpvF8yjL_AUcVlPLBB@h3r6sF5G^;wT(ioI$~00l)}KSx5^;5r z4w)suDpIIn0)Zf_6*?tT*mIFx8H(80N{R%?d5s+|>)QzHPM}6QS~cM#_UwHY`h~(L zh-?)V3l2yiiaghJO#OL4jet7B?6l$0re%FhqJx}u#Z4mx{QCX^;nrRs5N!ofh!Db( zleXz~fi4CQ8`@*0y2*AYE~hG1cdK;!4V14ZH46P5l{)2(SP< z^pb#DT!ycyNnmjr#i3xPtGNVkQ1B1s)ljSnO$u{F?ms;}eJ-4Pcz?gZjrTtT%j4Y~ zPopBhJ6hvQ1P#`K6eU!VQ5;i67KMuVb*Q^{zeImd-HR>2WmGyGDn}=(^l5X4d}Tdq9n|r811+{LBM#fb%xu(%1F_Ocy(D<_ z43$Pm(phJb9}IGqWe?%5mT!ztOtj%X4^n>X*xDHQ8{hcG&aq?HBO6x-(2nWCtrnL@ zSy+_=okRK7at3%7OhqvTKYO+qAh=0O7Z(1G{kxy!QmMAwL1DOav*tyOG3L!0+IDPJ zeVUnzg(=>`@jT$ZXlJT|4B}w14eV45xkOm$OgJC1#B5b++E)>k8RXr%fkND(in3b1 zXsDRB9(tBxBzT(K#9@Xo6oBaelxSt`MUS59>OhCrBXTTo3O+r6~Rna3bRZK$jssNe6G?&A!Ed68{h@jI}>6N zD60bfd*Ng2wOB+~%wuRTj%hHXOoy3<^xwp6W1`jz(ag}^hi1D1{9R_>udl`4HAhuU zjKNNb<)W;X3#$_K05DGhCS0M~(qk)M+Z z4siauO%u=&^!7zAi z%N!vr(w;0XqZ?^dxYX(73gm+pRU%P zy!iGg-$v2`oN<_)_$xnv4?^I+@&y*toT6$RkNR_{Lyl@*`SZgulxO>pixsrnVD9(f z*~e7ZsEB*nHTw6%ja4mIhv` zn1a`mY#Qqa)@~q89&_|Gpu(e`1cI57{DG2tD6T~{7EP_vxttZ2SfXW^uHhl3L{HJk z=Ki-xZSC~|z=AxjP+@8`4QT`wuP{R^kazb{B*JMbVgXa4kSrOxmq|wIAXG;7%@DZM z(TeIffzugjX9HBQY!Vv7#Vx#Zy}=4yKb8Y;LVs)?ntyjGgA4LCGNLHM2fh^Qe1ovL zknKnC95uy4=xM0&x6|5r5nzsMp!-7dA7E7e;LNi+2@*LTD2M<$pC0=%EAt8x_}B{U z7h2N{Q9JO2!U+vwje&q7LRJgooJCnk6lH}qCJBVxf(q6a{0b5*EZVz}HWMfXQ(@tH zmQhR=eQ5e&9|8-MfDLLWQK_5v_m7b`t-Ur;t^wKs@MP2F-V6f}hMp*8oNUt8jfx|1 zX_O+A+Fzw`WKoN zNJjU|mby?`udCyJz7_p^1@rb*s#!11o=HV{47vV)?VSmnWL16d&%IUE)m2^l-nCct zQoZl{toAG{GYrG*(-1_2Q9(r(mG}rQK@+zqMiUoYqdxOQ14Ko$Jv51+&Qp^RLyV{q z+|hs%M3}CA-~YL{s;l=AM0}smtDbx6&be!y^FROdKmYBgCH^%Gq)cvlV7hG$kUb7< z^-o9L&6krb0lVZ#x z=-75!Z2H)3p;QxSTCBFwM6%$T=pghEBYrHK@%Y*%fw8#!Wu^~r$X*j@DN-}QiLs9n zyTGfOh*JVBi93WrCJ8Tk9PW}RxDgQ1^CLTA9*E>Nmca2rv+#3_QRpVGy4A&G+PF-; zP+hgc;--=n`bxUfmKR0Ss*PeYlr8@hTYYZ{k881Tu916a$sC#*x8!@x4}=xeCcouG z5XHS|($>>TfVSvs|HGUnuD7W$TajDHI& zMonrBnwCeUu%b)ic5l{t6c`SAPDXu2&k4O|**#359rxiB_!-$8K`#a@I&jO>EOWyW z!)c8mWa8GWMi;g2UD>sk`W>%VJPvA|{2$R*uA5T}~1T3v3sYlt|sfVMRZBWtCgCpDMe>>%I6`dX6w0`_brT|k?Nn!~y{q7LYqV~e zm#u*-IpZy0Tx*DHN|8ZIkJpAggS*Y1w&fzZxYnVyG3&C&uYA|m(}RLpO?s9i1XSaw zL=-@b*qE$88c#@CW}>bH^$vS!b8{jV@n=n9cW^&qN^}H*AF6)SD6hU&l{m1YJP1=5!+LVOIU;9oj+aK=f zx#-5_pBI_;JVp*3^NR$W1(v*rxL4RN7ULzmPi34p;`tp@izw_`Q=;cv%W}?GvR3xG zuk@G|;m+vBYj1d|ki zU<}bL6LSTm1xGOOw$%rgEL5(&_IHPk>tA&HXGS+|nveBKU*ZTsrgPG<1-iR8C;KZ= z(jb_wa3~Y4^d~oWcM--AG;(+h7Nr~ePob=qCOoxic{hqnj~1T1kJ|nue@7cOu^&(o zl~8Hsy|P}(s_3M6&}#pVS{K&7mv^OiB$JxD{qL54OyBNb7|w%_<1w*8huS%jexYef z-eu`3y0+3})-{qY-izoE8AwRjbW}~SW)x~92N9y=PrKa{aI!dyt~oMGoD??R5w2c# zMpx;4<0IvA=~^O)aLx<>t=a7Ez}E*St6&Q`e*;D=_0mhL9^)5lZzoUQO&Ce_F-O4o zUSN9o6Mw(G`q|4y#ZQj3&{14l($Q2pgF|^tBy&SBLQehrs;y)XKbicz`BTa;c5|0~ zj839o=u-mW}`Qp8;Je#+%dI8+#bN@J^IQkd7|fCG9DINZi@ zXQsW->^qb&qwZY$1R`ToVYG-dk|UCgIGYB2Myjc`I0V9jyD*$<0*1%VQ}h%1C#Ws* z+td!S#ylH;t;<#8iuMoG>#mdnT1ZCCW8p+5aVdQRDe8dfBn8ZpA%L zvs-UZCcDyj3$NNtJY=={x+YyUh}5q(HO&)zhYxk$^P=@T8avP{ff`tI%4{KYNLiR zcP@gWFR{BUe>cGaAGDCbCwZsJsD%bzV}iBsnwTR0m;K2*@4P&H-s$0iXA-$T{nOdh zsTXbZ(g+l`eM9V{c{HSF!71LfGV7gXXR}t@TEPPQ(0^JhKOtbG?UZ>Z zh_AIl4ET`S>&Hgx#fuJy1+kBBtNx*J?fTmb#=0%TUeB0c?0O7Y1P}~+iNrRd3OWVU z+_DCGlAwOHVhwx&35{6@id&u6dxiE{-I29@R!uVbSU#&U0uXCHt7EOLw$Ew-ZwQb? zqW-3)dH+UKF>lZN7ef;lsjJm1)S?$;V?Jq+$LuMCi9-G~?u)&zDS}?Nt>d-iUz6in zY`0}}dnqTBROfmY|6}P)t()X(HPc!>6&WN~;rc-{wjL#D@xCEHiE**h87%YLeKFF# zu)y(nTLZu+wMHVQW72SYgV9L21HewGf*5~KkSts+AORPOWTT4`vS&C#!Bi1EPm-;Z zEg(`X^tzhTE#A)>1|qSy#UD%ndlHH^_r@Y^Ia3s*Ezb8>-(y_7_O_?x$ouyNwin<3 ze&bfJuV|WX>>H`vE|6_+$dMu3FV6LN6lKK1=jF8xqDeA_uS?R2;XEU`$jHwL^#X7c z4h{~@b+J&{(pJV7B=jk~ovTJ>J>FzH%ebytU*Kx>koyibg5v>2_@)15j@1ytpCIV++rSjqN|-yfsVw# z%f5}ZVqdSHYa{+mEwsI8DZJi}j)8E9G#D|{o6hB?ho+rFBtr7U;ypdtTx&}rzQY#` z0azX)PO`IOh+tiM))T;1H8wD54s)(IlO5_!rTp$_?D-qVTp8bWI(`1ubk|N$b3B=B zTUW^u=q{D|ddlquPdt~afTELwo-pTkL|RFAHa|mBXTXiS9lJ|KhZo5A-Zo#dlFyZU zN*x7nJe%tQ1_OWVLOL2vg%e#J?emYV+G`C{v%{f)aizG%@k+f095-%jQqJB_qH|Ct zldcOejV3)Qdz6ETn%p2VC3BU7qonEK1O(IMWCb9mic#7#a?Xd(9^LC09X)4kFMk#8 zI=S$mW6(T_2V?~+_%7qNHkY&awqPp)?{1NCht5I@IAEOBCC|An@8w{Oceq{ka`eEt zs`s`Xqt4##-ifJAo40f|ox53{SPq!+Sl%2R*=mlD4VdncJpT`vZRG*}ztxNe3~Lu9 zj;4!va#F(52B?AbTil<Dft=k@EZOG4$b8Wt2@w z>N>uqHsja6m(To$jIa9aDjG{2J&|y)QEz;>I=A7rwHVFjCP?8N#1h$%SR}07!0Y^YF&2hkGh+-391rth~27xiT9z3!Y=ge zA!`m{8!(qm1`c-`-a{D9a`|pG8E;REH;V71Nn8}kfV<-Hl*?&MnUQFmFr-`WUj8v& zk`4t;lyF#Ca6-$JqcOuVnR@g>O_@|eD(l*6mSr{Fhdr-~ zv7Rb;ugyIhrqUq#TYDb0W>Hw{q9H?5PF+(b%CT>(_*{nRDHrwm-QgmkAC8hBhxq&{ zz;p3*b(@7ytA|Xf&^bQ*(I#>`5&!~#A+CYs%=9#eT4M2LUnJDzH!yv)q%wh&(?o|T zem$g_L(#c09XSV$k{>sgC=!s@FcQ&FAR*c4(or&D1q=-1WaNh0_O=BA2uPY|NAwzom!A=s;AnW~ncj<=PiO8P>F zLL$i40z=snBqTP`md#6!3g|l(_2rNq{87JXr6SRuGs%M$^g1KPtG~JY zV@?pphY6pkcL6`Z2`1(vLn!8DTD!#&j9{=76ClB`D9g~L`J3Z@50K9U3B_VDfGEXE zCHeS(pLh0>A&^vhn5!Q9&PGGVXW0hKyXcSW)rU1c$?^=2-zFaUR|J5l50*s`wYt1v z4UNW94>6rrMWz=$f@(sEuo*ldE%}yG@==s6VTWgMDm^ZjTOGd?NLL<#AHFsn)|h+k zdj*rfPn24*XuO;OBs8o+AadKtt(hkUUJK(3P)p2+E>R$ti)SzVhLiJBrAM?oDqRQ^<_8QaHVO?PnmbEzrD;= ziMMtL^h5h3spd8G!{|-M&P)1wO;UCDWJ2kIoqf%HJ0`YlC8tjaRRkk?kl;PseSnZg zt>=xC8^sqHDUcRrYGR_hH_771SDhOrNku2hIbhCbQbdiVlNxTKJI7ouxp*1yPCP|0 zT6mq=l=x_3Me|m_4ZZ{)lJmB(D3nY;=6AMTcI9K_a$ZFqZjh`RWZ~i(erj5N#i<}Z ztRp|t1(8<5m{AkFU0h*wA(O?O(yl8F%ya5Yr zJnS^_fWgnhV+@ZFZ%|JN(C8@HxDV)p_|SamE{7>FY?cp=q{E13BTZtbcDYii{w8Nn zDD1*u82-{-)$dAruk~BXW$U+$?TqK8IcBWcoxBvdJn}bgjV#97=}7mN_005EJ~&e@ z<_ZH}tKMO3Uw<==&s5JaJ_Cf{D4XLHVLt1>clEROyztwgcmIq{Z+EOJN1V3Y7}bmn z^-CvNL#eWUFatZtDLNe-88ZXpjm3oh?C(4k*iqkiM*-h8;T z1N2k3uaNIR@s8-x?C^m!uzD@?H+n{VxBkCPVudMg$pZdS+vfhLrlBj(#Ljo4v9m#kRUByIiK@l?yCud6m2kFLGlefP-@!(Dywt73%G zrX!4mPnn2%>cpzNs@AzbL)CPfSg!1G@QCi;wftc|W%aO&Swn_93}Km2TM?0VXf$DI z>BtMLrzcyY6)T=C*wnct<$g z>TPlo&FpGU1Y=C-t@u%U9K>}Jqbx2-iF_YPFOYx9@rtS*XsJ{vSTHm30LFDQ5~-A< zpf-eXk`Egfl*>D+UgMFqx05ITHEIN^k9}Z$Yon%xWE8)9rx$cu$t)5M1X-Y9-pAD& zfi6OLolNv%VqeR{oS*hlTxA>BJZ%t9%7SvBe zoHAZ@Rx2=BL{vEpPbi#=PF4QI>}&Cqi=|K#5Vqb>B=5}^@a!qL1D=4-buN*Vsfqf{r6hZI}mP3vStPdsP4>da{x#q(!0k*)W#|&Ybi^5 z_r=YoMd`h`n)FWevMs&0A-zw5T<%EvL*YnwG5%lk6XqA!-;CeEdW;-Q>I5fw6I&ed zq>)VK0Q78ji}N7=BaBq?z~LF}Hd>lUAsQ~7n)iE1EQ<*4@`@q{BWu`MNwjJJH>CJt zU5cN5HUMsBFxb=9+&Vei>B{e(-g4#;KvDoGI#(CsbI;mz#`M@&k1fPsfDqr&AwoQe zajl6>Jq(nAQg`mub*m1525CH-Q9+GsD{ICu_EWK)?p7;TjrTtR8jtGrnkA&;GHO#_ z<%!ZXiX71mtV`5ukn~eX&_TU~BaTNy39e4V^%bZ^!?=U$6{uh#V*5(6E<@{JEE2I^ zf|8|+SoD<(&_xo?bU?rluD^1WmF4LWu<;XCZ}TtmqZbm?K!7o9nys%qJL)t$@@`{? zwek%1W`cU<*}ZM^mTj`~TuHMnu|h05Tw8YbSj*1y8<(9zvF(GWMX!Fp3N548&6+DO zN85Z*J^Vx{R%<8(hDfY1@tExW8oBasCk5{!>>(0%xz3M7LdJXk->2jsAvA=;=x+$6 zh|Kr@wv)8zQG+`F@m_eaU%gc|+J$R4!@`ljZfBHTWTi-sqDq})lDDEVv~FMI$=VT^ z?h-Mz7FMY*6JN5LnXx7$Sjsvrx!9Z=8K!<#QZw7D zX56gTK;mbU$CK)>$SVIi^?CJ0^=0+X>T6KoH`RBbLNrbmW*V7MYl19drY*;6&261X zb>;;*NlT#?XI&&IA-hIL2$;!_awh7VTDc~p4UT?g0a$=}NN}+ft0qj^uIypEv77Sv9@Tc;Ha=ER&lSI2l zxin-Jj$SQe1S!^KloKhW-xkPQrMUK7Y<`Z{xY z(f|(>vgNQdof()KZy$<#QI>mS=@R)#J4;*hh0aJmUn=KwQGf)y0|5YrdPogEJkbs8 z1~^p1Tl@3*Tn8AaB0L0I5So*{c%!DvH-f)z#W(!5`rqpB)t%}~s)hmdEwKm+qoUgv6S6N-QH_OZdXw3mbC*(~ z#gi;a(Z;zb)Yqn=OIx*g!*q?u34kR3R-KMYhFF1 zyMC~6jFX#Hy9Wn989&gLoA6 z^4V6FA-?3))KEtUL>ca$=xuK%H&!SS!7DZ#DdhX1$3**=+ z1wDu3@vhe9gg1<%W`gkA;nhh{NRu$UYp#3Qs9~rD^?c(h*TX+G?{$0I+Piv+C5$f& zgk*cFH4zRqIZCDB$-ePE=)9>V-~(tmo9$v$<@>h|!wTboOHK?kW_m&qPz?aoU{RSb zmGb#WXCc3})VXzXqLhvixz*AVA84DH8OWrap>no3(Aw(E=Q?|{nfVX<3E)h4G|AHf z4u6p~T8qnP3huZ+68`0)K;@B|3-PE z#V?o8^yzZNq;SNG_6kS5@qjX;=^0fe2G7kt?|BM zwj9#DZ=!A3;(hUq&HD)bv3OrT0`Kc#scrMV$vW>F02`)K<9*(y{+@}xDU0)k66w^A zbf(VrM%JP=D|F$PpR#%0$C-=WP*`yl`np@)qrL&pvll6&`rBe**7R#}9?gZGCZ1@S z_?L6Vr6#)N)32yBYg2F)=&qd+0kt6*O;3EG@6i6den7@Qa! zOk_dnizdm>0Vf2#Iz=yLb2cZ8mh-|1ogU=M&TIx_DgYW&lS3VyQ7378rh40i6NWV> zbUHmCYV?QV#aQQ-t;Ys385g|pnbiZv$5-FnZqKyw{Oa2_U4I=h`i=|XE_|4YNlQ4N z^s^92;u=m)v$Xm0^uGJ}57 zKm;TC0%&SB6D)0?nkr>1CK&5$%V*NX!F1XgZqMXvY%r5~?5wpYPYZ{7##I4XUmJoc zWcl5+GV8uieNcU537;dbe-yM5VxMY!tuF96^z;VgM1!m*l38s{VXZjyL@cwSOrwpg zNdz~YK4DQ*v?g!vSN9XCDS~X_b8%K>ZXKUkcWT9twS@d?bYJt~Uwq}&ufEdQ76

  • 0LReQR3RSoL?W4NB5687Zr9+B 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 literal 0 HcmV?d00001 From 18f00e6b2660cb17af93226a3a7fdba4ad22f279 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 24 May 2013 13:36:30 +0200 Subject: [PATCH 05/24] removed export to planete --- Sankore_3.1.pro | 1 - resources/forms/webPublishing.ui | 132 ---- src/adaptors/UBWebPublisher.cpp | 61 -- src/adaptors/UBWebPublisher.h | 51 -- src/adaptors/adaptors.pri | 2 - .../publishing/UBDocumentPublisher.cpp | 636 ------------------ src/adaptors/publishing/UBDocumentPublisher.h | 58 +- src/core/UBDocumentManager.cpp | 9 +- 8 files changed, 2 insertions(+), 948 deletions(-) delete mode 100644 resources/forms/webPublishing.ui delete mode 100644 src/adaptors/UBWebPublisher.cpp delete mode 100644 src/adaptors/UBWebPublisher.h diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index 772f2e4c..73d4360b 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -75,7 +75,6 @@ FORMS += resources/forms/mainWindow.ui \ resources/forms/blackoutWidget.ui \ resources/forms/trapFlash.ui \ resources/forms/youTubePublishingDialog.ui \ - resources/forms/webPublishing.ui \ resources/forms/capturePublishing.ui \ resources/forms/intranetPodcastPublishingDialog.ui diff --git a/resources/forms/webPublishing.ui b/resources/forms/webPublishing.ui deleted file mode 100644 index d71282e5..00000000 --- a/resources/forms/webPublishing.ui +++ /dev/null @@ -1,132 +0,0 @@ - - - documentPublishingDialog - - - Qt::WindowModal - - - - 0 - 0 - 607 - 405 - - - - Dialog - - - - - - QFormLayout::AllNonFixedFieldsGrow - - - - - Title - - - - - - - 60 - - - - - - - E-mail - - - - - - - - - - Author - - - - - - - - - - Description - - - - - - - - 0 - 0 - - - - - 0 - 168 - - - - - - - - Qt::Vertical - - - - 20 - 10 - - - - - - - - Attach Downloadable PDF Version - - - - - - - Attach Downloadable Uniboard File (UBZ) - - - - - - - Warning: This documents contains video, which will not be displayed properly on the Web - - - true - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - - diff --git a/src/adaptors/UBWebPublisher.cpp b/src/adaptors/UBWebPublisher.cpp deleted file mode 100644 index a979515a..00000000 --- a/src/adaptors/UBWebPublisher.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include "UBWebPublisher.h" - -#include "document/UBDocumentProxy.h" - -#include "adaptors/publishing/UBDocumentPublisher.h" - -#include "core/memcheck.h" - -UBWebPublisher::UBWebPublisher(QObject *parent) - : UBExportAdaptor(parent) -{ - // NOOP -} - - -UBWebPublisher::~UBWebPublisher() -{ - // NOOP -} - - -QString UBWebPublisher::exportName() -{ - return tr("Publish Document on Sankore Web"); -} - - -void UBWebPublisher::persist(UBDocumentProxy* pDocumentProxy) -{ - if (!pDocumentProxy) - return; - - UBDocumentPublisher* publisher = new UBDocumentPublisher(pDocumentProxy, this); // the publisher will self delete when publication finishes - publisher->publish(); - -} - - diff --git a/src/adaptors/UBWebPublisher.h b/src/adaptors/UBWebPublisher.h deleted file mode 100644 index 99409373..00000000 --- a/src/adaptors/UBWebPublisher.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBWEBPUBLISHER_H_ -#define UBWEBPUBLISHER_H_ - -#include - -#include "UBExportAdaptor.h" - -#include "frameworks/UBFileSystemUtils.h" -#include "ui_webPublishing.h" - -class UBDocumentProxy; -class UBServerXMLHttpRequest; - -class UBWebPublisher : public UBExportAdaptor -{ - Q_OBJECT; - - public: - UBWebPublisher(QObject *parent = 0); - virtual ~UBWebPublisher(); - - virtual QString exportName(); - - virtual void persist(UBDocumentProxy* pDocument); -}; - - -#endif /* UBWEBPUBLISHER_H_ */ diff --git a/src/adaptors/adaptors.pri b/src/adaptors/adaptors.pri index 4fc92ce9..33e7ba16 100644 --- a/src/adaptors/adaptors.pri +++ b/src/adaptors/adaptors.pri @@ -12,7 +12,6 @@ HEADERS += src/adaptors/UBExportAdaptor.h\ src/adaptors/UBImportImage.h \ src/adaptors/UBIniFileParser.h \ src/adaptors/UBExportWeb.h \ - src/adaptors/UBWebPublisher.h \ src/adaptors/UBImportCFF.h \ src/adaptors/UBExportCFF.h \ src/adaptors/UBCFFSubsetAdaptor.h @@ -35,7 +34,6 @@ SOURCES += src/adaptors/UBExportAdaptor.cpp\ src/adaptors/UBImportImage.cpp \ src/adaptors/UBIniFileParser.cpp \ src/adaptors/UBExportWeb.cpp \ - src/adaptors/UBWebPublisher.cpp \ src/adaptors/UBImportCFF.cpp \ src/adaptors/UBExportCFF.cpp \ src/adaptors/UBCFFSubsetAdaptor.cpp \ diff --git a/src/adaptors/publishing/UBDocumentPublisher.cpp b/src/adaptors/publishing/UBDocumentPublisher.cpp index 4edeffdf..19c34b5e 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.cpp +++ b/src/adaptors/publishing/UBDocumentPublisher.cpp @@ -21,645 +21,9 @@ -#include - #include "UBDocumentPublisher.h" -#include "frameworks/UBPlatformUtils.h" -#include "frameworks/UBFileSystemUtils.h" -#include "frameworks/UBStringUtils.h" - -#include "network/UBNetworkAccessManager.h" -#include "network/UBServerXMLHttpRequest.h" - -#include "core/UBDocumentManager.h" -#include "core/UBApplication.h" -#include "core/UBPersistenceManager.h" -#include "core/UBApplicationController.h" - -#include "board/UBBoardController.h" - -#include "gui/UBMainWindow.h" - -#include "document/UBDocumentProxy.h" -#include "document/UBDocumentContainer.h" - -#include "domain/UBGraphicsWidgetItem.h" - -#include "globals/UBGlobals.h" - -THIRD_PARTY_WARNINGS_DISABLE -#include "quazip.h" -#include "quazipfile.h" -THIRD_PARTY_WARNINGS_ENABLE - -#include "adaptors/UBExportFullPDF.h" -#include "adaptors/UBExportDocument.h" -#include "adaptors/UBSvgSubsetAdaptor.h" - -#include "UBSvgSubsetRasterizer.h" - -#include "../../core/UBApplication.h" - -#include "core/memcheck.h" - - -UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *parent) - : QObject(parent) - , mSourceDocument(pDocument) - , mUsername("") - , mPassword("") - , bLoginCookieSet(false) -{ - init(); -} - - -UBDocumentPublisher::~UBDocumentPublisher() -{ -} - - -void UBDocumentPublisher::publish() -{ - //check that the username and password are stored on preferences - UBSettings* settings = UBSettings::settings(); - - if(settings->communityUsername().isEmpty() || settings->communityPassword().isEmpty()){ - UBApplication::showMessage(tr("Credentials has to not been filled out yet.")); - qDebug() << "trying to connect to community without the required credentials"; - return; - } - - mUsername = settings->communityUsername(); - mPassword = settings->communityPassword(); - - UBPublicationDlg dlg; - if(QDialog::Accepted == dlg.exec()) - { - mDocInfos.title = dlg.title(); - mDocInfos.description = dlg.description(); - - buildUbwFile(); - - UBApplication::showMessage(tr("Uploading Sankore File on Web.")); - - sendUbw(mUsername, mPassword); - } -} - -void UBDocumentPublisher::buildUbwFile() -{ - QDir d; - d.mkpath(UBFileSystemUtils::defaultTempDirPath()); - - QString tmpDir = UBFileSystemUtils::createTempDir(); - - if (UBFileSystemUtils::copyDir(mSourceDocument->persistencePath(), tmpDir)) - { - QString documentName = mSourceDocument->name(); - - mPublishingPath = tmpDir; - mPublishingSize = mSourceDocument->pageCount(); - - rasterizeScenes(); - - upgradeDocumentForPublishing(); - - UBExportFullPDF pdfExporter; - pdfExporter.setVerbode(false); - pdfExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".pdf"); - - UBExportDocument ubzExporter; - ubzExporter.setVerbode(false); - ubzExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".ubz"); - - // remove all useless files - - for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++) { - QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.svg",pageIndex); - - QFile::remove(filename); - } - - UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::imageDirectory); - UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::objectDirectory); - UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::videoDirectory); - UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::audioDirectory); - - mTmpZipFile = UBFileSystemUtils::defaultTempDirPath() + "/" + UBStringUtils::toCanonicalUuid(QUuid::createUuid()) + ".ubw~"; - - QuaZip zip(mTmpZipFile); - zip.setFileNameCodec("UTF-8"); - if (!zip.open(QuaZip::mdCreate)) - { - qWarning() << "Export failed. Cause: zip.open(): " << zip.getZipError() << "," << mTmpZipFile; - QApplication::restoreOverrideCursor(); - return; - } - - QuaZipFile outFile(&zip); - - if (!UBFileSystemUtils::compressDirInZip(mPublishingPath, "", &outFile, true)) - { - qWarning("Export failed. compressDirInZip failed ..."); - zip.close(); - UBApplication::showMessage(tr("Export failed.")); - QApplication::restoreOverrideCursor(); - return; - } - - if (zip.getZipError() != 0) - { - qWarning("Export failed. Cause: zip.close(): %d", zip.getZipError()); - zip.close(); - UBApplication::showMessage(tr("Export failed.")); - QApplication::restoreOverrideCursor(); - return; - } - - zip.close(); - - } - else - { - UBApplication::showMessage(tr("Export canceled ...")); - QApplication::restoreOverrideCursor(); - } -} - -void UBDocumentPublisher::rasterizeScenes() -{ - - for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++) - { - UBApplication::showMessage(tr("Converting page %1/%2 ...").arg(UBDocumentContainer::pageFromSceneIndex(pageIndex)).arg(mPublishingSize), true); - - UBDocumentProxy publishingDocument(mPublishingPath); - UBSvgSubsetRasterizer rasterizer(&publishingDocument, pageIndex); - - QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.jpg",pageIndex); - - rasterizer.rasterizeToFile(filename); - - } -} - - -void UBDocumentPublisher::updateGoogleMapApiKey() -{ - QDir widgestDir(mPublishingPath + "/" + UBPersistenceManager::widgetDirectory); - - QString uniboardWebGoogleMapApiKey = UBSettings::settings()->uniboardWebGoogleMapApiKey->get().toString(); - - foreach(QFileInfo dirInfo, widgestDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) - { - QString config = UBFileSystemUtils::readTextFile(dirInfo.absoluteFilePath() + "/config.xml").toLower(); - - if (config.contains("google") && config.contains("map")) - { - QDir widgetDir(dirInfo.absoluteFilePath()); - - foreach(QFileInfo fileInfo, widgetDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot)) - { - QFile file(fileInfo.absoluteFilePath()); - - if (file.open(QIODevice::ReadWrite)) - { - QTextStream stream(&file); - QString content = stream.readAll(); - - if (content.contains("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og")) - { - content.replace("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og", - uniboardWebGoogleMapApiKey); - - file.resize(0); - file.write(content.toUtf8()); - } - file.close(); - } - } - } - } -} - - -void UBDocumentPublisher::upgradeDocumentForPublishing() -{ - for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++) - { - UBDocumentProxy publishingDocument(mPublishingPath); - UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(&publishingDocument, pageIndex); - - QList widgets; - - foreach(QGraphicsItem* item, scene->items()){ - UBGraphicsW3CWidgetItem *widgetItem = dynamic_cast(item); - - if(widgetItem){ - generateWidgetPropertyScript(widgetItem, UBDocumentContainer::pageFromSceneIndex(pageIndex)); - widgets << widgetItem; - } - } - - QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.json",pageIndex); - - QFile jsonFile(filename); - if (jsonFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) - { - jsonFile.write("{\n"); - jsonFile.write(QString(" \"scene\": {\n").toUtf8()); - jsonFile.write(QString(" \"x\": %1,\n").arg(scene->normalizedSceneRect().x()).toUtf8()); - jsonFile.write(QString(" \"y\": %1,\n").arg(scene->normalizedSceneRect().y()).toUtf8()); - jsonFile.write(QString(" \"width\": %1,\n").arg(scene->normalizedSceneRect().width()).toUtf8()); - jsonFile.write(QString(" \"height\": %1\n").arg(scene->normalizedSceneRect().height()).toUtf8()); - jsonFile.write(QString(" },\n").toUtf8()); - - jsonFile.write(QString(" \"widgets\": [\n").toUtf8()); - - bool first = true; - - foreach(UBGraphicsW3CWidgetItem* widget, widgets) - { - if (!first) - jsonFile.write(QString(" ,\n").toUtf8()); - jsonFile.write(QString(" {\n").toUtf8()); - jsonFile.write(QString(" \"uuid\": \"%1\",\n").arg(UBStringUtils::toCanonicalUuid(widget->uuid())).toUtf8()); - jsonFile.write(QString(" \"id\": \"%1\",\n").arg(widget->metadatas().id).toUtf8()); - - jsonFile.write(QString(" \"name\": \"%1\",\n").arg(widget->metadatas().name).toUtf8()); - jsonFile.write(QString(" \"description\": \"%1\",\n").arg(widget->metadatas().description).toUtf8()); - jsonFile.write(QString(" \"author\": \"%1\",\n").arg(widget->metadatas().author).toUtf8()); - jsonFile.write(QString(" \"authorEmail\": \"%1\",\n").arg(widget->metadatas().authorEmail).toUtf8()); - jsonFile.write(QString(" \"authorHref\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8()); - jsonFile.write(QString(" \"version\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8()); - - jsonFile.write(QString(" \"x\": %1,\n").arg(widget->sceneBoundingRect().x()).toUtf8()); - jsonFile.write(QString(" \"y\": %1,\n").arg(widget->sceneBoundingRect().y()).toUtf8()); - jsonFile.write(QString(" \"width\": %1,\n").arg(widget->sceneBoundingRect().width()).toUtf8()); - jsonFile.write(QString(" \"height\": %1,\n").arg(widget->sceneBoundingRect().height()).toUtf8()); - - jsonFile.write(QString(" \"nominalWidth\": %1,\n").arg(widget->boundingRect().width()).toUtf8()); - jsonFile.write(QString(" \"nominalHeight\": %1,\n").arg(widget->boundingRect().height()).toUtf8()); - - QString url = UBPersistenceManager::widgetDirectory + "/" + widget->uuid().toString() + ".wgt"; - jsonFile.write(QString(" \"src\": \"%1\",\n").arg(url).toUtf8()); - QString startFile = widget->mainHtmlFileName(); - jsonFile.write(QString(" \"startFile\": \"%1\",\n").arg(startFile).toUtf8()); - - QMap preferences = widget->UBGraphicsWidgetItem::preferences(); - - jsonFile.write(QString(" \"preferences\": {\n").toUtf8()); - - foreach(QString key, preferences.keys()) - { - QString sep = ","; - if (key == preferences.keys().last()) - sep = ""; - - jsonFile.write(QString(" \"%1\": \"%2\"%3\n") - .arg(key) - .arg(preferences.value(key)) - .arg(sep) - .toUtf8()); - } - jsonFile.write(QString(" },\n").toUtf8()); - - jsonFile.write(QString(" \"datastore\": {\n").toUtf8()); - - QMap datastoreEntries = widget->datastoreEntries(); - - foreach(QString entry, datastoreEntries.keys()) - { - QString sep = ","; - if (entry == datastoreEntries.keys().last()) - sep = ""; - - jsonFile.write(QString(" \"%1\": \"%2\"%3\n") - .arg(entry) - .arg(datastoreEntries.value(entry)) - .arg(sep) - .toUtf8()); - } - jsonFile.write(QString(" }\n").toUtf8()); - - jsonFile.write(QString(" }\n").toUtf8()); - - first = false; - } - - jsonFile.write(" ]\n"); - jsonFile.write("}\n"); - } - else - { - qWarning() << "Cannot open file" << filename << "for saving page state"; - } - - delete scene; - } - - updateGoogleMapApiKey(); -} - - -void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber) -{ - - QMap preferences = widgetItem->UBGraphicsWidgetItem::preferences(); - QMap datastoreEntries = widgetItem->datastoreEntries(); - - QString startFileName = widgetItem->mainHtmlFileName(); - - if (!startFileName.startsWith("http://")) - { - QString startFilePath = mPublishingPath + "/" + UBPersistenceManager::widgetDirectory + "/" + widgetItem->uuid().toString() + ".wgt/" + startFileName; - - QFile startFile(startFilePath); - - if (startFile.exists()) - { - if (startFile.open(QIODevice::ReadWrite)) - { - QTextStream stream(&startFile); - QStringList lines; - - bool addedJs = false; - - QString line; - do - { - line = stream.readLine(); - if (!line.isNull()) - { - lines << line; - - if (!addedJs && line.contains("") ) // TODO UB 4.6, this is naive ... the HEAD tag may be on several lines - { - lines << ""; - lines << " "; - lines << ""; - - addedJs = true; - } - } - } - while (!line.isNull()); - - startFile.resize(0); - startFile.write(lines.join("\n").toUtf8()); // TODO UB 4.x detect real html encoding - - startFile.close(); - } - } - } - else{ - qWarning() << "Remote Widget start file, cannot inject widget preferences and datastore entries"; - } -} - -void UBDocumentPublisher::init() -{ - mCrlf=0x0d; - mCrlf+=0x0a; - mDocInfos.title = ""; - mDocInfos.description = ""; - - mpCookieJar = new QNetworkCookieJar(); - mpNetworkMgr = new QNetworkAccessManager(this); - - connect(mpNetworkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*))); -} - -void UBDocumentPublisher::onFinished(QNetworkReply *reply) -{ - QVariant cookieHeader = reply->rawHeader("Set-Cookie"); - // First we concatenate all the Set-Cookie values (the packet can contains many of them) - QStringList qslCookie = cookieHeader.toString().split("\n"); - QString qsCookieValue = qslCookie.at(0); - for (int i = 1; i < qslCookie.size(); i++) { - qsCookieValue += "; " +qslCookie.at(i); - } - - // Now we isolate every cookie value - QStringList qslCookieVals = qsCookieValue.split("; "); - - bool bTransferOk = false; - - for(int j = 0; j < qslCookieVals.size(); j++) - { - qDebug() << j; - if(qslCookieVals.at(j).startsWith("assetStatus")) - { - QStringList qslAsset = qslCookieVals.at(j).split("="); - if(qslAsset.at(1) == "UPLOADED") - { - bTransferOk = true; - break; - } - } - } - - if(bTransferOk) - { - UBApplication::showMessage(tr("Document uploaded correctly on the web.")); - } - else - { - UBApplication::showMessage(tr("Failed to upload document on the web.")); - } - - reply->deleteLater(); -} - -void UBDocumentPublisher::sendUbw(QString username, QString password) -{ - if (QFile::exists(mTmpZipFile)) - { - QFile f(mTmpZipFile); - if (f.open(QIODevice::ReadOnly)) - { - QFileInfo fi(f); - QByteArray ba = f.readAll(); - QString boundary,data, multipartHeader; - QByteArray datatoSend; - - boundary = "---WebKitFormBoundaryDKBTgA53MiyWrzLY"; - multipartHeader = "multipart/form-data; boundary="+boundary; - - data="--"+boundary+mCrlf; - data+="Content-Disposition: form-data; name=\"title\"" + mCrlf + mCrlf + mDocInfos.title + mCrlf; - data+="--"+boundary+mCrlf; - data+="Content-Disposition: form-data; name=\"description\"" + mCrlf + mCrlf + mDocInfos.description.remove("\n") + mCrlf; - data+="--"+boundary+mCrlf; - data+="Content-Disposition: form-data; name=\"file\"; filename=\""+ fi.fileName() +"\""+mCrlf; - data+="Content-Type: application/octet-stream"+mCrlf+mCrlf; - datatoSend=data.toAscii(); // convert data string to byte array for request - datatoSend += ba; - datatoSend += mCrlf; - datatoSend += QString("--%0--%1").arg(boundary).arg(mCrlf); - - QNetworkRequest request(QUrl(QString(DOCPUBLICATION_URL).toAscii().constData())); - - request.setHeader(QNetworkRequest::ContentTypeHeader, multipartHeader); - request.setHeader(QNetworkRequest::ContentLengthHeader,datatoSend.size()); - QString b64Auth = getBase64Of(QString("%0:%1").arg(username).arg(password)); - request.setRawHeader("Authorization", QString("Basic %0").arg(b64Auth).toAscii().constData()); - request.setRawHeader("Host", "planete.sankore.org"); - request.setRawHeader("Accept", "*/*"); - request.setRawHeader("Accept-Language", "en-US,*"); - - mpCookieJar->setCookiesFromUrl(mCookies, QUrl(DOCPUBLICATION_URL)); - mpNetworkMgr->setCookieJar(mpCookieJar); - - // Send the file - mpNetworkMgr->post(request,datatoSend); - } - } -} - -QString UBDocumentPublisher::getBase64Of(QString stringToEncode) -{ - return stringToEncode.toAscii().toBase64(); -} - -// --------------------------------------------------------- UBProxyLoginDlg::UBProxyLoginDlg(QWidget *parent, const char *name):QDialog(parent) , mpLayout(NULL) , mpUserLayout(NULL) diff --git a/src/adaptors/publishing/UBDocumentPublisher.h b/src/adaptors/publishing/UBDocumentPublisher.h index 5e8768bf..ed6c7bec 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.h +++ b/src/adaptors/publishing/UBDocumentPublisher.h @@ -27,9 +27,7 @@ #include #include -#include "ui_webPublishing.h" - -#define DOCPUBLICATION_URL "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain" +//#define DOCPUBLICATION_URL "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain" typedef struct { @@ -85,58 +83,4 @@ private: QTextEdit* mpDescription; QDialogButtonBox* mpButtons; }; - - -class UBDocumentPublisher : public QObject -{ - Q_OBJECT; - -public: - explicit UBDocumentPublisher(UBDocumentProxy* sourceDocument, QObject *parent = 0); - virtual ~UBDocumentPublisher(); - - void publish(); - -signals: - - void loginDone(); - -protected: - - virtual void updateGoogleMapApiKey(); - virtual void rasterizeScenes(); - virtual void upgradeDocumentForPublishing(); - virtual void generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber); - -private slots: - - void onFinished(QNetworkReply* reply); - -private: - - UBDocumentProxy *mSourceDocument; - - //UBDocumentProxy *mPublishingDocument; - QString mPublishingPath; - int mPublishingSize; - - - void init(); - void sendUbw(QString username, QString password); - QString getBase64Of(QString stringToEncode); - - QHBoxLayout* mpLayout; - QNetworkAccessManager* mpNetworkMgr; - QNetworkCookieJar* mpCookieJar; - QString mUsername; - QString mPassword; - QString mCrlf; - bool bLoginCookieSet; - - void buildUbwFile(); - QString mTmpZipFile; - QList mCookies; - sDocumentInfos mDocInfos; - -}; #endif // UBDOCUMENTPUBLISHER_H diff --git a/src/core/UBDocumentManager.cpp b/src/core/UBDocumentManager.cpp index bfaa2368..17c2c9f5 100644 --- a/src/core/UBDocumentManager.cpp +++ b/src/core/UBDocumentManager.cpp @@ -29,7 +29,6 @@ #include "adaptors/UBExportDocument.h" #include "adaptors/UBExportWeb.h" #include "adaptors/UBExportCFF.h" -#include "adaptors/UBWebPublisher.h" #include "adaptors/UBImportDocument.h" #include "adaptors/UBImportPDF.h" #include "adaptors/UBImportImage.h" @@ -47,8 +46,6 @@ #include "UBSettings.h" #include "UBPersistenceManager.h" -#include "../adaptors/UBExportWeb.h" - #include "core/memcheck.h" UBDocumentManager* UBDocumentManager::sDocumentManager = 0; @@ -75,13 +72,9 @@ UBDocumentManager::UBDocumentManager(QObject *parent) UBExportCFF* cffExporter = new UBExportCFF(this); UBExportFullPDF* exportFullPdf = new UBExportFullPDF(this); UBExportDocument* exportDocument = new UBExportDocument(this); - UBWebPublisher* webPublished = new UBWebPublisher(this); mExportAdaptors.append(exportDocument); - mExportAdaptors.append(webPublished); mExportAdaptors.append(exportFullPdf); mExportAdaptors.append(cffExporter); -// UBExportWeb* exportWeb = new UBExportWeb(this); -// mExportAdaptors.append(exportWeb); UBImportDocument* documentImport = new UBImportDocument(this); mImportAdaptors.append(documentImport); @@ -149,7 +142,7 @@ UBDocumentProxy* UBDocumentManager::importFile(const QFile& pFile, const QString UBDocumentBasedImportAdaptor* importAdaptor = (UBDocumentBasedImportAdaptor*)adaptor; document = importAdaptor->importFile(pFile, pGroup); - + } else { From 63834823c4fb702fd854a25003017fc9ec1c4147 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 27 May 2013 10:11:31 +0200 Subject: [PATCH 06/24] removed planete sankore export related gui --- resources/forms/preferences.ui | 93 +------------------ src/adaptors/publishing/UBDocumentPublisher.h | 2 - src/core/UBPreferencesController.cpp | 80 +--------------- src/core/UBPreferencesController.h | 7 +- 4 files changed, 3 insertions(+), 179 deletions(-) diff --git a/resources/forms/preferences.ui b/resources/forms/preferences.ui index 942f7bfa..33465d5d 100644 --- a/resources/forms/preferences.ui +++ b/resources/forms/preferences.ui @@ -24,7 +24,7 @@ - 5 + 3 @@ -609,97 +609,6 @@ - - - - 0 - 0 - - - - Planète Sankoré ID for exporting file - - - - - - - - User: - - - - - - - - 5 - - - 0 - - - - - QLineEdit::Normal - - - - - - - Pass: - - - - - - - QLineEdit::Password - - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Preferred - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - Restore credentials on reboot - - - true - - - - - - - Qt::Vertical diff --git a/src/adaptors/publishing/UBDocumentPublisher.h b/src/adaptors/publishing/UBDocumentPublisher.h index ed6c7bec..fbcb128a 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.h +++ b/src/adaptors/publishing/UBDocumentPublisher.h @@ -27,8 +27,6 @@ #include #include -//#define DOCPUBLICATION_URL "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain" - typedef struct { QString title; diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp index b10e85cc..444f843b 100644 --- a/src/core/UBPreferencesController.cpp +++ b/src/core/UBPreferencesController.cpp @@ -57,10 +57,7 @@ UBPreferencesDialog::~UBPreferencesDialog() void UBPreferencesDialog::closeEvent(QCloseEvent* e) { - if(mPreferencesController->inputValuesConsistence()) - e->accept(); - else - e->ignore(); + e->accept(); } @@ -132,8 +129,6 @@ void UBPreferencesController::wire() connect(mPreferencesUI->useExternalBrowserCheckBox, SIGNAL(clicked(bool)), settings->webUseExternalBrowser, SLOT(setBool(bool))); connect(mPreferencesUI->displayBrowserPageCheckBox, SIGNAL(clicked(bool)), settings->webShowPageImmediatelyOnMirroredScreen, SLOT(setBool(bool))); - connect(mPreferencesUI->swapControlAndDisplayScreensCheckBox, SIGNAL(clicked(bool)), settings->swapControlAndDisplayScreens, SLOT(setBool(bool))); - connect(mPreferencesUI->swapControlAndDisplayScreensCheckBox, SIGNAL(clicked(bool)), UBApplication::applicationController->displayManager(), SLOT(reinitScreens(bool))); connect(mPreferencesUI->toolbarAtTopRadioButton, SIGNAL(clicked(bool)), this, SLOT(toolbarPositionChanged(bool))); connect(mPreferencesUI->toolbarAtBottomRadioButton, SIGNAL(clicked(bool)), this, SLOT(toolbarPositionChanged(bool))); @@ -176,12 +171,6 @@ void UBPreferencesController::wire() connect(mMarkerProperties->pressureSensitiveCheckBox, SIGNAL(clicked(bool)), settings, SLOT(setMarkerPressureSensitive(bool))); connect(mMarkerProperties->opacitySlider, SIGNAL(valueChanged(int)), this, SLOT(opacitySliderChanged(int))); - - //network - connect(mPreferencesUI->Username_textBox, SIGNAL(editingFinished()), this, SLOT(onCommunityUsernameChanged())); - connect(mPreferencesUI->Password_textEdit, SIGNAL(editingFinished()), this, SLOT(onCommunityPasswordChanged())); - connect(mPreferencesUI->PSCredentialsPersistenceCheckBox,SIGNAL(clicked()),this, SLOT(onCommunityPersistenceChanged())); - // about tab connect(mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox, SIGNAL(clicked(bool)), settings->appEnableAutomaticSoftwareUpdates, SLOT(setBool(bool))); } @@ -215,10 +204,6 @@ void UBPreferencesController::init() mPreferencesUI->verticalChoice->setChecked(settings->appToolBarOrientationVertical->get().toBool()); mPreferencesUI->horizontalChoice->setChecked(!settings->appToolBarOrientationVertical->get().toBool()); - mPreferencesUI->Username_textBox->setText(settings->communityUsername()); - mPreferencesUI->Password_textEdit->setText(settings->communityPassword()); - mPreferencesUI->swapControlAndDisplayScreensCheckBox->setChecked(settings->swapControlAndDisplayScreens->get().toBool()); - // pen tab mPenProperties->fineSlider->setValue(settings->boardPenFineWidth->get().toDouble() * sSliderRatio); mPenProperties->mediumSlider->setValue(settings->boardPenMediumWidth->get().toDouble() * sSliderRatio); @@ -233,66 +218,6 @@ void UBPreferencesController::init() mMarkerProperties->opacitySlider->setValue(settings->boardMarkerAlpha->get().toDouble() * 100); - //network - mPreferencesUI->PSCredentialsPersistenceCheckBox->setChecked(settings->getCommunityDataPersistence()); - persistanceCheckboxUpdate(); - -} - -void UBPreferencesController::onCommunityUsernameChanged() -{ - UBSettings* settings = UBSettings::settings(); - settings->setCommunityUsername(mPreferencesUI->Username_textBox->text()); - persistanceCheckboxUpdate(); -} - -void UBPreferencesController::onCommunityPasswordChanged() -{ - UBSettings* settings = UBSettings::settings(); - settings->setCommunityPassword(mPreferencesUI->Password_textEdit->text()); - persistanceCheckboxUpdate(); -} - -void UBPreferencesController::onCommunityPersistenceChanged() -{ - UBSettings::settings()->setCommunityPersistence(mPreferencesUI->PSCredentialsPersistenceCheckBox->isChecked()); -} - -void UBPreferencesController::persistanceCheckboxUpdate() -{ - bool checkBoxEnabled = mPreferencesUI->Username_textBox->text().length() || mPreferencesUI->Password_textEdit->text().length(); - mPreferencesUI->PSCredentialsPersistenceCheckBox->setEnabled(checkBoxEnabled); - mPreferencesUI->PSCredentialsPersistenceCheckBox->setStyleSheet(checkBoxEnabled ? "color:black;" : "color:lightgray;"); -} - - -bool UBPreferencesController::inputValuesConsistence() -{ - QString backgroundStyle = "QWidget {background-color: white}"; - mPreferencesUI->Username_textBox->setStyleSheet(backgroundStyle); - mPreferencesUI->Password_textEdit->setStyleSheet(backgroundStyle); - - QString username = mPreferencesUI->Username_textBox->text(); - QString password = mPreferencesUI->Password_textEdit->text(); - bool isConsistent = true; - if (username.length() + password.length()){ - backgroundStyle = "QWidget {background-color: magenta}"; - if(username.isEmpty()){ - isConsistent = false; - mPreferencesUI->mainTabWidget->setCurrentWidget(mPreferencesUI->networkTab); - mPreferencesUI->Username_textBox->setStyleSheet(backgroundStyle); - mPreferencesUI->Username_textBox->setFocus(); - mPreferencesUI->Username_textBox->setCursorPosition(0); - } - else if(password.isEmpty()){ - isConsistent = false; - mPreferencesUI->mainTabWidget->setCurrentWidget(mPreferencesUI->networkTab); - mPreferencesUI->Password_textEdit->setStyleSheet(backgroundStyle); - mPreferencesUI->Password_textEdit->setFocus(); - mPreferencesUI->Password_textEdit->setCursorPosition(0); - } - } - return isConsistent; } void UBPreferencesController::close() @@ -304,9 +229,6 @@ void UBPreferencesController::close() UBSettings::settings()->setProxyUsername(mPreferencesUI->proxyUsername->text()); UBSettings::settings()->setProxyPassword(mPreferencesUI->proxyPassword->text()); - if (!inputValuesConsistence()) - return; - mPreferencesWindow->accept(); } diff --git a/src/core/UBPreferencesController.h b/src/core/UBPreferencesController.h index 3ba0ae96..3827f4ba 100644 --- a/src/core/UBPreferencesController.h +++ b/src/core/UBPreferencesController.h @@ -57,13 +57,12 @@ protected: class UBPreferencesController : public QObject { - Q_OBJECT; + Q_OBJECT public: UBPreferencesController(QWidget *parent); virtual ~UBPreferencesController(); - bool inputValuesConsistence(); public slots: @@ -89,9 +88,6 @@ class UBPreferencesController : public QObject void toolbarPositionChanged(bool checked); void toolbarOrientationVertical(bool checked); void toolbarOrientationHorizontal(bool checked); - void onCommunityUsernameChanged(); - void onCommunityPasswordChanged(); - void onCommunityPersistenceChanged(); private slots: void adjustScreens(int screen); @@ -100,7 +96,6 @@ class UBPreferencesController : public QObject static qreal sSliderRatio; static qreal sMinPenWidth; static qreal sMaxPenWidth; - void persistanceCheckboxUpdate(); QDesktopWidget* mDesktop; }; From 3cf0cc5e99889006f3b53055fb3409ce2b14df13 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 27 May 2013 10:33:43 +0200 Subject: [PATCH 07/24] tutorial and webkit instance associated removed --- .../etc/Tutorial/tutorial_en/CSS/grid.css | 54 ---- .../etc/Tutorial/tutorial_en/CSS/reset.css | 29 -- .../Tutorial/tutorial_en/CSS/typography.css | 94 ------- .../tutorial_en/images/logo_open_sankore.png | Bin 32972 -> 0 bytes .../Tutorial/tutorial_en/images/manuel.png | Bin 26291 -> 0 bytes .../Tutorial/tutorial_en/images/pedago.png | Bin 60486 -> 0 bytes .../etc/Tutorial/tutorial_en/images/tech.png | Bin 29052 -> 0 bytes .../etc/Tutorial/tutorial_en/images/video.png | Bin 43525 -> 0 bytes resources/etc/Tutorial/tutorial_en/index.html | 72 ----- .../etc/Tutorial/tutorial_fr/CSS/grid.css | 54 ---- .../etc/Tutorial/tutorial_fr/CSS/reset.css | 29 -- .../Tutorial/tutorial_fr/CSS/typography.css | 94 ------- .../tutorial_fr/images/logo_open_sankore.png | Bin 32972 -> 0 bytes .../Tutorial/tutorial_fr/images/manuel.png | Bin 26291 -> 0 bytes .../Tutorial/tutorial_fr/images/pedago.png | Bin 60486 -> 0 bytes .../etc/Tutorial/tutorial_fr/images/tech.png | Bin 29052 -> 0 bytes .../etc/Tutorial/tutorial_fr/images/video.png | Bin 43525 -> 0 bytes resources/etc/Tutorial/tutorial_fr/index.html | 72 ----- resources/forms/mainWindow.ui | 40 +-- src/board/UBBoardController.cpp | 2 - src/board/UBBoardPaletteManager.cpp | 8 - src/core/UBApplication.cpp | 6 - src/core/UBApplicationController.cpp | 48 +--- src/core/UBApplicationController.h | 4 +- src/gui/UBWebToolsPalette.cpp | 34 +-- src/gui/UBWebToolsPalette.h | 2 +- src/web/UBWebController.cpp | 254 +++++------------- src/web/UBWebController.h | 24 +- src/web/browser/WBBrowserWindow.cpp | 53 +--- src/web/browser/WBBrowserWindow.h | 3 +- 30 files changed, 100 insertions(+), 876 deletions(-) delete mode 100644 resources/etc/Tutorial/tutorial_en/CSS/grid.css delete mode 100644 resources/etc/Tutorial/tutorial_en/CSS/reset.css delete mode 100644 resources/etc/Tutorial/tutorial_en/CSS/typography.css delete mode 100644 resources/etc/Tutorial/tutorial_en/images/logo_open_sankore.png delete mode 100644 resources/etc/Tutorial/tutorial_en/images/manuel.png delete mode 100644 resources/etc/Tutorial/tutorial_en/images/pedago.png delete mode 100644 resources/etc/Tutorial/tutorial_en/images/tech.png delete mode 100644 resources/etc/Tutorial/tutorial_en/images/video.png delete mode 100644 resources/etc/Tutorial/tutorial_en/index.html delete mode 100644 resources/etc/Tutorial/tutorial_fr/CSS/grid.css delete mode 100644 resources/etc/Tutorial/tutorial_fr/CSS/reset.css delete mode 100644 resources/etc/Tutorial/tutorial_fr/CSS/typography.css delete mode 100644 resources/etc/Tutorial/tutorial_fr/images/logo_open_sankore.png delete mode 100644 resources/etc/Tutorial/tutorial_fr/images/manuel.png delete mode 100644 resources/etc/Tutorial/tutorial_fr/images/pedago.png delete mode 100644 resources/etc/Tutorial/tutorial_fr/images/tech.png delete mode 100644 resources/etc/Tutorial/tutorial_fr/images/video.png delete mode 100644 resources/etc/Tutorial/tutorial_fr/index.html diff --git a/resources/etc/Tutorial/tutorial_en/CSS/grid.css b/resources/etc/Tutorial/tutorial_en/CSS/grid.css deleted file mode 100644 index ae6553be..00000000 --- a/resources/etc/Tutorial/tutorial_en/CSS/grid.css +++ /dev/null @@ -1,54 +0,0 @@ - -.main {margin:0 auto; width:800px; padding-top:10px; } - - -.g320,.g480,.g640,.g960,.g80,.g240,.g400,.g560,.g720,.g880,.g960 {float:left; display: inline; padding-top: 10px;} - -.g800 {float:left; display: inline; width:800px;} - -.g200 {float:left; display: inline; width:190px; padding-top: 10px; padding-left: 10px;} -.g200left {float:left; display: inline; width:190px; padding-top: 10px; padding-left: 5px} - -.g160 {width:150px; } -.g320 {width:310px;} -.g480 {width:470px;} -.g600 {width:600px;} -.g640 {width:630px;} -.g800 {width:790px;} -.g960 {width:950px;} - -.g80 {width:70px;} -.g240 {width:230px;} -.g400 {width:390px;} -.g560 {width:550px;} -.g720 {width:710px;} -.g880 {width:870px;} - -.ml80{margin-left:90px;} -.ml160{margin-left:170px;} -.ml240{margin-left:250px;} -.ml320{margin-left:330px;} -.ml400{margin-left:410px;} -.ml480{margin-left:490px;} -.ml560{margin-left:560px;} -.ml640{margin-left:650px;} -.ml720{margin-left:730px;} -.ml800{margin-left:810px;} -.ml880{margin-left:890px;} -.ml960{margin-left:970px;} - -.inside{margin-left:0;} - -p.grid{ padding-left:10px;} - -.clear {clear:both;} -.clearfix, .main{ display:block;} - -.clearfix:after, .main:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0; - } diff --git a/resources/etc/Tutorial/tutorial_en/CSS/reset.css b/resources/etc/Tutorial/tutorial_en/CSS/reset.css deleted file mode 100644 index e60e93f5..00000000 --- a/resources/etc/Tutorial/tutorial_en/CSS/reset.css +++ /dev/null @@ -1,29 +0,0 @@ -html, body, div, span, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, code, -del, dfn, em, img, q, dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - font-weight: inherit; - font-style: inherit; - font-size: 100%; - font-family: inherit; - vertical-align: baseline; -} - - -/* Tables still need 'cellspacing="0"' in the markup. */ -table { border-collapse: separate; border-spacing: 0; } -caption, th, td { text-align: left; font-weight: normal; } -table, td, th { vertical-align: middle; } - -/* Remove possible quote marks (") from ,
    . */ -blockquote:before, blockquote:after, q:before, q:after { content: ""; } -blockquote, q { quotes: "" ""; } - -/* Remove annoying border on linked images. */ -a img { border: none; } - diff --git a/resources/etc/Tutorial/tutorial_en/CSS/typography.css b/resources/etc/Tutorial/tutorial_en/CSS/typography.css deleted file mode 100644 index fbfc4539..00000000 --- a/resources/etc/Tutorial/tutorial_en/CSS/typography.css +++ /dev/null @@ -1,94 +0,0 @@ - -body { font:75%/1.5em "lucida grande","lucida sans unicode", sans-serif;} - -p { padding:0 0 1em 0;color:#111;} - - -p.first:first-letter{ float:left;font-family: Palatino,'Palatino Linotype',Georgia, sans-serif;font-size:3em;font-weight:700;line-height:1em;margin-bottom:-0.2em;padding:0.2em 0.1em 0 0; } -p img { float: left; margin: 0.3em 0.833em 0.833em 0; padding: 0; } -p img.right { float: right; margin: 0.3em 0 0.833em 0.833em; } - - -h1,h2{ line-height: normal; font-family: Helvetica, Verdana, Arial, sans-serif; font-weight:normal; color: #333; } -h3,h4,h5,h6 { font-family: Helvetica, Verdana, Arial, sans-serif; text-align: left; line-height: normal; font-weight: normal; color: #333; } - - -h1 { font-size: 2.2em; margin-bottom: 0.682em; } -h2 { font-size: 1.9em; margin-bottom: 0.79em; } -h3 { font-size: 1.7em; margin-bottom: 0.882em; } -h4 { font-size: 1.4em; margin-bottom: 1.071em; } -h5,h6 { font-size: 1.2em; margin-bottom: 1.154em; } - -/* Color palete */ -.water { color:#5582d1; } -.earth { color:#4e3e2c; } -.air { color:#f1fff7; } -.fire { color:#ff8a19; } -.wine { color:#4a040a; } -.beer { color:#F0C030; } -.caffe { color:#473523; } -.caffe-cream { color:#b68d3d; } -.espresso { color:#2c1901; } -.caramel{ color:#ab671f; } -.chocolate { color:#290200; } -.black-pepper { color:#444334; } -.pepper-lite { color:#8d8a72; } -.lipstick { color:#c20c0c; } - - -li ul, -li ol { margin:0 1.5em; } -ul, ol { margin: 0 1.5em 1.5em 1.5em; } - - -dl { margin: 0 0 1.5em 0; } -dl dt { font-weight: bold; } -dl dd { margin-left: 1.5em; } - -a { color:#035292; text-decoration:none; } -a:hover { text-decoration: underline; } - - -table { margin-bottom:1.5em; border-collapse: collapse; } -th { font-weight:bold; } -tr,th,td { margin:0; padding:0 1.5em 0 1em; height:18px; } -tfoot { font-style: italic; } -caption { text-align:center; font-family:Georgia, serif; } - - -abbr, acronym { border-bottom:1px dotted #000; } -address { margin-top:1.5em; font-style: italic; } -del {color:#000;} - - -blockquote { padding:1em 1em 1em 1.5em; font-family:baskerville,"palatino linotype",serif; } -blockquote > *:first-child:before { content:"\201C";font-size:2.5em;margin-left:-.62em;font-family:georgia,serif;padding-right:.2em;color:#aaa;line-height:0; }/* From Tripoli */ - -strong { ont-weight: bold; } -em, dfn { font-style: italic; } -dfn { font-weight: bold; } -pre, code { margin: 1.5em 0; white-space: pre; } -pre, code, tt { font: 1em monospace; line-height: 1.5; } -tt { display: block; margin: 1.5em 0; } -hr { margin-bottom:1.5em; } - -/*other small things */ - -.tc { text-align:center; } -.tr { text-align:right; } -.tl { text-align:left; } -.b { font-weight:bold; } -.i { font-style:italic; } - -.indent { text-indent:1.5em;} -.open { font-variant: small-caps; } -p.break { text-align:center;text-indent:0;line-height:0; } -p.zero{padding:0; margin:0} -p.one { padding:0 1em 1em 1em;color:#111;} -p img.right10 { float: right; margin:0.833em; } - -.oldbook { font-family:"Book Antiqua","Warnock Pro","Goudy Old Style","Palatino",Georgia,serif; } -.note { font-family:Georgia, "Times New Roman", Times, serif; font-style:italic; font-size:0.9em; margin:0.1em; color:#333; } -.mono { font-family:"Courier New", Courier, monospace; } - - diff --git a/resources/etc/Tutorial/tutorial_en/images/logo_open_sankore.png b/resources/etc/Tutorial/tutorial_en/images/logo_open_sankore.png deleted file mode 100644 index 0c63bfd72ecd0d1fcdb2eaa8b5653bb1b4a3655c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32972 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%0A$XzBVPvW_9^=%(-cZ>)|Anc9$St92wT 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 CJ_p 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 diff --git a/resources/etc/Tutorial/tutorial_en/images/pedago.png b/resources/etc/Tutorial/tutorial_en/images/pedago.png deleted file mode 100644 index 02112edf87b0dc55ee639be960e13e5767bd8d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60486 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 d0G{~h{|6%rx28=#D}JYxUZDUq8CL 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 - - - - - - - - - - - - -
    - -
    - - - -
    - -
    - -

    Welcome to the tutorial space of Open-Sankoré. We propose you a set of online ressources to help you discover our software and improve your teaching and technical knowledge. If you have questions to ask us or want to contribute to the project, simply visit our website open-sankore.org

    - -
    - -
    - - -

    Video tutorials
    - -
    - - - - - - -
     
    - -
    - - - diff --git a/resources/etc/Tutorial/tutorial_fr/CSS/grid.css b/resources/etc/Tutorial/tutorial_fr/CSS/grid.css deleted file mode 100644 index ae6553be..00000000 --- a/resources/etc/Tutorial/tutorial_fr/CSS/grid.css +++ /dev/null @@ -1,54 +0,0 @@ - -.main {margin:0 auto; width:800px; padding-top:10px; } - - -.g320,.g480,.g640,.g960,.g80,.g240,.g400,.g560,.g720,.g880,.g960 {float:left; display: inline; padding-top: 10px;} - -.g800 {float:left; display: inline; width:800px;} - -.g200 {float:left; display: inline; width:190px; padding-top: 10px; padding-left: 10px;} -.g200left {float:left; display: inline; width:190px; padding-top: 10px; padding-left: 5px} - -.g160 {width:150px; } -.g320 {width:310px;} -.g480 {width:470px;} -.g600 {width:600px;} -.g640 {width:630px;} -.g800 {width:790px;} -.g960 {width:950px;} - -.g80 {width:70px;} -.g240 {width:230px;} -.g400 {width:390px;} -.g560 {width:550px;} -.g720 {width:710px;} -.g880 {width:870px;} - -.ml80{margin-left:90px;} -.ml160{margin-left:170px;} -.ml240{margin-left:250px;} -.ml320{margin-left:330px;} -.ml400{margin-left:410px;} -.ml480{margin-left:490px;} -.ml560{margin-left:560px;} -.ml640{margin-left:650px;} -.ml720{margin-left:730px;} -.ml800{margin-left:810px;} -.ml880{margin-left:890px;} -.ml960{margin-left:970px;} - -.inside{margin-left:0;} - -p.grid{ padding-left:10px;} - -.clear {clear:both;} -.clearfix, .main{ display:block;} - -.clearfix:after, .main:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0; - } diff --git a/resources/etc/Tutorial/tutorial_fr/CSS/reset.css b/resources/etc/Tutorial/tutorial_fr/CSS/reset.css deleted file mode 100644 index e60e93f5..00000000 --- a/resources/etc/Tutorial/tutorial_fr/CSS/reset.css +++ /dev/null @@ -1,29 +0,0 @@ -html, body, div, span, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, code, -del, dfn, em, img, q, dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - font-weight: inherit; - font-style: inherit; - font-size: 100%; - font-family: inherit; - vertical-align: baseline; -} - - -/* Tables still need 'cellspacing="0"' in the markup. */ -table { border-collapse: separate; border-spacing: 0; } -caption, th, td { text-align: left; font-weight: normal; } -table, td, th { vertical-align: middle; } - -/* Remove possible quote marks (") from ,
    . */ -blockquote:before, blockquote:after, q:before, q:after { content: ""; } -blockquote, q { quotes: "" ""; } - -/* Remove annoying border on linked images. */ -a img { border: none; } - diff --git a/resources/etc/Tutorial/tutorial_fr/CSS/typography.css b/resources/etc/Tutorial/tutorial_fr/CSS/typography.css deleted file mode 100644 index fbfc4539..00000000 --- a/resources/etc/Tutorial/tutorial_fr/CSS/typography.css +++ /dev/null @@ -1,94 +0,0 @@ - -body { font:75%/1.5em "lucida grande","lucida sans unicode", sans-serif;} - -p { padding:0 0 1em 0;color:#111;} - - -p.first:first-letter{ float:left;font-family: Palatino,'Palatino Linotype',Georgia, sans-serif;font-size:3em;font-weight:700;line-height:1em;margin-bottom:-0.2em;padding:0.2em 0.1em 0 0; } -p img { float: left; margin: 0.3em 0.833em 0.833em 0; padding: 0; } -p img.right { float: right; margin: 0.3em 0 0.833em 0.833em; } - - -h1,h2{ line-height: normal; font-family: Helvetica, Verdana, Arial, sans-serif; font-weight:normal; color: #333; } -h3,h4,h5,h6 { font-family: Helvetica, Verdana, Arial, sans-serif; text-align: left; line-height: normal; font-weight: normal; color: #333; } - - -h1 { font-size: 2.2em; margin-bottom: 0.682em; } -h2 { font-size: 1.9em; margin-bottom: 0.79em; } -h3 { font-size: 1.7em; margin-bottom: 0.882em; } -h4 { font-size: 1.4em; margin-bottom: 1.071em; } -h5,h6 { font-size: 1.2em; margin-bottom: 1.154em; } - -/* Color palete */ -.water { color:#5582d1; } -.earth { color:#4e3e2c; } -.air { color:#f1fff7; } -.fire { color:#ff8a19; } -.wine { color:#4a040a; } -.beer { color:#F0C030; } -.caffe { color:#473523; } -.caffe-cream { color:#b68d3d; } -.espresso { color:#2c1901; } -.caramel{ color:#ab671f; } -.chocolate { color:#290200; } -.black-pepper { color:#444334; } -.pepper-lite { color:#8d8a72; } -.lipstick { color:#c20c0c; } - - -li ul, -li ol { margin:0 1.5em; } -ul, ol { margin: 0 1.5em 1.5em 1.5em; } - - -dl { margin: 0 0 1.5em 0; } -dl dt { font-weight: bold; } -dl dd { margin-left: 1.5em; } - -a { color:#035292; text-decoration:none; } -a:hover { text-decoration: underline; } - - -table { margin-bottom:1.5em; border-collapse: collapse; } -th { font-weight:bold; } -tr,th,td { margin:0; padding:0 1.5em 0 1em; height:18px; } -tfoot { font-style: italic; } -caption { text-align:center; font-family:Georgia, serif; } - - -abbr, acronym { border-bottom:1px dotted #000; } -address { margin-top:1.5em; font-style: italic; } -del {color:#000;} - - -blockquote { padding:1em 1em 1em 1.5em; font-family:baskerville,"palatino linotype",serif; } -blockquote > *:first-child:before { content:"\201C";font-size:2.5em;margin-left:-.62em;font-family:georgia,serif;padding-right:.2em;color:#aaa;line-height:0; }/* From Tripoli */ - -strong { ont-weight: bold; } -em, dfn { font-style: italic; } -dfn { font-weight: bold; } -pre, code { margin: 1.5em 0; white-space: pre; } -pre, code, tt { font: 1em monospace; line-height: 1.5; } -tt { display: block; margin: 1.5em 0; } -hr { margin-bottom:1.5em; } - -/*other small things */ - -.tc { text-align:center; } -.tr { text-align:right; } -.tl { text-align:left; } -.b { font-weight:bold; } -.i { font-style:italic; } - -.indent { text-indent:1.5em;} -.open { font-variant: small-caps; } -p.break { text-align:center;text-indent:0;line-height:0; } -p.zero{padding:0; margin:0} -p.one { padding:0 1em 1em 1em;color:#111;} -p img.right10 { float: right; margin:0.833em; } - -.oldbook { font-family:"Book Antiqua","Warnock Pro","Goudy Old Style","Palatino",Georgia,serif; } -.note { font-family:Georgia, "Times New Roman", Times, serif; font-style:italic; font-size:0.9em; margin:0.1em; color:#333; } -.mono { font-family:"Courier New", Courier, monospace; } - - diff --git a/resources/etc/Tutorial/tutorial_fr/images/logo_open_sankore.png b/resources/etc/Tutorial/tutorial_fr/images/logo_open_sankore.png deleted file mode 100644 index 0c63bfd72ecd0d1fcdb2eaa8b5653bb1b4a3655c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32972 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%0A$XzBVPvW_9^=%(-cZ>)|Anc9$St92wT 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 CJ_p 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 diff --git a/resources/etc/Tutorial/tutorial_fr/images/pedago.png b/resources/etc/Tutorial/tutorial_fr/images/pedago.png deleted file mode 100644 index 02112edf87b0dc55ee639be960e13e5767bd8d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60486 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 d0G{~h{|6%rx28=#D}JYxUZDUq8CL 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 - - - - - - - - - - - - -
    - -
    - - - -
    - -
    - -

    Bienvenue l'espace tutoriel du logiciel Open-Sankoré. Nous vous proposons une série de ressources en ligne pour vous aider à découvrir le logiciel et améliorer vos connaissances pédagogiques et techniques. Si vous avez des questions à nous poser ou désirez contribuer à notre projet, rendez-vous sur notre site open-sankore.org

    - -
    - -
    - - -

    Tutoriels video
    - -
    - - - - - - -
     
    - -
    - - - diff --git a/resources/forms/mainWindow.ui b/resources/forms/mainWindow.ui index 575d475d..980ef5c8 100644 --- a/resources/forms/mainWindow.ui +++ b/resources/forms/mainWindow.ui @@ -7,7 +7,7 @@ 0 0 1342 - 334 + 223 @@ -170,44 +170,6 @@ - - - Qt::PreventContextMenu - - - Tutorial - - - Qt::LeftToRight - - - false - - - Qt::BottomToolBarArea|Qt::TopToolBarArea - - - - 48 - 32 - - - - false - - - TopToolBarArea - - - true - - - - - - - - true diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index ffb18864..0b640e07 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -335,7 +335,6 @@ void UBBoardController::setupToolbar() //-----------------------------------------------------------// UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->boardToolBar, mMainWindow->actionBoard); - UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->tutorialToolBar, mMainWindow->actionBoard); UBApplication::app()->decorateActionMenu(mMainWindow->actionMenu); @@ -343,7 +342,6 @@ void UBBoardController::setupToolbar() mMainWindow->webToolBar->hide(); mMainWindow->documentToolBar->hide(); - mMainWindow->tutorialToolBar->hide(); connectToolbar(); initToolbarTexts(); diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 140844c0..3df50416 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -177,14 +177,6 @@ void UBBoardPaletteManager::slot_changeMainMode(UBApplicationController::MainMod changeMode(eUBDockPaletteWidget_BOARD); } break; - - case UBApplicationController::Tutorial: - { - if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) - mKeyboardPalette->hide(); - } - break; - case UBApplicationController::Internet: changeMode(eUBDockPaletteWidget_WEB); break; diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 95abad24..8ba3c115 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -345,12 +345,9 @@ int UBApplication::exec(const QString& pFileToImport) mPreferencesController = new UBPreferencesController(mainWindow); connect(mainWindow->actionPreferences, SIGNAL(triggered()), mPreferencesController, SLOT(show())); - connect(mainWindow->actionTutorial, SIGNAL(triggered()), applicationController, SLOT(showTutorial())); - connect(mainWindow->actionTutorial, SIGNAL(triggered()), this, SLOT(stopScript())); connect(mainWindow->actionCheckUpdate, SIGNAL(triggered()), applicationController, SLOT(checkUpdateRequest())); - toolBarPositionChanged(UBSettings::settings()->appToolBarPositionedAtTop->get()); bool bUseMultiScreen = UBSettings::settings()->appUseMultiscreen->get().toBool(); @@ -444,7 +441,6 @@ void UBApplication::toolBarPositionChanged(QVariant topOrBottom) mainWindow->addToolBar(area, mainWindow->boardToolBar); mainWindow->addToolBar(area, mainWindow->webToolBar); mainWindow->addToolBar(area, mainWindow->documentToolBar); - mainWindow->addToolBar(area, mainWindow->tutorialToolBar); webController->showTabAtTop(topOrBottom.toBool()); @@ -457,7 +453,6 @@ void UBApplication::toolBarDisplayTextChanged(QVariant display) mainWindow->boardToolBar->setToolButtonStyle(toolButtonStyle); mainWindow->webToolBar->setToolButtonStyle(toolButtonStyle); mainWindow->documentToolBar->setToolButtonStyle(toolButtonStyle); - mainWindow->tutorialToolBar->setToolButtonStyle(toolButtonStyle); } @@ -539,7 +534,6 @@ void UBApplication::decorateActionMenu(QAction* action) mainWindow->actionCheckUpdate->setEnabled(false); menu->addSeparator(); - menu->addAction(mainWindow->actionTutorial); #ifndef Q_WS_X11 // No Podcast on Linux yet menu->addAction(mainWindow->actionPodcast); diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index b2918089..cc08cf46 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -342,7 +342,6 @@ void UBApplicationController::showBoard() { mMainWindow->webToolBar->hide(); mMainWindow->documentToolBar->hide(); - mMainWindow->tutorialToolBar->hide(); mMainWindow->boardToolBar->show(); if (mMainMode == Document) @@ -391,14 +390,12 @@ void UBApplicationController::showInternet() if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) { showDesktop(true); - UBApplication::webController->show(UBWebController::WebBrowser); - // really no have emit mainModeChanged here ? potential problem with virtual keyboard ? + UBApplication::webController->show(); } else { mMainWindow->boardToolBar->hide(); mMainWindow->documentToolBar->hide(); - mMainWindow->tutorialToolBar->hide(); mMainWindow->webToolBar->show(); mMainMode = Internet; @@ -408,7 +405,7 @@ void UBApplicationController::showInternet() mMainWindow->show(); mUninoteController->hideWindow(); - UBApplication::webController->show(UBWebController::WebBrowser); + UBApplication::webController->show(); emit mainModeChanged(Internet); } @@ -419,7 +416,6 @@ void UBApplicationController::showDocument() { mMainWindow->webToolBar->hide(); mMainWindow->boardToolBar->hide(); - mMainWindow->tutorialToolBar->hide(); mMainWindow->documentToolBar->show(); mMainMode = Document; @@ -475,42 +471,6 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess) } -void UBApplicationController::showTutorial() -{ - - if (UBApplication::boardController) - { - UBApplication::boardController->persistCurrentScene(); - UBApplication::boardController->hide(); - } - - if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) - { - showDesktop(true); - UBApplication::webController->show(UBWebController::Tutorial); - - } - else{ - mMainWindow->webToolBar->hide(); - mMainWindow->boardToolBar->hide(); - mMainWindow->documentToolBar->hide(); - mMainWindow->tutorialToolBar->show(); - - - mMainMode = Tutorial; - - adaptToolBar(); - - mUninoteController->hideWindow(); - - UBApplication::webController->show(UBWebController::Tutorial); - - mirroringEnabled(false); - emit mainModeChanged(mMainMode); - } -} - - void UBApplicationController::checkUpdate() { // if(mHttp) @@ -588,10 +548,6 @@ void UBApplicationController::hideDesktop() { showDocument(); } - else if (mMainMode == Tutorial) - { - showTutorial(); - } mIsShowingDesktop = false; diff --git a/src/core/UBApplicationController.h b/src/core/UBApplicationController.h index b94655d6..9ae6283f 100644 --- a/src/core/UBApplicationController.h +++ b/src/core/UBApplicationController.h @@ -92,7 +92,7 @@ class UBApplicationController : public QObject enum MainMode { - Board = 0, Internet, Document, Tutorial, WebDocument + Board = 0, Internet, Document, WebDocument }; MainMode displayMode() @@ -136,8 +136,6 @@ class UBApplicationController : public QObject void actionCopy(); void actionPaste(); - void showTutorial(); - void checkUpdateRequest(); void checkUpdateAtLaunch(); diff --git a/src/gui/UBWebToolsPalette.cpp b/src/gui/UBWebToolsPalette.cpp index 797c4501..b5128f82 100644 --- a/src/gui/UBWebToolsPalette.cpp +++ b/src/gui/UBWebToolsPalette.cpp @@ -38,30 +38,22 @@ #include "core/memcheck.h" -UBWebToolsPalette::UBWebToolsPalette(QWidget *parent,bool tutorialMode=false) +UBWebToolsPalette::UBWebToolsPalette(QWidget *parent) : UBActionPalette(Qt::TopRightCorner, parent) { QList actions; - if (tutorialMode){ - actions << UBApplication::mainWindow->actionBoard; - } - else{ - actions << UBApplication::mainWindow->actionWebTrapFlash; - //actions << UBApplication::mainWindow->actionWebTrap; - - actions << UBApplication::mainWindow->actionWebCustomCapture; - actions << UBApplication::mainWindow->actionWebWindowCapture; - actions << UBApplication::mainWindow->actionWebOEmbed; - - //actions << UBApplication::mainWindow->actionEduMedia; - - actions << UBApplication::mainWindow->actionWebShowHideOnDisplay; - - if (UBPlatformUtils::hasVirtualKeyboard()) - { - actions << UBApplication::mainWindow->actionVirtualKeyboard; - } - } + + actions << UBApplication::mainWindow->actionWebTrapFlash; + + actions << UBApplication::mainWindow->actionWebCustomCapture; + actions << UBApplication::mainWindow->actionWebWindowCapture; + actions << UBApplication::mainWindow->actionWebOEmbed; + + actions << UBApplication::mainWindow->actionWebShowHideOnDisplay; + + if (UBPlatformUtils::hasVirtualKeyboard()) + actions << UBApplication::mainWindow->actionVirtualKeyboard; + setActions(actions); setButtonIconSize(QSize(42, 42)); adjustSizeAndPosition(); diff --git a/src/gui/UBWebToolsPalette.h b/src/gui/UBWebToolsPalette.h index 974d2f6e..39482860 100644 --- a/src/gui/UBWebToolsPalette.h +++ b/src/gui/UBWebToolsPalette.h @@ -32,7 +32,7 @@ class UBWebToolsPalette : public UBActionPalette Q_OBJECT; public: - UBWebToolsPalette(QWidget *parent,bool tutorialMode); + UBWebToolsPalette(QWidget *parent); virtual ~UBWebToolsPalette(); }; diff --git a/src/web/UBWebController.cpp b/src/web/UBWebController.cpp index 7eaacecf..4701ccea 100644 --- a/src/web/UBWebController.cpp +++ b/src/web/UBWebController.cpp @@ -70,20 +70,6 @@ UBWebController::UBWebController(UBMainWindow* mainWindow) , mToolsPalettePositionned(false) , mDownloadViewIsVisible(false) { - connect(mMainWindow->actionWebTools, SIGNAL(toggled(bool)), this, SLOT(toggleWebToolsPalette(bool))); - - mStackedWidget = new QStackedWidget(); - mStackedWidget->addWidget(new QWidget(mStackedWidget)); - mStackedWidget->addWidget(new QWidget(mStackedWidget)); - - mMainWindow->addWebWidget(mStackedWidget); - - for (int i = 0; i < TotalNumberOfWebInstances; i += 1){ - mWebBrowserList[i] = 0; - mToolsPaletteList[i] = 0; - mToolsPalettePositionnedList[i] = false; - } - connect(&mOEmbedParser, SIGNAL(oembedParsed(QVector)), this, SLOT(onOEmbedParsed(QVector))); // TODO : Comment the next line to continue the Youtube button bugfix @@ -94,9 +80,6 @@ UBWebController::UBWebController(UBMainWindow* mainWindow) UBWebController::~UBWebController() { // NOOP - if (mStackedWidget) { - delete mStackedWidget; - } } void UBWebController::initialiazemOEmbedProviders() @@ -130,17 +113,15 @@ void UBWebController::webBrowserInstance() } else { - mCurrentWebBrowser = &mWebBrowserList[WebBrowser]; - mToolsCurrentPalette = &mToolsPaletteList[WebBrowser]; - mToolsPalettePositionned = mToolsPalettePositionnedList[WebBrowser]; - - if (!(*mCurrentWebBrowser)) + if (!mCurrentWebBrowser) { - (*mCurrentWebBrowser) = new WBBrowserWindow(mMainWindow->centralWidget(), mMainWindow); + mCurrentWebBrowser = new WBBrowserWindow(mMainWindow->centralWidget(), mMainWindow); - connect((*mCurrentWebBrowser), SIGNAL(activeViewChange(QWidget*)), this, SLOT(setSourceWidget(QWidget*))); + mMainWindow->addWebWidget(mCurrentWebBrowser); - WBBrowserWindow::downloadManager()->setParent((*mCurrentWebBrowser), Qt::Tool); + connect(mCurrentWebBrowser, SIGNAL(activeViewChange(QWidget*)), this, SLOT(setSourceWidget(QWidget*))); + + WBBrowserWindow::downloadManager()->setParent(mCurrentWebBrowser, Qt::Tool); UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->webToolBar, mMainWindow->actionBoard, 32); UBApplication::app()->decorateActionMenu(mMainWindow->actionMenu); @@ -149,28 +130,21 @@ void UBWebController::webBrowserInstance() mMainWindow->actionBookmarks->setVisible(showAddBookmarkButtons); mMainWindow->actionAddBookmark->setVisible(showAddBookmarkButtons); - mStackedWidget->setCurrentIndex(WebBrowser); - if (mStackedWidget->currentWidget()) { - mStackedWidget->removeWidget(mStackedWidget->currentWidget()); - } - mStackedWidget->insertWidget(WebBrowser, (*mCurrentWebBrowser)); - showTabAtTop(UBSettings::settings()->appToolBarPositionedAtTop->get().toBool()); adaptToolBar(); - mTrapFlashController = new UBTrapFlashController((*mCurrentWebBrowser)); + mTrapFlashController = new UBTrapFlashController(mCurrentWebBrowser); - connect((*mCurrentWebBrowser), SIGNAL(activeViewPageChanged()), this, SLOT(activePageChanged())); + connect(mCurrentWebBrowser, SIGNAL(activeViewPageChanged()), this, SLOT(activePageChanged())); - (*mCurrentWebBrowser)->loadUrl(currentUrl); + mCurrentWebBrowser->loadUrl(currentUrl); - (*mCurrentWebBrowser)->tabWidget()->tabBar()->show(); - (*mCurrentWebBrowser)->tabWidget()->lineEdits()->show(); + mCurrentWebBrowser->tabWidget()->tabBar()->show(); + mCurrentWebBrowser->tabWidget()->lineEdits()->show(); } - mStackedWidget->setCurrentIndex(WebBrowser); - UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget()); + UBApplication::applicationController->setMirrorSourceWidget(mCurrentWebBrowser->paintWidget()); mMainWindow->switchToWebWidget(); setupPalettes(); @@ -178,87 +152,16 @@ void UBWebController::webBrowserInstance() bool mirroring = UBSettings::settings()->webShowPageImmediatelyOnMirroredScreen->get().toBool(); UBApplication::mainWindow->actionWebShowHideOnDisplay->setChecked(mirroring); - (*mToolsCurrentPalette)->show(); + mToolsCurrentPalette->show(); } if (mDownloadViewIsVisible) WBBrowserWindow::downloadManager()->show(); } -void UBWebController::tutorialWebInstance() +void UBWebController::show() { - QLocale locale = QLocale(); - QString language = "_" + locale.name().left(2); - - QString tutorialHtmlIndexFile = 0; - QString tutorialPath = "/etc/Tutorial/tutorial" + language + "/index.html"; -#if defined(Q_WS_MAC) - tutorialHtmlIndexFile = QApplication::applicationDirPath()+ "/../Resources" + tutorialPath; -#else - tutorialHtmlIndexFile = QApplication::applicationDirPath() + tutorialPath; -#endif - - QUrl currentUrl = QUrl::fromLocalFile(tutorialHtmlIndexFile); - - if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) - { - QDesktopServices::openUrl(currentUrl); - } - else - { - mCurrentWebBrowser = &mWebBrowserList[Tutorial]; - mToolsPalettePositionned = &mToolsPalettePositionnedList[Tutorial]; - - if (!(*mCurrentWebBrowser)) - { - (*mCurrentWebBrowser) = new WBBrowserWindow(mMainWindow->centralWidget(), mMainWindow, true); - connect((*mCurrentWebBrowser), SIGNAL(activeViewChange(QWidget*)), this, SLOT(setSourceWidget(QWidget*))); - - mStackedWidget->setCurrentIndex(Tutorial); - if (mStackedWidget->currentWidget()) { - mStackedWidget->removeWidget(mStackedWidget->currentWidget()); - } - mStackedWidget->insertWidget(Tutorial, (*mCurrentWebBrowser)); - adaptToolBar(); - - mTrapFlashController = new UBTrapFlashController((*mCurrentWebBrowser)); - - connect((*mCurrentWebBrowser), SIGNAL(activeViewPageChanged()), this, SLOT(activePageChanged())); - (*mCurrentWebBrowser)->loadUrl(currentUrl); - - (*mCurrentWebBrowser)->tabWidget()->tabBar()->hide(); - (*mCurrentWebBrowser)->tabWidget()->lineEdits()->hide(); - - } - else - (*mCurrentWebBrowser)->loadUrl(currentUrl); - - mStackedWidget->setCurrentIndex(Tutorial); - UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget()); - mMainWindow->switchToWebWidget(); - screenLayoutChanged(); - - bool mirroring = UBSettings::settings()->webShowPageImmediatelyOnMirroredScreen->get().toBool(); - UBApplication::mainWindow->actionWebShowHideOnDisplay->setChecked(mirroring); - - } - -} - -void UBWebController::show(WebInstance type) -{ - switch(type) - { - case WebBrowser: - webBrowserInstance(); - break; - case Tutorial: - tutorialWebInstance(); - break; - default: - qCritical() << __FILE__ << " non supported web instance type " << QString::number(type) ; - break; - } + webBrowserInstance(); } void UBWebController::setSourceWidget(QWidget* pWidget) @@ -277,16 +180,14 @@ void UBWebController::trapFlash() void UBWebController::activePageChanged() { - if (mCurrentWebBrowser && (*mCurrentWebBrowser)->currentTabWebView()) + if (mCurrentWebBrowser && mCurrentWebBrowser->currentTabWebView()) { - if (mTrapFlashController && (*mCurrentWebBrowser)->currentTabWebView()->page()) - { - mTrapFlashController->updateTrapFlashFromPage((*mCurrentWebBrowser)->currentTabWebView()->page()->currentFrame()); - } + if (mTrapFlashController && mCurrentWebBrowser->currentTabWebView()->page()) + mTrapFlashController->updateTrapFlashFromPage(mCurrentWebBrowser->currentTabWebView()->page()->currentFrame()); mMainWindow->actionWebTrap->setChecked(false); - QUrl latestUrl = (*mCurrentWebBrowser)->currentTabWebView()->url(); + QUrl latestUrl = mCurrentWebBrowser->currentTabWebView()->url(); // TODO : Uncomment the next line to continue the youtube button bugfix //UBApplication::mainWindow->actionWebOEmbed->setEnabled(hasEmbeddedContent()); @@ -294,7 +195,7 @@ void UBWebController::activePageChanged() UBApplication::mainWindow->actionWebOEmbed->setEnabled(isOEmbedable(latestUrl)); UBApplication::mainWindow->actionEduMedia->setEnabled(isEduMedia(latestUrl)); - emit activeWebPageChanged((*mCurrentWebBrowser)->currentTabWebView()); + emit activeWebPageChanged(mCurrentWebBrowser->currentTabWebView()); } } @@ -302,7 +203,7 @@ bool UBWebController::hasEmbeddedContent() { bool bHasContent = false; if(mCurrentWebBrowser){ - QString html = (*mCurrentWebBrowser)->currentTabWebView()->webPage()->mainFrame()->toHtml(); + QString html = mCurrentWebBrowser->currentTabWebView()->webPage()->mainFrame()->toHtml(); // search the presence of "+oembed" QString query = "\\+oembed([^>]*)>"; @@ -334,12 +235,11 @@ QPixmap UBWebController::captureCurrentPage() QPixmap pix; if (mCurrentWebBrowser - && (*mCurrentWebBrowser) - && (*mCurrentWebBrowser)->currentTabWebView() - && (*mCurrentWebBrowser)->currentTabWebView()->page() - && (*mCurrentWebBrowser)->currentTabWebView()->page()->mainFrame()) + && mCurrentWebBrowser->currentTabWebView() + && mCurrentWebBrowser->currentTabWebView()->page() + && mCurrentWebBrowser->currentTabWebView()->page()->mainFrame()) { - QWebFrame* frame = (*mCurrentWebBrowser)->currentTabWebView()->page()->mainFrame(); + QWebFrame* frame = mCurrentWebBrowser->currentTabWebView()->page()->mainFrame(); QSize size = frame->contentsSize(); qDebug() << size; @@ -349,8 +249,8 @@ QPixmap UBWebController::captureCurrentPage() QVariant width = frame->evaluateJavaScript("document.getElementsByTagName('body')[0].clientWidth"); QVariant height = frame->evaluateJavaScript("document.getElementsByTagName('body')[0].clientHeight"); - QSize vieportSize = (*mCurrentWebBrowser)->currentTabWebView()->page()->viewportSize(); - (*mCurrentWebBrowser)->currentTabWebView()->page()->setViewportSize(frame->contentsSize()); + QSize vieportSize = mCurrentWebBrowser->currentTabWebView()->page()->viewportSize(); + mCurrentWebBrowser->currentTabWebView()->page()->setViewportSize(frame->contentsSize()); pix = QPixmap(frame->geometry().width(), frame->geometry().height()); { @@ -374,7 +274,7 @@ QPixmap UBWebController::captureCurrentPage() } - (*mCurrentWebBrowser)->currentTabWebView()->page()->setViewportSize(vieportSize); + mCurrentWebBrowser->currentTabWebView()->page()->setViewportSize(vieportSize); } return pix; @@ -383,10 +283,10 @@ QPixmap UBWebController::captureCurrentPage() void UBWebController::setupPalettes() { - if(!(*mToolsCurrentPalette)) + if(!mToolsCurrentPalette) { - (*mToolsCurrentPalette) = new UBWebToolsPalette(UBApplication::mainWindow, false); - UBApplication::boardController->paletteManager()->setCurrentWebToolsPalette(*mToolsCurrentPalette); + mToolsCurrentPalette = new UBWebToolsPalette(UBApplication::mainWindow); + UBApplication::boardController->paletteManager()->setCurrentWebToolsPalette(mToolsCurrentPalette); #ifndef Q_WS_WIN if (UBPlatformUtils::hasVirtualKeyboard() && UBApplication::boardController->paletteManager()->mKeyboardPalette) connect(UBApplication::boardController->paletteManager()->mKeyboardPalette, SIGNAL(closed()), @@ -402,15 +302,14 @@ void UBWebController::setupPalettes() connect(mMainWindow->actionWebShowHideOnDisplay, SIGNAL(toggled(bool)), this, SLOT(toogleMirroring(bool))); connect(mMainWindow->actionWebTrap, SIGNAL(toggled(bool)), this, SLOT(toggleWebTrap(bool))); - (*mToolsCurrentPalette)->hide(); - (*mToolsCurrentPalette)->adjustSizeAndPosition(); + mToolsCurrentPalette->hide(); + mToolsCurrentPalette->adjustSizeAndPosition(); if (controlView()){ - int left = controlView()->width() - 20 - (*mToolsCurrentPalette)->width(); - int top = (controlView()->height() - (*mToolsCurrentPalette)->height()) / 2; - mToolsPalettePositionnedList[mStackedWidget->currentIndex()] = true; - (*mToolsCurrentPalette)->setCustomPosition(true); - (*mToolsCurrentPalette)->move(left, top); + int left = controlView()->width() - 20 - mToolsCurrentPalette->width(); + int top = (controlView()->height() - mToolsCurrentPalette->height()) / 2; + mToolsCurrentPalette->setCustomPosition(true); + mToolsCurrentPalette->move(left, top); } mMainWindow->actionWebTools->trigger(); } @@ -419,17 +318,8 @@ void UBWebController::setupPalettes() void UBWebController::toggleWebTrap(bool checked) { - if (mCurrentWebBrowser - && (*mCurrentWebBrowser) - && (*mCurrentWebBrowser)->currentTabWebView()) - { - (*mCurrentWebBrowser)->currentTabWebView()->setIsTrapping(checked); - } -} - -void UBWebController::toggleWebToolsPalette(bool checked) -{ - (*mToolsCurrentPalette)->setVisible(checked); + if (mCurrentWebBrowser && mCurrentWebBrowser->currentTabWebView()) + mCurrentWebBrowser->currentTabWebView()->setIsTrapping(checked); } @@ -438,28 +328,26 @@ void UBWebController::captureWindow() QPixmap webPagePixmap = captureCurrentPage(); if (!webPagePixmap.isNull()) - { - emit imageCaptured(webPagePixmap, true, (*mCurrentWebBrowser)->currentTabWebView()->url()); - } + emit imageCaptured(webPagePixmap, true, mCurrentWebBrowser->currentTabWebView()->url()); } void UBWebController::customCapture() { - (*mToolsCurrentPalette)->setVisible(false); + mToolsCurrentPalette->setVisible(false); qApp->processEvents(); - UBCustomCaptureWindow customCaptureWindow((*mCurrentWebBrowser)); + UBCustomCaptureWindow customCaptureWindow(mCurrentWebBrowser); customCaptureWindow.show(); if (customCaptureWindow.execute(getScreenPixmap()) == QDialog::Accepted) { QPixmap selectedPixmap = customCaptureWindow.getSelectedPixmap(); - emit imageCaptured(selectedPixmap, false, (*mCurrentWebBrowser)->currentTabWebView()->url()); + emit imageCaptured(selectedPixmap, false, mCurrentWebBrowser->currentTabWebView()->url()); } - (*mToolsCurrentPalette)->setVisible(true); + mToolsCurrentPalette->setVisible(true); } @@ -505,27 +393,27 @@ void UBWebController::adaptToolBar() mMainWindow->actionWebReload->setVisible(highResolution); mMainWindow->actionStopLoading->setVisible(highResolution); - if(mCurrentWebBrowser && (*mCurrentWebBrowser) ) - (*mCurrentWebBrowser)->adaptToolBar(highResolution); + if(mCurrentWebBrowser ) + mCurrentWebBrowser->adaptToolBar(highResolution); } void UBWebController::showTabAtTop(bool attop) { - if (mCurrentWebBrowser && (*mCurrentWebBrowser)) - (*mCurrentWebBrowser)->showTabAtTop(attop); + if (mCurrentWebBrowser) + mCurrentWebBrowser->showTabAtTop(attop); } void UBWebController::captureoEmbed() { - if ( mCurrentWebBrowser && (*mCurrentWebBrowser) && (*mCurrentWebBrowser)->currentTabWebView()){ + if ( mCurrentWebBrowser && mCurrentWebBrowser->currentTabWebView()){ // TODO : Uncomment the next lines to continue the youtube button bugfix // getEmbeddableContent(); // And comment from here - QWebView* webView = (*mCurrentWebBrowser)->currentTabWebView(); + QWebView* webView = mCurrentWebBrowser->currentTabWebView(); QUrl currentUrl = webView->url(); if (isOEmbedable(currentUrl)) @@ -576,9 +464,9 @@ void UBWebController::getEmbeddableContent() { // Get the source code of the page if(mCurrentWebBrowser){ - QNetworkAccessManager* pNam = (*mCurrentWebBrowser)->currentTabWebView()->webPage()->networkAccessManager(); + QNetworkAccessManager* pNam = mCurrentWebBrowser->currentTabWebView()->webPage()->networkAccessManager(); if(NULL != pNam){ - QString html = (*mCurrentWebBrowser)->currentTabWebView()->webPage()->mainFrame()->toHtml(); + QString html = mCurrentWebBrowser->currentTabWebView()->webPage()->mainFrame()->toHtml(); mOEmbedParser.setNetworkAccessManager(pNam); // First, we have to check if there is some oembed content @@ -591,10 +479,9 @@ void UBWebController::getEmbeddableContent() void UBWebController::captureEduMedia() { - if (mCurrentWebBrowser && (*mCurrentWebBrowser) - && (*mCurrentWebBrowser)->currentTabWebView()) + if (mCurrentWebBrowser && mCurrentWebBrowser->currentTabWebView()) { - QWebView* webView = (*mCurrentWebBrowser)->currentTabWebView(); + QWebView* webView = mCurrentWebBrowser->currentTabWebView(); QUrl currentUrl = webView->url(); if (isEduMedia(currentUrl)) @@ -681,40 +568,31 @@ bool UBWebController::isEduMedia(const QUrl& pUrl) void UBWebController::loadUrl(const QUrl& url) { - bool webBrowserAlreadyInstanciated = dynamic_cast(mStackedWidget->widget(WebBrowser)) != NULL; UBApplication::applicationController->showInternet(); if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) - { + QDesktopServices::openUrl(url); - } else - { - if (!webBrowserAlreadyInstanciated) { - (*mCurrentWebBrowser)->loadUrl(url); - } - else { - (*mCurrentWebBrowser)->loadUrlInNewTab(url); - } - } + mCurrentWebBrowser->loadUrlInNewTab(url); + + } QWebView* UBWebController::createNewTab() { - if (mCurrentWebBrowser && !(*mCurrentWebBrowser)) - { + if (mCurrentWebBrowser) UBApplication::applicationController->showInternet(); - } - return (*mCurrentWebBrowser)->createNewTab(); + return mCurrentWebBrowser->createNewTab(); } void UBWebController::copy() { - if (mCurrentWebBrowser && (*mCurrentWebBrowser) && (*mCurrentWebBrowser)->currentTabWebView()) + if (mCurrentWebBrowser && mCurrentWebBrowser->currentTabWebView()) { - QWebView* webView = (*mCurrentWebBrowser)->currentTabWebView(); + QWebView* webView = mCurrentWebBrowser->currentTabWebView(); QAction *act = webView->pageAction(QWebPage::Copy); if(act) act->trigger(); @@ -724,9 +602,9 @@ void UBWebController::copy() void UBWebController::paste() { - if (mCurrentWebBrowser && (*mCurrentWebBrowser) && (*mCurrentWebBrowser)->currentTabWebView()) + if (mCurrentWebBrowser && mCurrentWebBrowser->currentTabWebView()) { - QWebView* webView = (*mCurrentWebBrowser)->currentTabWebView(); + QWebView* webView = mCurrentWebBrowser->currentTabWebView(); QAction *act = webView->pageAction(QWebPage::Paste); if(act) act->trigger(); @@ -736,9 +614,9 @@ void UBWebController::paste() void UBWebController::cut() { - if (mCurrentWebBrowser && (*mCurrentWebBrowser) && (*mCurrentWebBrowser)->currentTabWebView()) + if (mCurrentWebBrowser && mCurrentWebBrowser->currentTabWebView()) { - QWebView* webView = (*mCurrentWebBrowser)->currentTabWebView(); + QWebView* webView = mCurrentWebBrowser->currentTabWebView(); QAction *act = webView->pageAction(QWebPage::Cut); if(act) act->trigger(); diff --git a/src/web/UBWebController.h b/src/web/UBWebController.h index 6bba430a..1f9cbbed 100644 --- a/src/web/UBWebController.h +++ b/src/web/UBWebController.h @@ -58,18 +58,9 @@ class UBWebController : public QObject QUrl currentPageUrl() const; - enum WebInstance - { - WebBrowser = 0, Tutorial, TotalNumberOfWebInstances - }; - - void show(WebInstance type = UBWebController::WebBrowser); + void show(); - WBBrowserWindow* GetCurrentWebBrowser() - { - if( mCurrentWebBrowser != NULL ) return *mCurrentWebBrowser; - else return NULL; - }; + WBBrowserWindow* GetCurrentWebBrowser(){return mCurrentWebBrowser;} protected: @@ -81,7 +72,6 @@ class UBWebController : public QObject void screenLayoutChanged(); void setSourceWidget(QWidget* pWidget); - void toggleWebToolsPalette(bool checked); void captureWindow(); void customCapture(); void toogleMirroring(bool checked); @@ -106,25 +96,19 @@ class UBWebController : public QObject private: void initialiazemOEmbedProviders(); - void tutorialWebInstance(); void webBrowserInstance(); void lookForEmbedContent(QString* pHtml, QString tag, QString attribute, QList* pList); void checkForOEmbed(QString* pHtml); - QStackedWidget *mStackedWidget; - UBMainWindow *mMainWindow; - WBBrowserWindow* mWebBrowserList[TotalNumberOfWebInstances]; - WBBrowserWindow** mCurrentWebBrowser; + WBBrowserWindow* mCurrentWebBrowser; QWidget* mBrowserWidget; UBTrapFlashController* mTrapFlashController; - UBWebToolsPalette** mToolsCurrentPalette; - UBWebToolsPalette* mToolsPaletteList[TotalNumberOfWebInstances]; + UBWebToolsPalette* mToolsCurrentPalette; bool mToolsPalettePositionned; - bool mToolsPalettePositionnedList[TotalNumberOfWebInstances]; bool mDownloadViewIsVisible; diff --git a/src/web/browser/WBBrowserWindow.cpp b/src/web/browser/WBBrowserWindow.cpp index 74286edc..8f916005 100644 --- a/src/web/browser/WBBrowserWindow.cpp +++ b/src/web/browser/WBBrowserWindow.cpp @@ -93,7 +93,7 @@ WBDownloadManager *WBBrowserWindow::sDownloadManager = 0; WBHistoryManager *WBBrowserWindow::sHistoryManager = 0; -WBBrowserWindow::WBBrowserWindow(QWidget *parent, Ui::MainWindow* uniboardMainWindow, bool isViewerWebInstance) +WBBrowserWindow::WBBrowserWindow(QWidget *parent, Ui::MainWindow* uniboardMainWindow) : QWidget(parent) , mWebToolBar(0) , mSearchToolBar(0) @@ -106,11 +106,8 @@ WBBrowserWindow::WBBrowserWindow(QWidget *parent, Ui::MainWindow* uniboardMainWi defaultSettings->setAttribute(QWebSettings::PluginsEnabled, true); setupMenu(); - if(!isViewerWebInstance) - setupToolBar(); - else{ - setupToolBarForTutorial(); - } + setupToolBar(); + QVBoxLayout *layout = new QVBoxLayout; layout->setSpacing(0); @@ -125,9 +122,8 @@ WBBrowserWindow::WBBrowserWindow(QWidget *parent, Ui::MainWindow* uniboardMainWi connect(mTabWidget, SIGNAL(setCurrentTitle(const QString &)), this, SLOT(slotUpdateWindowTitle(const QString &))); - if (!isViewerWebInstance) { - connect(mTabWidget, SIGNAL(loadProgress(int)), this, SLOT(slotLoadProgress(int))); - } + connect(mTabWidget, SIGNAL(loadProgress(int)), this, SLOT(slotLoadProgress(int))); + connect(mTabWidget, SIGNAL(loadFinished(bool)), this, SIGNAL(activeViewPageChanged())); @@ -223,7 +219,7 @@ void WBBrowserWindow::setupToolBar() mHistoryForwardMenu = new QMenu(this); connect(mHistoryForwardMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowForwardMenu())); connect(mHistoryForwardMenu, SIGNAL(triggered(QAction *)), this, SLOT(openActionUrl(QAction *))); - + foreach (QWidget* menuWidget, mUniboardMainWindow->actionWebForward->associatedWidgets()) { QToolButton *tb = qobject_cast(menuWidget); @@ -257,33 +253,6 @@ void WBBrowserWindow::setupToolBar() mWebToolBar->show(); } -void WBBrowserWindow::setupToolBarForTutorial() -{ - mWebToolBar = mUniboardMainWindow->tutorialToolBar; - - mTabWidget->addWebAction(mUniboardMainWindow->actionWebBack, QWebPage::Back); - mTabWidget->addWebAction(mUniboardMainWindow->actionWebForward, QWebPage::Forward); - - foreach (QWidget* menuWidget, mUniboardMainWindow->actionWebBack->associatedWidgets()) - { - QToolButton *tb = qobject_cast(menuWidget); - - if (tb && tb->menu()) - tb->setMenu(NULL); - } - - foreach (QWidget* menuWidget, mUniboardMainWindow->actionWebForward->associatedWidgets()) - { - QToolButton *tb = qobject_cast(menuWidget); - - if (tb && tb->menu()) - tb->setMenu(NULL); - } - - mWebToolBar->show(); -} - - void WBBrowserWindow::adaptToolBar(bool wideRes) { @@ -579,7 +548,7 @@ void WBBrowserWindow::aboutToShowBackMenu() if (historyLimit < 0) historyLimit = 0; - for (int i = history->backItems(historyCount).count() - 1; i >= historyLimit; --i) + for (int i = history->backItems(historyCount).count() - 1; i >= historyLimit; --i) { QWebHistoryItem item = history->backItems(historyCount).at(i); @@ -613,7 +582,7 @@ void WBBrowserWindow::aboutToShowForwardMenu() if (historyLimit > UBSettings::settings()->historyLimit->get().toReal()) historyLimit = UBSettings::settings()->historyLimit->get().toReal(); - for (int i = 0; i < historyLimit; ++i) + for (int i = 0; i < historyLimit; ++i) { QWebHistoryItem item = history->forwardItems(historyCount).at(i); @@ -636,7 +605,7 @@ void WBBrowserWindow::aboutToShowForwardMenu() void WBBrowserWindow::openActionUrl(QAction *action) { - QWebHistory *history = currentTabWebView()->history(); + QWebHistory *history = currentTabWebView()->history(); if (action->data() == "clear") { @@ -646,7 +615,7 @@ void WBBrowserWindow::openActionUrl(QAction *action) int offset = action->data().toInt(); if (offset < 0) - history->goToItem(history->backItems(-1*offset).first()); + history->goToItem(history->backItems(-1*offset).first()); else if (offset > 0) - history->goToItem(history->forwardItems(history->count() - offset + 1).back()); + history->goToItem(history->forwardItems(history->count() - offset + 1).back()); } diff --git a/src/web/browser/WBBrowserWindow.h b/src/web/browser/WBBrowserWindow.h index a26530a8..178d4945 100644 --- a/src/web/browser/WBBrowserWindow.h +++ b/src/web/browser/WBBrowserWindow.h @@ -88,7 +88,7 @@ class WBBrowserWindow : public QWidget Q_OBJECT; public: - WBBrowserWindow(QWidget *parent = 0, Ui::MainWindow* uniboardMainWindow = 0, bool isViewerWebInstance = false); + WBBrowserWindow(QWidget *parent = 0, Ui::MainWindow* uniboardMainWindow = 0); ~WBBrowserWindow(); QSize sizeHint() const; @@ -160,7 +160,6 @@ class WBBrowserWindow : public QWidget void setupMenu(); void setupToolBar(); - void setupToolBarForTutorial(); void updateStatusbarActionText(bool visible); QToolBar *mWebToolBar; From 348acb8e5afd1d91ae89e1559693f8e2b8f4585a Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Tue, 28 May 2013 13:07:13 +0200 Subject: [PATCH 08/24] first page 0 handling fix --- src/board/UBBoardPaletteManager.cpp | 5 +- src/core/UBPersistenceManager.cpp | 7 -- src/document/UBDocumentContainer.cpp | 6 - src/document/UBDocumentController.cpp | 35 +----- src/document/UBDocumentController.h | 4 - src/frameworks/UBFileSystemUtils.cpp | 11 +- src/gui/UBDocumentNavigator.cpp | 5 +- src/gui/UBDocumentThumbnailWidget.cpp | 66 +++++------ src/gui/UBNavigatorPalette.cpp | 153 -------------------------- src/gui/UBNavigatorPalette.h | 73 ------------ src/gui/UBPageNavigationWidget.cpp | 14 +-- src/gui/UBPageNavigationWidget.h | 2 - src/gui/UBThumbnailWidget.cpp | 48 +++----- src/gui/UBThumbnailWidget.h | 2 - src/gui/gui.pri | 2 - 15 files changed, 54 insertions(+), 379 deletions(-) delete mode 100644 src/gui/UBNavigatorPalette.cpp delete mode 100644 src/gui/UBNavigatorPalette.h diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 3df50416..c97e1952 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -318,10 +318,7 @@ void UBBoardPaletteManager::pagePaletteButtonReleased() mPagePalette = 0; QListpageActions; pageActions << UBApplication::mainWindow->actionNewPage; - UBBoardController* boardController = UBApplication::boardController; - if(UBApplication::documentController->pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(boardController->activeSceneIndex()))){ - pageActions << UBApplication::mainWindow->actionDuplicatePage; - } + pageActions << UBApplication::mainWindow->actionDuplicatePage; pageActions << UBApplication::mainWindow->actionImportPage; mPagePalette = new UBActionPalette(pageActions, Qt::Horizontal , mContainer); diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index c6add622..5b061ff2 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -655,7 +655,6 @@ int UBPersistenceManager::sceneCount(const UBDocumentProxy* proxy) int pageIndex = 0; bool moreToProcess = true; - bool addedMissingZeroPage = false; while (moreToProcess) { @@ -669,12 +668,6 @@ int UBPersistenceManager::sceneCount(const UBDocumentProxy* proxy) moreToProcess = false; } - if(pageIndex == 1 && addedMissingZeroPage){ - // increment is done only to check if there are other pages than the missing zero page - // This situation means -> no pages on the document - return 0; - } - return pageIndex; } diff --git a/src/document/UBDocumentContainer.cpp b/src/document/UBDocumentContainer.cpp index 6325d9c5..d0d669ea 100644 --- a/src/document/UBDocumentContainer.cpp +++ b/src/document/UBDocumentContainer.cpp @@ -62,11 +62,6 @@ void UBDocumentContainer::duplicatePages(QList& pageIndexes) bool UBDocumentContainer::movePageToIndex(int source, int target) { - if (source==0) - { - // Title page - cant be moved - return false; - } UBPersistenceManager::persistenceManager()->moveSceneToIndex(mCurrentDocument, source, target); deleteThumbPage(source); insertThumbPage(target); @@ -120,7 +115,6 @@ void UBDocumentContainer::reloadThumbnails() if (mCurrentDocument) { UBThumbnailAdaptor::load(mCurrentDocument, mDocumentThumbs); - qDebug() << "Reloading Thumbnails. new mDocumentThumbs size: " << mDocumentThumbs.size(); emit documentThumbnailsUpdated(this); } } diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index 77432c67..44e26da4 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -1082,7 +1082,7 @@ void UBDocumentController::moveSceneToIndex(UBDocumentProxy* proxy, int source, { proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime())); UBMetadataDcSubsetAdaptor::persist(proxy); - + mDocumentUI->thumbnailWidget->hightlightItem(target); } } @@ -1147,11 +1147,11 @@ void UBDocumentController::selectionChanged() else if(pageSelected){ QList selection = mDocumentUI->thumbnailWidget->selectedItems(); if(pageCount == 1) - mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0))); + mMainWindow->actionDuplicate->setEnabled(!trashSelected); else{ for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1){ if(dynamic_cast(selection.at(i))->sceneIndex() == 0){ - mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0))); + mMainWindow->actionDuplicate->setEnabled(!trashSelected); firstSceneSelected = true; } } @@ -1630,26 +1630,6 @@ int UBDocumentController::getSelectedItemIndex() else return -1; } -bool UBDocumentController::pageCanBeMovedUp(int page) -{ - return page >= 1; -} - -bool UBDocumentController::pageCanBeMovedDown(int page) -{ - return page < selectedDocument()->pageCount() - 1; -} - -bool UBDocumentController::pageCanBeDuplicated(int page) -{ - return page != 0; -} - -bool UBDocumentController::pageCanBeDeleted(int page) -{ - return page != 0; -} - void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*) { QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); @@ -1662,9 +1642,9 @@ void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*) QStringList labels; - if (proxy) + if (proxy) { - setDocument(proxy); + setDocument(proxy); for (int i = 0; i < selectedDocument()->pageCount(); i++) { @@ -1678,10 +1658,7 @@ void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*) items << pixmapItem; int pageIndex = pageFromSceneIndex(i); - if(pageIndex) - labels << tr("Page %1").arg(pageIndex); - else - labels << tr("Title page"); + labels << tr("Page %1").arg(pageIndex); itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBDocumentContainer::pageFromSceneIndex(i)))); } diff --git a/src/document/UBDocumentController.h b/src/document/UBDocumentController.h index 75608f41..607e906a 100644 --- a/src/document/UBDocumentController.h +++ b/src/document/UBDocumentController.h @@ -59,10 +59,6 @@ class UBDocumentController : public UBDocumentContainer void deletePages(QList itemsToDelete); int getSelectedItemIndex(); - bool pageCanBeMovedUp(int page); - bool pageCanBeMovedDown(int page); - bool pageCanBeDuplicated(int page); - bool pageCanBeDeleted(int page); QString documentTrashGroupName(){ return mDocumentTrashGroupName;} QString defaultDocumentGroupName(){ return mDefaultDocumentGroupName;} diff --git a/src/frameworks/UBFileSystemUtils.cpp b/src/frameworks/UBFileSystemUtils.cpp index 49f37cbd..fb594057 100644 --- a/src/frameworks/UBFileSystemUtils.cpp +++ b/src/frameworks/UBFileSystemUtils.cpp @@ -27,8 +27,6 @@ #include "core/UBApplication.h" -#include "document/UBDocumentContainer.h" - #include "globals/UBGlobals.h" THIRD_PARTY_WARNINGS_DISABLE @@ -352,8 +350,7 @@ QString UBFileSystemUtils::normalizeFilePath(const QString& pFilePath) QString UBFileSystemUtils::digitFileFormat(const QString& s, int digit) { - int pageDigit = UBDocumentContainer::pageFromSceneIndex(digit); - return s.arg(pageDigit, 3, 10, QLatin1Char('0')); + return s.arg(digit, 3, 10, QLatin1Char('0')); } @@ -361,8 +358,7 @@ QString UBFileSystemUtils::thumbnailPath(const QString& path) { QFileInfo pathInfo(path); - return pathInfo.dir().absolutePath() + "/" + pathInfo.completeBaseName() - + ".thumbnail.png"; + return pathInfo.dir().absolutePath() + "/" + pathInfo.completeBaseName() + ".thumbnail.png"; } QString UBFileSystemUtils::extension(const QString& fileName) @@ -632,8 +628,7 @@ QString UBFileSystemUtils::getFirstExistingFileFromList(const QString& path, con } -bool UBFileSystemUtils::compressDirInZip(const QDir& pDir, const QString& pDestPath, - QuaZipFile *pOutZipFile, bool pRootDocumentFolder, UBProcessingProgressListener* progressListener) +bool UBFileSystemUtils::compressDirInZip(const QDir& pDir, const QString& pDestPath, QuaZipFile *pOutZipFile, bool pRootDocumentFolder, UBProcessingProgressListener* progressListener) { QFileInfoList files = pDir.entryInfoList(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index 085203e2..baed7d67 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -100,7 +100,7 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source) UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i); - QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex); + QString label = tr("Page %0").arg(pageIndex); UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(label); UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem); @@ -138,9 +138,6 @@ void UBDocumentNavigator::onScrollToSelectedPage(int index) */ void UBDocumentNavigator::updateSpecificThumbnail(int iPage) { - // Generate the new thumbnail - //UBGraphicsScene* pScene = UBApplication::boardController->activeScene(); - const QPixmap* pix = UBApplication::boardController->pageAt(iPage); UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, UBApplication::boardController->selectedDocument(), iPage); diff --git a/src/gui/UBDocumentThumbnailWidget.cpp b/src/gui/UBDocumentThumbnailWidget.cpp index 667e91f3..4650ba16 100644 --- a/src/gui/UBDocumentThumbnailWidget.cpp +++ b/src/gui/UBDocumentThumbnailWidget.cpp @@ -65,7 +65,7 @@ void UBDocumentThumbnailWidget::mouseMoveEvent(QMouseEvent *event) return; if ((event->pos() - mMousePressPos).manhattanLength() < QApplication::startDragDistance()) - return; + return; QList graphicsItems = items(mMousePressPos); @@ -76,21 +76,18 @@ void UBDocumentThumbnailWidget::mouseMoveEvent(QMouseEvent *event) if (sceneItem) { - int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex()); - if(pageIndex != 0){ - QDrag *drag = new QDrag(this); - QList mimeDataItems; - foreach (QGraphicsItem *item, selectedItems()) - mimeDataItems.append(UBMimeDataItem(sceneItem->proxy(), mGraphicItems.indexOf(item))); + QDrag *drag = new QDrag(this); + QList mimeDataItems; + foreach (QGraphicsItem *item, selectedItems()) + mimeDataItems.append(UBMimeDataItem(sceneItem->proxy(), mGraphicItems.indexOf(item))); - UBMimeData *mime = new UBMimeData(mimeDataItems); - drag->setMimeData(mime); + UBMimeData *mime = new UBMimeData(mimeDataItems); + drag->setMimeData(mime); - drag->setPixmap(sceneItem->pixmap().scaledToWidth(100)); - drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height() / 2)); + drag->setPixmap(sceneItem->pixmap().scaledToWidth(100)); + drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height() / 2)); - drag->exec(Qt::MoveAction); - } + drag->exec(Qt::MoveAction); } UBThumbnailWidget::mouseMoveEvent(event); @@ -159,40 +156,31 @@ void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event) QGraphicsItem *underlyingItem = itemAt(event->pos()); mClosestDropItem = dynamic_cast(underlyingItem); - int pageIndex = -1; - if(mClosestDropItem){ - pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex()); - if(pageIndex == 0){ - event->acceptProposedAction(); - return; - } - } if (!mClosestDropItem) { foreach (UBSceneThumbnailPixmap *item, pixmapItems) { qreal scale = item->transform().m11(); QPointF itemCenter( - item->pos().x() + item->boundingRect().width() * scale / 2, - item->pos().y() + item->boundingRect().height() * scale / 2); + item->pos().x() + item->boundingRect().width() * scale / 2, + item->pos().y() + item->boundingRect().height() * scale / 2); int distance = (itemCenter.toPoint() - mapToScene(event->pos()).toPoint()).manhattanLength(); if (!mClosestDropItem || distance < minDistance) { mClosestDropItem = item; minDistance = distance; - pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex()); } } } - if (mClosestDropItem && pageIndex != 0) + if (mClosestDropItem) { qreal scale = mClosestDropItem->transform().m11(); QPointF itemCenter( - mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale / 2, - mClosestDropItem->pos().y() + mClosestDropItem->boundingRect().height() * scale / 2); + mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale / 2, + mClosestDropItem->pos().y() + mClosestDropItem->boundingRect().height() * scale / 2); mDropIsRight = mapToScene(event->pos()).x() > itemCenter.x(); @@ -204,10 +192,10 @@ void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event) } QRectF dropCaretRect( - mDropIsRight ? mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale + spacing() / 2 - 1 : mClosestDropItem->pos().x() - spacing() / 2 - 1, - mClosestDropItem->pos().y(), - 3, - mClosestDropItem->boundingRect().height() * scale); + mDropIsRight ? mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale + spacing() / 2 - 1 : mClosestDropItem->pos().x() - spacing() / 2 - 1, + mClosestDropItem->pos().y(), + 3, + mClosestDropItem->boundingRect().height() * scale); if (mDropCaretRectItem) mDropCaretRectItem->setRect(dropCaretRect); @@ -229,10 +217,6 @@ void UBDocumentThumbnailWidget::dropEvent(QDropEvent *event) if (mClosestDropItem) { int targetIndex = mDropIsRight ? mGraphicItems.indexOf(mClosestDropItem) + 1 : mGraphicItems.indexOf(mClosestDropItem); - if(UBDocumentContainer::pageFromSceneIndex(targetIndex) == 0){ - event->ignore(); - return; - } QList mimeDataItems; if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage)) @@ -243,9 +227,9 @@ void UBDocumentThumbnailWidget::dropEvent(QDropEvent *event) } if (1 == mimeDataItems.count() && - (mimeDataItems.at(0).sceneIndex() == mGraphicItems.indexOf(mClosestDropItem) || - targetIndex == mimeDataItems.at(0).sceneIndex() || - targetIndex == mimeDataItems.at(0).sceneIndex() + 1)) + (mimeDataItems.at(0).sceneIndex() == mGraphicItems.indexOf(mClosestDropItem) || + targetIndex == mimeDataItems.at(0).sceneIndex() || + targetIndex == mimeDataItems.at(0).sceneIndex() + 1)) { return; } @@ -288,8 +272,8 @@ void UBDocumentThumbnailWidget::deleteDropCaret() } void UBDocumentThumbnailWidget::setGraphicsItems(const QList& pGraphicsItems, - const QList& pItemPaths, const QStringList pLabels, - const QString& pMimeType) + const QList& pItemPaths, const QStringList pLabels, + const QString& pMimeType) { deleteDropCaret(); @@ -303,7 +287,7 @@ void UBDocumentThumbnailWidget::setDragEnabled(bool enabled) bool UBDocumentThumbnailWidget::dragEnabled() const { - return mDragEnabled; + return true;// mDragEnabled; } void UBDocumentThumbnailWidget::hightlightItem(int index) diff --git a/src/gui/UBNavigatorPalette.cpp b/src/gui/UBNavigatorPalette.cpp deleted file mode 100644 index 6ad9505d..00000000 --- a/src/gui/UBNavigatorPalette.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include "UBNavigatorPalette.h" -#include "core/UBApplication.h" -#include "board/UBBoardController.h" - -#include "core/memcheck.h" - -/** - * \brief Constructor - * @param parent as the parent widget - * @param name as the object name - */ -UBNavigatorPalette::UBNavigatorPalette(QWidget *parent, const char *name): - UBDockPalette(eUBDockPaletteType_LEFT, parent, name) - , mNavigator(NULL) - , mLayout(NULL) - , mHLayout(NULL) - , mPageNbr(NULL) - , mClock(NULL) -{ - // Build the gui - mLayout = new QVBoxLayout(this); - mLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin()); - setLayout(mLayout); - - mNavigator = new UBDocumentNavigator(this); - mNavigator->setStyleSheet(QString("background-color : transparent;")); - mLayout->addWidget(mNavigator, 1); - - mHLayout = new QHBoxLayout(); - mLayout->addLayout(mHLayout, 0); - - mPageNbr = new QLabel(this); - mClock = new QLabel(this); - mHLayout->addWidget(mPageNbr); - mHLayout->addWidget(mClock); - - // Configure the page number indicator - mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }")); - setPageNumber(0, 0); - mPageNbr->setAlignment(Qt::AlignHCenter); - - // Configure the clock - mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}")); - mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat); - mClock->setAlignment(Qt::AlignHCenter); - - //strip seconds - mTimeFormat = mTimeFormat.remove(":ss"); - mTimeFormat = mTimeFormat.remove(":s"); - mTimerID = startTimer(1000); - -} - -/** - * \brief Destructor - */ -UBNavigatorPalette::~UBNavigatorPalette() -{ - killTimer(mTimerID); - - if(NULL != mClock) - { - delete mClock; - mClock = NULL; - } - if(NULL != mPageNbr) - { - delete mPageNbr; - mPageNbr = NULL; - } - if(NULL != mHLayout) - { - delete mHLayout; - mHLayout = NULL; - } - if(NULL != mLayout) - { - delete mLayout; - mLayout = NULL; - } - if(NULL != mNavigator) - { - delete mNavigator; - mNavigator = NULL; - } -} - -/** - * \brief Set the current document in the navigator - * @param document as the given document - */ - -/** - * \brief Refresh the thumbnails widget - */ -void UBNavigatorPalette::refresh() -{ -} - -/** - * \brief Handle the resize event - * @param event as the resize event - */ -void UBNavigatorPalette::resizeEvent(QResizeEvent *event) -{ - UBDockPalette::resizeEvent(event); - if(NULL != mNavigator) - { - mNavigator->setMinimumHeight(height() - 2*border()); - } -} - -void UBNavigatorPalette::timerEvent(QTimerEvent *event) -{ - Q_UNUSED(event); - updateTime(); -} - -void UBNavigatorPalette::updateTime() -{ - if (mClock) - { - mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat)); - } -} - -void UBNavigatorPalette::setPageNumber(int current, int total) -{ - mPageNbr->setText(QString("%1 / %2").arg(current).arg(total)); -} diff --git a/src/gui/UBNavigatorPalette.h b/src/gui/UBNavigatorPalette.h deleted file mode 100644 index b09cd08a..00000000 --- a/src/gui/UBNavigatorPalette.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBNAVIGATORPALETTE_H -#define UBNAVIGATORPALETTE_H - -#include -#include -#include -#include -#include -#include -#include - -#include "UBDockPalette.h" -#include "UBDocumentNavigator.h" -#include "document/UBDocumentProxy.h" - - -class UBNavigatorPalette : public UBDockPalette -{ - Q_OBJECT -public: - UBNavigatorPalette(QWidget* parent=0, const char* name="navigatorPalette"); - ~UBNavigatorPalette(); - - void setDocument(UBDocumentProxy* document); - void refresh(); - -public slots: - void setPageNumber(int current, int total); - -protected: - virtual void resizeEvent(QResizeEvent *event); - virtual void timerEvent(QTimerEvent *event); - -private: - void updateTime(); - - /** The thumbnails navigator widget */ - UBDocumentNavigator* mNavigator; - /** The layout */ - QVBoxLayout* mLayout; - QHBoxLayout* mHLayout; - QLabel* mPageNbr; - QLabel* mClock; - QString mTimeFormat; - int mTimerID; - -}; - - -#endif // UBNAVIGATORPALETTE_H diff --git a/src/gui/UBPageNavigationWidget.cpp b/src/gui/UBPageNavigationWidget.cpp index 9d1646ee..eca3c674 100644 --- a/src/gui/UBPageNavigationWidget.cpp +++ b/src/gui/UBPageNavigationWidget.cpp @@ -119,16 +119,6 @@ UBPageNavigationWidget::~UBPageNavigationWidget() } } - -/** - * \brief Refresh the thumbnails widget - */ -void UBPageNavigationWidget::refresh() -{ - // TOLIK!!! - // mNavigator->setDocument(UBApplication::boardController->activeDocument()); -} - /** * \brief Notify a timer event * @param event as the timer event @@ -145,9 +135,7 @@ void UBPageNavigationWidget::timerEvent(QTimerEvent *event) void UBPageNavigationWidget::updateTime() { if (mClock) - { mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat)); - } } /** @@ -157,7 +145,7 @@ void UBPageNavigationWidget::updateTime() */ void UBPageNavigationWidget::setPageNumber(int current, int total) { - mPageNbr->setText(QString("%1 / %2").arg(current).arg(UBDocumentContainer::sceneIndexFromPage(total))); + mPageNbr->setText(QString("%1 / %2").arg(current).arg(total)); } /** diff --git a/src/gui/UBPageNavigationWidget.h b/src/gui/UBPageNavigationWidget.h index 1299a9f4..a9c22233 100644 --- a/src/gui/UBPageNavigationWidget.h +++ b/src/gui/UBPageNavigationWidget.h @@ -42,8 +42,6 @@ class UBPageNavigationWidget : public UBDockPaletteWidget public: UBPageNavigationWidget(QWidget* parent=0, const char* name="UBPageNavigationWidget"); ~UBPageNavigationWidget(); - //void setDocument(UBDocumentProxy* document); - void refresh(); bool visibleInMode(eUBDockPaletteWidgetMode mode) { diff --git a/src/gui/UBThumbnailWidget.cpp b/src/gui/UBThumbnailWidget.cpp index 905fa15e..a6eba0ba 100644 --- a/src/gui/UBThumbnailWidget.cpp +++ b/src/gui/UBThumbnailWidget.cpp @@ -87,7 +87,7 @@ void UBThumbnailWidget::setGraphicsItems(const QList& pGraphicsI , const QStringList pLabels , const QString& pMimeType) { - Q_ASSERT(pItemsPaths.count() == pLabels.count()); + Q_ASSERT(pItemsPaths.count() == pLabels.count()); mGraphicItems = pGraphicsItems; mItemsPaths = pItemsPaths; mMimeType = pMimeType; @@ -103,8 +103,7 @@ void UBThumbnailWidget::setGraphicsItems(const QList& pGraphicsI foreach (QGraphicsItem* item, pGraphicsItems) { - if (item->scene() != &mThumbnailsScene) - { + if (item->scene() != &mThumbnailsScene){ mThumbnailsScene.addItem(item); } } @@ -767,7 +766,6 @@ UBSceneThumbnailNavigPixmap::UBSceneThumbnailNavigPixmap(const QPixmap& pix, UBD , bCanDelete(false) , bCanMoveUp(false) , bCanMoveDown(false) - , bCanDuplicate(false) { if(0 <= UBDocumentContainer::pageFromSceneIndex(pSceneIndex)){ setAcceptsHoverEvents(true); @@ -783,7 +781,16 @@ UBSceneThumbnailNavigPixmap::~UBSceneThumbnailNavigPixmap() void UBSceneThumbnailNavigPixmap::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { event->accept(); - updateButtonsState(); + bButtonsVisible = true; + bCanDelete = true; + bCanMoveDown = false; + bCanMoveUp = false; + if(sceneIndex() < proxy()->pageCount() - 1) + bCanMoveDown = true; + if(sceneIndex() > 0) + bCanMoveUp = true; + if(proxy()->pageCount() == 1) + bCanDelete = false; update(); } @@ -806,10 +813,9 @@ void UBSceneThumbnailNavigPixmap::paint(QPainter *painter, const QStyleOptionGra painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/close.svg")); else painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/closeDisabled.svg")); - if(bCanDuplicate) - painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicate.svg")); - else - painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicateDisabled.svg")); + + painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicate.svg")); + if(bCanMoveUp) painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUp.svg")); else @@ -828,8 +834,9 @@ void UBSceneThumbnailNavigPixmap::mousePressEvent(QGraphicsSceneMouseEvent *even // Here we check the position of the click and verify if it has to trig an action or not. if(bCanDelete && p.x() >= 0 && p.x() <= BUTTONSIZE && p.y() >= 0 && p.y() <= BUTTONSIZE) deletePage(); - if(bCanDuplicate && p.x() >= BUTTONSIZE + BUTTONSPACING && p.x() <= 2*BUTTONSIZE + BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE) + if(p.x() >= BUTTONSIZE + BUTTONSPACING && p.x() <= 2*BUTTONSIZE + BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE) duplicatePage(); + if(bCanMoveUp && p.x() >= 2*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 3*BUTTONSIZE + 2*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE) moveUpPage(); if(bCanMoveDown && p.x() >= 3*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 4*BUTTONSIZE + 3*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE) @@ -838,27 +845,6 @@ void UBSceneThumbnailNavigPixmap::mousePressEvent(QGraphicsSceneMouseEvent *even event->accept(); } -void UBSceneThumbnailNavigPixmap::updateButtonsState() -{ - - bCanDelete = false; - bCanMoveUp = false; - bCanMoveDown = false; - bCanDuplicate = false; - - if(proxy()){ - int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneIndex()); - UBDocumentController* documentController = UBApplication::documentController; - bCanDelete = documentController->pageCanBeDeleted(pageIndex); - bCanMoveUp = documentController->pageCanBeMovedUp(pageIndex); - bCanMoveDown = documentController->pageCanBeMovedDown(pageIndex); - bCanDuplicate = documentController->pageCanBeDuplicated(pageIndex); - } - - if(bCanDelete || bCanMoveUp || bCanMoveDown || bCanDuplicate) - bButtonsVisible = true; -} - void UBSceneThumbnailNavigPixmap::deletePage() { if(UBApplication::mainWindow->yesNoQuestion(QObject::tr("Remove Page"), QObject::tr("Are you sure you want to remove 1 page from the selected document '%0'?").arg(UBApplication::documentController->selectedDocument()->metaData(UBSettings::documentName).toString()))){ diff --git a/src/gui/UBThumbnailWidget.h b/src/gui/UBThumbnailWidget.h index 76a8a24e..97a493f8 100644 --- a/src/gui/UBThumbnailWidget.h +++ b/src/gui/UBThumbnailWidget.h @@ -311,7 +311,6 @@ class UBSceneThumbnailNavigPixmap : public UBSceneThumbnailPixmap void mousePressEvent(QGraphicsSceneMouseEvent *event); private: - void updateButtonsState(); void deletePage(); void duplicatePage(); void moveUpPage(); @@ -321,7 +320,6 @@ class UBSceneThumbnailNavigPixmap : public UBSceneThumbnailPixmap bool bCanDelete; bool bCanMoveUp; bool bCanMoveDown; - bool bCanDuplicate; }; class UBThumbnailVideo : public UBThumbnailPixmap diff --git a/src/gui/gui.pri b/src/gui/gui.pri index 50d2fdfe..f941edfe 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -25,7 +25,6 @@ HEADERS += src/gui/UBThumbnailView.h \ src/gui/UBActionPalette.h \ src/gui/UBFavoriteToolPalette.h \ src/gui/UBKeyboardPalette.h \ - src/gui/UBNavigatorPalette.h \ src/gui/UBDocumentNavigator.h \ src/gui/UBDockPalette.h \ src/gui/UBPropertyPalette.h \ @@ -68,7 +67,6 @@ SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBActionPalette.cpp \ src/gui/UBFavoriteToolPalette.cpp \ src/gui/UBKeyboardPalette.cpp \ - src/gui/UBNavigatorPalette.cpp \ src/gui/UBDocumentNavigator.cpp \ src/gui/UBDockPalette.cpp \ src/gui/UBPropertyPalette.cpp \ From a87682f6c782e53052632bd49fa9cedef445a715 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Tue, 28 May 2013 14:42:42 +0200 Subject: [PATCH 09/24] removed test value on dragEnabled --- src/gui/UBDocumentThumbnailWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/UBDocumentThumbnailWidget.cpp b/src/gui/UBDocumentThumbnailWidget.cpp index 4650ba16..588eccb9 100644 --- a/src/gui/UBDocumentThumbnailWidget.cpp +++ b/src/gui/UBDocumentThumbnailWidget.cpp @@ -287,7 +287,7 @@ void UBDocumentThumbnailWidget::setDragEnabled(bool enabled) bool UBDocumentThumbnailWidget::dragEnabled() const { - return true;// mDragEnabled; + return mDragEnabled; } void UBDocumentThumbnailWidget::hightlightItem(int index) From a84471d73149b43b4b71102090f2b27a91e874e5 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 29 May 2013 15:14:53 +0200 Subject: [PATCH 10/24] fixed group persistance issue --- src/adaptors/UBSvgSubsetAdaptor.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index d2f9afac..d8f1375f 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -1336,17 +1336,18 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *gro curGroupElement.setAttribute(aId, uuid); curParent->appendChild(curGroupElement); + qDebug() << groupItem->children().count(); + foreach (QGraphicsItem *item, groupItem->childItems()) { QUuid tmpUuid = UBGraphicsScene::getPersonalUuid(item); if (!tmpUuid.isNull()) { if (item->type() == UBGraphicsGroupContainerItem::Type && item->childItems().count()) persistGroupToDom(item, curParent, groupDomDocument); - } - else { - QDomElement curSubElement = groupDomDocument->createElement(tElement); - - curSubElement.setAttribute(aId, tmpUuid); - curGroupElement.appendChild(curSubElement); + else { + QDomElement curSubElement = groupDomDocument->createElement(tElement); + curSubElement.setAttribute(aId, tmpUuid); + curGroupElement.appendChild(curSubElement); + } } } } From ca762f4274596559d54875a301c3ecdc9f85d14c Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 29 May 2013 15:15:36 +0200 Subject: [PATCH 11/24] upgraded version --- Sankore_3.1.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index 73d4360b..d68fa92b 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -11,7 +11,7 @@ CONFIG += debug_and_release \ VERSION_MAJ = 2 VERSION_MIN = 00 VERSION_TYPE = b # a = alpha, b = beta, r = release, other => error -VERSION_PATCH = 06 +VERSION_PATCH = 08 VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_TYPE}.$${VERSION_PATCH}" VERSION = $$replace(VERSION, "\\.r", "") From fbd630636b7b50020b3298beca157fc9e92039fa Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 29 May 2013 17:50:02 +0200 Subject: [PATCH 12/24] removed unused classes --- Sankore_3.1.pro | 1 - src/adaptors/UBSvgSubsetAdaptor.cpp | 3 - src/customWidgets/UBActionableWidget.cpp | 90 ------ src/customWidgets/UBActionableWidget.h | 68 ----- src/customWidgets/UBMediaWidget.cpp | 368 ----------------------- src/customWidgets/UBMediaWidget.h | 137 --------- src/customWidgets/customWidgets.pri | 8 - 7 files changed, 675 deletions(-) delete mode 100644 src/customWidgets/UBActionableWidget.cpp delete mode 100644 src/customWidgets/UBActionableWidget.h delete mode 100644 src/customWidgets/UBMediaWidget.cpp delete mode 100644 src/customWidgets/UBMediaWidget.h delete mode 100644 src/customWidgets/customWidgets.pri diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index d68fa92b..cab64684 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -49,7 +49,6 @@ include(src/podcast/podcast.pri) include(src/tools/tools.pri) include(src/desktop/desktop.pri) include(src/web/web.pri) -include(src/customWidgets/customWidgets.pri) DEPENDPATH += src/pdf-merger INCLUDEPATH += src/pdf-merger diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index d8f1375f..af39af0c 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -1335,9 +1335,6 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *gro QDomElement curGroupElement = groupDomDocument->createElement(tGroup); curGroupElement.setAttribute(aId, uuid); curParent->appendChild(curGroupElement); - - qDebug() << groupItem->children().count(); - foreach (QGraphicsItem *item, groupItem->childItems()) { QUuid tmpUuid = UBGraphicsScene::getPersonalUuid(item); if (!tmpUuid.isNull()) { diff --git a/src/customWidgets/UBActionableWidget.cpp b/src/customWidgets/UBActionableWidget.cpp deleted file mode 100644 index ba334aca..00000000 --- a/src/customWidgets/UBActionableWidget.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include -#include - -#include "UBActionableWidget.h" - -#include "core/memcheck.h" - -UBActionableWidget::UBActionableWidget(QWidget *parent, const char *name):QWidget(parent) - , mShowActions(false) -{ - setObjectName(name); - mActions.clear(); - mCloseButtons.setIcon(QIcon(QPixmap(":images/close.svg"))); - mCloseButtons.setGeometry(0, 0, 2*ACTIONSIZE, ACTIONSIZE); - mCloseButtons.setVisible(false); - connect(&mCloseButtons, SIGNAL(clicked()), this, SLOT(onCloseClicked())); -} - -UBActionableWidget::~UBActionableWidget() -{ - -} - -void UBActionableWidget::addAction(eAction act) -{ - if(!mActions.contains(act)){ - mActions << act; - } -} - -void UBActionableWidget::removeAction(eAction act) -{ - if(mActions.contains(act)){ - mActions.remove(mActions.indexOf(act)); - } -} - -void UBActionableWidget::removeAllActions() -{ - mActions.clear(); -} - -void UBActionableWidget::setActionsVisible(bool bVisible) -{ - if(!mActions.empty() && mActions.contains(eAction_Close)){ - mCloseButtons.setVisible(bVisible); - } -} - -void UBActionableWidget::onCloseClicked() -{ - emit close(this); -} - -void UBActionableWidget::setActionsParent(QWidget *parent) -{ - if(mActions.contains(eAction_Close)){ - mCloseButtons.setParent(parent); - } -} - -void UBActionableWidget::unsetActionsParent() -{ - if(mActions.contains(eAction_Close)){ - mCloseButtons.setParent(this); - } -} diff --git a/src/customWidgets/UBActionableWidget.h b/src/customWidgets/UBActionableWidget.h deleted file mode 100644 index cdc8e767..00000000 --- a/src/customWidgets/UBActionableWidget.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBACTIONABLEWIDGET_H -#define UBACTIONABLEWIDGET_H - -#include -#include -#include -#include - -#define ACTIONSIZE 16 - -typedef enum{ - eAction_Close, - eAction_MoveUp, - eAction_MoveDown -}eAction; - -class UBActionableWidget : public QWidget -{ - Q_OBJECT -public: - UBActionableWidget(QWidget* parent=0, const char* name="UBActionableWidget"); - ~UBActionableWidget(); - void addAction(eAction act); - void removeAction(eAction act); - void removeAllActions(); - void setActionsVisible(bool bVisible); - -signals: - void close(QWidget* w); - -protected: - void setActionsParent(QWidget* parent); - void unsetActionsParent(); - QVector mActions; - QPushButton mCloseButtons; - -private slots: - void onCloseClicked(); - -private: - bool mShowActions; - -}; - -#endif // UBACTIONABLEWIDGET_H diff --git a/src/customWidgets/UBMediaWidget.cpp b/src/customWidgets/UBMediaWidget.cpp deleted file mode 100644 index fc57d6ed..00000000 --- a/src/customWidgets/UBMediaWidget.cpp +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include "core/UBApplication.h" -#include "globals/UBGlobals.h" -#include "UBMediaWidget.h" - -#include "core/memcheck.h" - -/** - * \brief Constructor - * @param type as the media type - * @param parent as the parent widget - * @param name as the object name - */ -UBMediaWidget::UBMediaWidget(eMediaType type, QWidget *parent, const char *name):UBActionableWidget(parent, name) - , mpMediaObject(NULL) - , mpVideoWidget(NULL) - , mpAudioOutput(NULL) - , mpLayout(NULL) - , mpSeekerLayout(NULL) - , mpPlayStopButton(NULL) - , mpPauseButton(NULL) - , mpSlider(NULL) - , mAutoUpdate(false) - , mGeneratingThumbnail(false) - , mBorder(5) - , mpMediaContainer(NULL) - , mMediaLayout(NULL) - , mpCover(NULL) -{ - SET_STYLE_SHEET(); - - addAction(eAction_Close); - mType = type; - mpLayout = new QVBoxLayout(this); - setLayout(mpLayout); - - mpPlayStopButton = new UBMediaButton(this); - mpPlayStopButton->setPixmap(QPixmap(":images/play.svg")); - mpPauseButton = new UBMediaButton(this); - mpPauseButton->setPixmap(QPixmap(":images/pause.svg")); - mpPauseButton->setEnabled(false); - mpSlider = new QSlider(this); - mpSlider->setOrientation(Qt::Horizontal); - mpSlider->setMinimum(0); - mpSlider->setMaximum(0); - - mpSeekerLayout = new QHBoxLayout(); - mpSeekerLayout->addWidget(mpPlayStopButton, 0); - mpSeekerLayout->addWidget(mpPauseButton, 0); - mpSeekerLayout->addWidget(mpSlider, 1); - mpSeekerLayout->setContentsMargins(0, 0, 0, 0); - - connect(mpPlayStopButton, SIGNAL(clicked()), this, SLOT(onPlayStopClicked())); - connect(mpPauseButton, SIGNAL(clicked()), this, SLOT(onPauseClicked())); - connect(mpSlider, SIGNAL(valueChanged(int)), this, SLOT(onSliderChanged(int))); -} - -/** - * \brief Destructor - */ -UBMediaWidget::~UBMediaWidget() -{ - unsetActionsParent(); - DELETEPTR(mpMediaObject); - DELETEPTR(mpSlider); - DELETEPTR(mpPauseButton); - DELETEPTR(mpPlayStopButton); - DELETEPTR(mpAudioOutput); - DELETEPTR(mpVideoWidget); - DELETEPTR(mpCover); - DELETEPTR(mpMediaContainer); - DELETEPTR(mpSeekerLayout); - DELETEPTR(mpLayout); -} - -/** - * \brief Set the media file - * @param filePath as the media file path - */ -void UBMediaWidget::setFile(const QString &filePath) -{ - Q_ASSERT("" != filePath); - mFilePath = filePath; - mpMediaObject = new Phonon::MediaObject(this); - mpMediaObject->setTickInterval(TICK_INTERVAL); - connect(mpMediaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(onStateChanged(Phonon::State,Phonon::State))); - connect(mpMediaObject, SIGNAL(totalTimeChanged(qint64)), this, SLOT(onTotalTimeChanged(qint64))); - connect(mpMediaObject, SIGNAL(tick(qint64)), this, SLOT(onTick(qint64))); - mpMediaObject->setCurrentSource(Phonon::MediaSource(filePath)); - createMediaPlayer(); -} - -/** - * \brief Get the media type - * @returns the media type - */ -eMediaType UBMediaWidget::mediaType() -{ - return mType; -} - -void UBMediaWidget::showEvent(QShowEvent* event) -{ - if(mType == eMediaType_Audio){ - return; - }else{ - if(!mpVideoWidget){ - mpVideoWidget = new Phonon::VideoWidget(this); - mMediaLayout->addStretch(1); - mMediaLayout->addWidget(mpVideoWidget); - mMediaLayout->addStretch(1); - Phonon::createPath(mpMediaObject, mpVideoWidget); - adaptSizeToVideo(); - mpMediaObject->play(); - mpMediaObject->stop(); - } - QWidget::showEvent(event); - } -} - -void UBMediaWidget::hideEvent(QHideEvent* event) -{ - if(mpMediaObject->state() == Phonon::PlayingState) - mpMediaObject->stop(); - UBActionableWidget::hideEvent(event); -} - -/** - * \brief Create the media player - */ -void UBMediaWidget::createMediaPlayer() -{ - mpMediaContainer = new QWidget(); - mpMediaContainer->setObjectName("UBMediaVideoContainer"); - mMediaLayout = new QHBoxLayout(); - mpMediaContainer->setLayout(mMediaLayout); - - if(eMediaType_Video == mType){ - mMediaLayout->setContentsMargins(10, 10, 10, 10); - if(isVisible()){ - mpVideoWidget = new Phonon::VideoWidget(this); - mMediaLayout->addStretch(1); - mMediaLayout->addWidget(mpVideoWidget); - mMediaLayout->addStretch(1); - Phonon::createPath(mpMediaObject, mpVideoWidget); - adaptSizeToVideo(); - } - mpAudioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this); - Phonon::createPath(mpMediaObject, mpAudioOutput); - }else if(eMediaType_Audio == mType){ - mMediaLayout->setContentsMargins(10, 10, 10, 10); - mpCover = new QLabel(mpMediaContainer); - //mpMediaContainer->setStyleSheet(QString("background: none;")); - setAudioCover(":images/libpalette/soundIcon.svg"); - mpCover->setScaledContents(true); - mMediaLayout->addStretch(1); - mMediaLayout->addWidget(mpCover); - mMediaLayout->addStretch(1); - mpAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); - Phonon::createPath(mpMediaObject, mpAudioOutput); - } - mpLayout->addWidget(mpMediaContainer, 1); - mpLayout->addLayout(mpSeekerLayout, 0); - setActionsParent(mpMediaContainer); -} - -/** - * \brief Adapt the widget size to the video in order to keep the good aspect ratio - */ -void UBMediaWidget::adaptSizeToVideo() -{ - if(NULL != mpMediaContainer){ - int origW = mpMediaContainer->width(); - int origH = mpMediaContainer->height(); - int newW = width(); - float scaleFactor = (float)origW/(float)newW; - int newH = origH/scaleFactor; - resize(newW, height() + newH); - } -} - -/** - * \brief Handle the media state change notification - * @param newState as the new state - * @param oldState as the old state - */ -void UBMediaWidget::onStateChanged(Phonon::State newState, Phonon::State oldState) -{ - if(!mGeneratingThumbnail){ - if(Phonon::LoadingState == oldState && Phonon::StoppedState == newState){ - if(eMediaType_Video == mType){ - // We do that here to generate the thumbnail of the video - mGeneratingThumbnail = true; - mpMediaObject->play(); - mpMediaObject->pause(); - mGeneratingThumbnail = false; - } - }else if(Phonon::PlayingState == oldState && Phonon::PausedState == newState){ - mpPlayStopButton->setPixmap(QPixmap(":images/play.svg")); - mpPauseButton->setEnabled(false); - }else if((Phonon::PausedState == oldState && Phonon::PlayingState == newState) || - (Phonon::StoppedState == oldState && Phonon::PlayingState == newState)){ - mpPlayStopButton->setPixmap(QPixmap(":images/stop.svg")); - mpPauseButton->setEnabled(true); - }else if(Phonon::PlayingState == oldState && Phonon::StoppedState == newState){ - mpPlayStopButton->setPixmap(QPixmap(":images/play.svg")); - mpPauseButton->setEnabled(false); - mpSlider->setValue(0); - } - - } - // if(mType == eMediaType_Video) - // updateView(newState); -} - -/** - * \brief Handles the total time change notification - * @param total as the new total time - */ -void UBMediaWidget::onTotalTimeChanged(qint64 total) -{ - mpSlider->setMaximum(total); -} - -/** - * \brief Handles the tick notification - * @param currentTime as the current time - */ -void UBMediaWidget::onTick(qint64 currentTime) -{ - mAutoUpdate = true; - mpSlider->setValue((int)currentTime); - mAutoUpdate = false; -} - -/** - * \brief Handles the seeker value change notification - * @param value as the new seeker value - */ -void UBMediaWidget::onSliderChanged(int value) -{ - if(!mAutoUpdate){ - mpMediaObject->seek(value); - } -} - -/** - * \brief Toggle Play-Stop - */ -void UBMediaWidget::onPlayStopClicked() -{ - switch(mpMediaObject->state()){ - case Phonon::PlayingState: - mpMediaObject->stop(); - break; - - case Phonon::StoppedState: - case Phonon::PausedState: - mpMediaObject->play(); - break; - default: - break; - } -} - -/** - * \brief Pause the media - */ -void UBMediaWidget::onPauseClicked() -{ - mpMediaObject->pause(); -} - -/** - * Get the border - * @returns the actual border - */ -int UBMediaWidget::border() -{ - return mBorder; -} - -/** - * \brief Handles the resize event - * @param ev as the resize event - */ -void UBMediaWidget::resizeEvent(QResizeEvent* ev) -{ - Q_UNUSED(ev); -} - -/** - * \brief Set the audio cover - * @param coverPath as the cover image file path - */ -void UBMediaWidget::setAudioCover(const QString &coverPath) -{ - if(NULL != mpCover){ - mpCover->setPixmap(QPixmap(coverPath)); - } -} - -// ----------------------------------------------------------------------------------------------------------- -/** - * \brief Constructor - * @param parent as the parent widget - * @param name as the object name - */ -UBMediaButton::UBMediaButton(QWidget *parent, const char *name):QLabel(parent) - , mPressed(false) -{ - setObjectName(name); - resize(UBMEDIABUTTON_SIZE, UBMEDIABUTTON_SIZE); - setStyleSheet(QString("padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;")); -} - -/** - * \brief Destructor - */ -UBMediaButton::~UBMediaButton() -{ - -} - -/** - * \brief Handles the mouse press notification - * @param ev as the mouse press event - */ -void UBMediaButton::mousePressEvent(QMouseEvent* ev) -{ - Q_UNUSED(ev); - mPressed = true; -} - -/** - * \brief Handles the mouse release notification - * @param ev as the mouse release event - */ -void UBMediaButton::mouseReleaseEvent(QMouseEvent* ev) -{ - Q_UNUSED(ev); - if(mPressed){ - mPressed = false; - emit clicked(); - } -} diff --git a/src/customWidgets/UBMediaWidget.h b/src/customWidgets/UBMediaWidget.h deleted file mode 100644 index 973b9226..00000000 --- a/src/customWidgets/UBMediaWidget.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBMEDIAWIDGET_H -#define UBMEDIAWIDGET_H - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "UBActionableWidget.h" - -#define UBMEDIABUTTON_SIZE 32 -#define TICK_INTERVAL 1000 - -/** - * \brief The media type - */ -typedef enum{ - eMediaType_Video, - eMediaType_Audio -}eMediaType; - -class UBMediaButton : public QLabel -{ - Q_OBJECT -public: - UBMediaButton(QWidget* parent=0, const char* name="UBMediaButton"); - ~UBMediaButton(); - -signals: - void clicked(); - -protected: - void mousePressEvent(QMouseEvent* ev); - void mouseReleaseEvent(QMouseEvent* ev); - -private: - /** And indicator of the press event in progress */ - bool mPressed; -}; - -class UBMediaWidget : public UBActionableWidget -{ - Q_OBJECT -public: - UBMediaWidget(eMediaType type = eMediaType_Video, QWidget* parent=0, const char* name="UBMediaWidget"); - ~UBMediaWidget(); - void setFile(const QString& filePath); - eMediaType mediaType(); - int border(); - void setAudioCover(const QString& coverPath); - void setUrl(const QString& url){mUrl = url;} - QString url(){return mUrl;} - -protected: - void resizeEvent(QResizeEvent* ev); - void showEvent(QShowEvent* event); - void hideEvent(QHideEvent* event); - /** The current media file path */ - QString mFilePath; - -private slots: - void onPlayStopClicked(); - void onPauseClicked(); - void onStateChanged(Phonon::State newState, Phonon::State oldState); - void onTotalTimeChanged(qint64 total); - void onTick(qint64 currentTime); - void onSliderChanged(int value); - -private: - void createMediaPlayer(); - void adaptSizeToVideo(); - - /** The current media type */ - eMediaType mType; - /** The media object */ - Phonon::MediaObject* mpMediaObject; - /** The video renderer */ - Phonon::VideoWidget* mpVideoWidget; - /** The audio renderer */ - Phonon::AudioOutput* mpAudioOutput; - /** The principal layout of this widget */ - QVBoxLayout* mpLayout; - /** The seeker layout */ - QHBoxLayout* mpSeekerLayout; - /** The play-stop button */ - UBMediaButton* mpPlayStopButton; - /** The pause button */ - UBMediaButton* mpPauseButton; - /** The seeker slider */ - QSlider* mpSlider; - /** An indicator of the seeker auto update in progress */ - bool mAutoUpdate; - /** An indicator of the thumbnail generation in progress */ - bool mGeneratingThumbnail; - /** The border */ - int mBorder; - /** A widget that will contain the media */ - QWidget* mpMediaContainer; - /** The media layout */ - QHBoxLayout* mMediaLayout; - /** The audio cover */ - QLabel* mpCover; - /** The media url */ - QString mUrl; -}; - -#endif // UBMEDIAWIDGET_H diff --git a/src/customWidgets/customWidgets.pri b/src/customWidgets/customWidgets.pri deleted file mode 100644 index a3c64030..00000000 --- a/src/customWidgets/customWidgets.pri +++ /dev/null @@ -1,8 +0,0 @@ - -HEADERS += \ - src/customWidgets/UBMediaWidget.h \ - src/customWidgets/UBActionableWidget.h - -SOURCES += \ - src/customWidgets/UBMediaWidget.cpp \ - src/customWidgets/UBActionableWidget.cpp From c7b364415b2da009f073d15ef1ad65add505dd64 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 30 May 2013 09:31:26 +0200 Subject: [PATCH 13/24] text is not selected on page load --- src/board/UBBoardView.cpp | 1 + src/domain/UBGraphicsTextItem.cpp | 9 ++++++++- src/domain/UBGraphicsTextItem.h | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 2f218a03..2aaada0d 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -1288,6 +1288,7 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) UBDrawingController::drawingController ()->setStylusTool (UBStylusTool::Selector); + textItem->setTextInteractionFlags(Qt::TextEditorInteraction); textItem->setSelected (true); textItem->setFocus(); } diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index c4d401b4..039a832d 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -89,6 +89,8 @@ QVariant UBGraphicsTextItem::itemChange(GraphicsItemChange change, const QVarian void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { + setTextInteractionFlags(Qt::TextEditorInteraction); + // scene()->itemAt(pos) returns 0 if pos is not over text, but over text item, but mouse press comes. // It is a cludge... if (UBStylusTool::Play == UBDrawingController::drawingController()->stylusTool()) @@ -145,7 +147,6 @@ void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) if (mMultiClickState == 1) { -// setTextInteractionFlags(Qt::TextEditorInteraction); QGraphicsTextItem::mousePressEvent(event); setFocus(); } @@ -355,3 +356,9 @@ void UBGraphicsTextItem::documentSizeChanged(const QSizeF & newSize) { resize(newSize.width(), newSize.height()); } + +void UBGraphicsTextItem::setHtml(const QString &text) +{ + QGraphicsTextItem::setHtml(text); + setTextInteractionFlags(Qt::NoTextInteraction); +} diff --git a/src/domain/UBGraphicsTextItem.h b/src/domain/UBGraphicsTextItem.h index 06d4133b..637021e8 100644 --- a/src/domain/UBGraphicsTextItem.h +++ b/src/domain/UBGraphicsTextItem.h @@ -90,6 +90,7 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes virtual void clearSource(){;} virtual void setUuid(const QUuid &pUuid); + void setHtml(const QString &text); signals: void textUndoCommandAdded(UBGraphicsTextItem *textItem); @@ -107,7 +108,6 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); - private: qreal mTextHeight; int mMultiClickState; From 9793010df8a7e17945ef91970ab4eab51db6c83d Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 30 May 2013 10:41:13 +0200 Subject: [PATCH 14/24] removed unused class --- src/domain/UBDocumentUndoCommand.cpp | 55 ---------------------------- src/domain/UBDocumentUndoCommand.h | 55 ---------------------------- src/domain/domain.pri | 4 +- 3 files changed, 1 insertion(+), 113 deletions(-) delete mode 100644 src/domain/UBDocumentUndoCommand.cpp delete mode 100644 src/domain/UBDocumentUndoCommand.h diff --git a/src/domain/UBDocumentUndoCommand.cpp b/src/domain/UBDocumentUndoCommand.cpp deleted file mode 100644 index 880afcd6..00000000 --- a/src/domain/UBDocumentUndoCommand.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#include "UBDocumentUndoCommand.h" - -#include "document/UBDocumentProxy.h" -#include "UBGraphicsScene.h" - -#include "core/memcheck.h" - -UBDocumentUndoCommand::UBDocumentUndoCommand(UBDocumentProxy* pDocument, const QList& pOldScenes, - const QList& pNewScenes, const int& pActiveSceneIndex) - : mDocument(pDocument) - , mUndoScenes(pOldScenes) - , mRedoScenes(pNewScenes) - , mActiveSceneIndex(pActiveSceneIndex) -{ - // NOOP -} - -UBDocumentUndoCommand::~UBDocumentUndoCommand() -{ - // NOOP -} - -void UBDocumentUndoCommand::undo() -{ - // NOOP -} - -void UBDocumentUndoCommand::redo() -{ - // NOOP -} - diff --git a/src/domain/UBDocumentUndoCommand.h b/src/domain/UBDocumentUndoCommand.h deleted file mode 100644 index a839b153..00000000 --- a/src/domain/UBDocumentUndoCommand.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) - * - * This file is part of Open-Sankoré. - * - * 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 - * "OpenSSL" library (or with modified versions of it that use the - * same license as the "OpenSSL" library). - * - * 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Open-Sankoré. If not, see . - */ - - - -#ifndef UBDOCUMENTUNDOCOMMAND_H_ -#define UBDOCUMENTUNDOCOMMAND_H_ - -#include -#include "UBAbstractUndoCommand.h" - -class UBDocumentProxy; -class UBGraphicsScene; - -class UBDocumentUndoCommand: public UBAbstractUndoCommand -{ - public: - UBDocumentUndoCommand(UBDocumentProxy* pDocument, const QList& pOldScenes, - const QList& pNewScenes, const int& pActiveSceneIndex); - virtual ~UBDocumentUndoCommand(); - - virtual UndoType getType() { return undotype_DOCUMENT; }; - - protected: - - virtual void undo(); - virtual void redo(); - - private: - - UBDocumentProxy* mDocument; - QList mUndoScenes; - QList mRedoScenes; - int mActiveSceneIndex; -}; - -#endif /* UBDOCUMENTUNDOCOMMAND_H_ */ diff --git a/src/domain/domain.pri b/src/domain/domain.pri index 953533d7..5f4fcbc4 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -3,7 +3,6 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBGraphicsTextItemUndoCommand.h \ src/domain/UBGraphicsItemTransformUndoCommand.h \ src/domain/UBGraphicsPixmapItem.h \ - src/domain/UBDocumentUndoCommand.h \ src/domain/UBPageSizeUndoCommand.h \ src/domain/UBGraphicsProxyWidget.h \ src/domain/UBGraphicsSvgItem.h \ @@ -25,13 +24,12 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBGraphicsDelegateFrame.h \ src/domain/UBGraphicsWidgetItemDelegate.h \ src/domain/UBGraphicsMediaItemDelegate.h - + SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBGraphicsItemUndoCommand.cpp \ src/domain/UBGraphicsTextItemUndoCommand.cpp \ src/domain/UBGraphicsItemTransformUndoCommand.cpp \ src/domain/UBGraphicsPixmapItem.cpp \ - src/domain/UBDocumentUndoCommand.cpp \ src/domain/UBPageSizeUndoCommand.cpp \ src/domain/UBGraphicsProxyWidget.cpp \ src/domain/UBGraphicsSvgItem.cpp \ From 059dd83bdcbeebccec5afe25454d4d027f506a4a Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 30 May 2013 11:20:19 +0200 Subject: [PATCH 15/24] restore code for deleting unused stored objects --- src/board/UBBoardController.cpp | 103 +++++++++++------------ src/core/UBApplication.h | 2 +- src/domain/UBGraphicsItemUndoCommand.cpp | 2 +- 3 files changed, 51 insertions(+), 56 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 0b640e07..bffbf4a2 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1552,60 +1552,55 @@ void UBBoardController::moveSceneToIndex(int source, int target) void UBBoardController::ClearUndoStack() { -// The code has been removed because it leads to a strange error and because the final goal has never been -// reached on tests and sound a little bit strange. -// Strange error: item->scene() crashes the application because item doesn't implement scene() method. I'm -// not able to give all the steps to reproduce this error sistematically but is quite frequent (~ twice per utilisation hours) -// strange goal: if item is on the undocommand, the item->scene() is null and the item is not on the deleted scene item list then -// then it's deleted. - - // QSet uniqueItems; -// // go through all stack command -// for(int i = 0; i < UBApplication::undoStack->count(); i++) -// { - -// UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i); -// if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM) -// continue; - -// UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i); - -// // go through all added and removed objects, for create list of unique objects -// // grouped items will be deleted by groups, so we don't need do delete that items. -// QSetIterator itAdded(cmd->GetAddedList()); -// while (itAdded.hasNext()) -// { -// QGraphicsItem* item = itAdded.next(); -// if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type())) -// uniqueItems.insert(item); -// } - -// QSetIterator itRemoved(cmd->GetRemovedList()); -// while (itRemoved.hasNext()) -// { -// QGraphicsItem* item = itRemoved.next(); -// if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type())) -// uniqueItems.insert(item); -// } -// } - -// // go through all unique items, and check, ot on scene, or not. -// // if not on scene, than item can be deleted - -// QSetIterator itUniq(uniqueItems); -// while (itUniq.hasNext()) -// { -// QGraphicsItem* item = itUniq.next(); -// UBGraphicsScene *scene = NULL; -// if (item->scene()) { -// scene = dynamic_cast(item->scene()); -// } -// if(!scene) -// { -// if (!mActiveScene->deleteItem(item)) -// delete item; -// } -// } + QSet uniqueItems; + // go through all stack command + for(int i = 0; i < UBApplication::undoStack->count(); i++) + { + + UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i); + if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM) + continue; + + UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i); + + // go through all added and removed objects, for create list of unique objects + // grouped items will be deleted by groups, so we don't need do delete that items. + QSetIterator itAdded(cmd->GetAddedList()); + while (itAdded.hasNext()) + { + QGraphicsItem* item = itAdded.next(); + if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type())) + uniqueItems.insert(item); + } + + QSetIterator itRemoved(cmd->GetRemovedList()); + while (itRemoved.hasNext()) + { + QGraphicsItem* item = itRemoved.next(); + if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type())) + uniqueItems.insert(item); + } + } + + // go through all unique items, and check, if they are on scene, or not. + // if not on scene, than item can be deleted + + QSetIterator itUniq(uniqueItems); + while (itUniq.hasNext()) + { + QGraphicsItem* item = itUniq.next(); + UBGraphicsScene *scene = NULL; + if (item->scene()) { + scene = dynamic_cast(item->scene()); + } + if(!scene) + { + if (!mActiveScene->deleteItem(item)){ + delete item; + item = 0; + } + } + } // clear stack, and command list UBApplication::undoStack->clear(); diff --git a/src/core/UBApplication.h b/src/core/UBApplication.h index 6f76c1db..1649d0fc 100644 --- a/src/core/UBApplication.h +++ b/src/core/UBApplication.h @@ -47,7 +47,7 @@ class UBMainWindow; class UBApplication : public QtSingleApplication { - Q_OBJECT; + Q_OBJECT public: diff --git a/src/domain/UBGraphicsItemUndoCommand.cpp b/src/domain/UBGraphicsItemUndoCommand.cpp index 1fb1bd3d..bcad7056 100644 --- a/src/domain/UBGraphicsItemUndoCommand.cpp +++ b/src/domain/UBGraphicsItemUndoCommand.cpp @@ -221,7 +221,7 @@ void UBGraphicsItemUndoCommand::redo() UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast(item); if (polygonItem) - { + { mScene->removeItem(polygonItem); mScene->removeItemFromDeletion(polygonItem); polygonItem->strokesGroup()->addToGroup(polygonItem); From 7658de92406c4f5d0a94bb99f6b7d112d99517f6 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 30 May 2013 11:56:32 +0200 Subject: [PATCH 16/24] adapted zvalue if out of boundaries --- src/adaptors/UBSvgSubsetAdaptor.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index af39af0c..c2e5924b 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -2174,8 +2174,14 @@ void UBSvgSubsetAdaptor::UBSvgSubsetReader::graphicsItemFromSvg(QGraphicsItem* g QStringRef ubZValue = mXmlReader.attributes().value(mNamespaceUri, "z-value"); - if (!ubZValue.isNull()) - UBGraphicsItem::assignZValue(gItem, ubZValue.toString().toFloat()); + if (!ubZValue.isNull()){ + // FIX + // In the firsts zvalue implemenations values outside the boudaries have been used. + // No boundaries specified on documentation but to small values are not correctly handled. + qreal zValue = ubZValue.toString().toFloat(); + while(zValue < -999999) zValue /= 10.; + UBGraphicsItem::assignZValue(gItem, zValue); + } UBItem* ubItem = dynamic_cast(gItem); From 03f6b123d84c5cee915c55443df080a709bb037e Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 30 May 2013 13:28:14 +0200 Subject: [PATCH 17/24] play tool behaves corretly when moving strokes --- src/board/UBBoardView.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 2aaada0d..da3d8517 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -558,10 +558,6 @@ Here we determines cases when items should to get mouse press event at pressing if (currentTool != UBStylusTool::Selector) return false; break; - case UBGraphicsItemType::StrokeItemType: - if (currentTool == UBStylusTool::Play) - return true; - break; case UBGraphicsGroupContainerItem::Type: // Groups shouldn't reacts on any presses and moves for Play tool. if(currentTool == UBStylusTool::Play) @@ -1201,6 +1197,7 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) movingItem = NULL; bReleaseIsNeed = false; } + if (mWidgetMoved) { mWidgetMoved = false; From 887aff4898d977274a834aba9d4e82afcf25adbe Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 3 Jun 2013 15:50:50 +0200 Subject: [PATCH 18/24] fixed issue 19 --- src/board/UBBoardView.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index da3d8517..ff40f63e 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -550,7 +550,7 @@ Here we determines cases when items should to get mouse press event at pressing case UBGraphicsPixmapItem::Type: case UBGraphicsTextItem::Type: if (currentTool == UBStylusTool::Play) - return true; + return false; if ((currentTool == UBStylusTool::Selector) && item->isSelected()) return true; if ((currentTool == UBStylusTool::Selector) && item->parentItem() && item->parentItem()->isSelected()) From 930a7c6d393a040f203dcb308f361314340b12d7 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 10 Jun 2013 09:06:00 +0200 Subject: [PATCH 19/24] restored old version of storing strokes --- src/adaptors/UBSvgSubsetAdaptor.cpp | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index c2e5924b..de2f1a3e 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -1043,7 +1043,6 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) qSort(items.begin(), items.end(), itemZIndexComp); UBGraphicsStroke *openStroke = 0; - int nextStroke = 0; bool groupHoldsInfo = false; @@ -1056,32 +1055,12 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) if(strokesGroupItem && strokesGroupItem->isVisible()){ // Add the polygons - //parsing number of polygons into one polygon - qDebug() << "parsing stroke number" << nextStroke++; - UBGraphicsPolygonItem *resultPoly = 0; - - foreach(QGraphicsItem* item, strokesGroupItem->childItems()) { + foreach(QGraphicsItem* item, strokesGroupItem->childItems()){ UBGraphicsPolygonItem* poly = qgraphicsitem_cast(item); - if (!poly) - continue; - if (!resultPoly) { - resultPoly = poly; - continue; + if(NULL != poly){ + polygonItemToSvgPolygon(poly, true); + items.removeOne(poly); } - - QPolygonF unitedPolygon = resultPoly->polygon().united(poly->polygon()); - resultPoly->setPolygon(unitedPolygon); - items.removeOne(poly); - } - if (resultPoly) { - resultPoly->setZValue(strokesGroupItem->zValue()); - //Claudio: the painter path simplification remove all the polygons overlap - QPainterPath painterPath; - painterPath.addPolygon(resultPoly->polygon()); - painterPath = painterPath.simplified(); - resultPoly->setPolygon(painterPath.toFillPolygon()); - polygonItemToSvgPolygon(resultPoly, false); - items.removeOne(resultPoly); } } From 6fe52f690b9a4ecb261ad2ba4bf5c5ddb417cc36 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 10 Jun 2013 09:26:41 +0200 Subject: [PATCH 20/24] changed the default url --- src/core/UBSettings.cpp | 2 +- src/web/browser/WBBrowserWindow.cpp | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 3a226896..89ee338c 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -199,7 +199,7 @@ void UBSettings::ValidateKeyboardPaletteKeyBtnSize() void UBSettings::init() { - productWebUrl = new UBSetting(this, "App", "ProductWebAddress", "http://www.sankore.org"); + productWebUrl = new UBSetting(this, "App", "ProductWebAddress", "http://www.oe-f.org"); softwareHomeUrl = productWebUrl->get().toString(); diff --git a/src/web/browser/WBBrowserWindow.cpp b/src/web/browser/WBBrowserWindow.cpp index 8f916005..82e41298 100644 --- a/src/web/browser/WBBrowserWindow.cpp +++ b/src/web/browser/WBBrowserWindow.cpp @@ -146,10 +146,7 @@ WBBrowserWindow::~WBBrowserWindow() mTabWidget = NULL; } - if(mSearchToolBar){ - delete mSearchToolBar; - mSearchToolBar = NULL; - } + //Explanation mSearchToolBar has a parent so it's automatically freed } From d4892ec848377ef674ff89939ce0d851791ea014 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 10 Jun 2013 10:06:54 +0200 Subject: [PATCH 21/24] added if to avoid error until the decisons about examples --- src/board/UBFeaturesController.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/board/UBFeaturesController.cpp b/src/board/UBFeaturesController.cpp index fe44b8c1..3729187e 100644 --- a/src/board/UBFeaturesController.cpp +++ b/src/board/UBFeaturesController.cpp @@ -59,6 +59,8 @@ const QString UBFeaturesController::webSearchPath = rootPath + "/Web search"; void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString & currVirtualPath, const QSet &pFavoriteSet) { Q_ASSERT(QFileInfo(currentPath.toLocalFile()).exists()); + if(QFileInfo(currentPath.toLocalFile()).exists()) + return; QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currentPath.toLocalFile()); From 8148ac7619f4a9a2fb912e2da55bf4848a18ab7c Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 10 Jun 2013 13:25:48 +0200 Subject: [PATCH 22/24] text can be resized until a minimum size is reached --- src/domain/UBGraphicsTextItem.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 039a832d..639102ef 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -215,9 +215,12 @@ void UBGraphicsTextItem::paint(QPainter *painter, const QStyleOptionGraphicsItem if (widget == UBApplication::boardController->controlView()->viewport() && !isSelected() && toPlainText().isEmpty()) { + QFontMetrics fm(font()); + setTextWidth(fm.width(mTypeTextHereLabel)); painter->setFont(font()); painter->setPen(UBSettings::paletteColor); painter->drawText(boundingRect(), Qt::AlignCenter, mTypeTextHereLabel); + setTextInteractionFlags(Qt::NoTextInteraction); } } @@ -246,10 +249,6 @@ void UBGraphicsTextItem::copyItemParameters(UBItem *copy) const cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType)); cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked)); cp->setData(UBGraphicsItemData::ItemEditable, data(UBGraphicsItemData::ItemEditable).toBool()); - // cp->setDefaultTextColor(this->defaultTextColor()); - // cp->setFont(this->font()); - // cp->setColorOnDarkBackground(this->colorOnDarkBackground()); - // cp->setColorOnLightBackground(this->colorOnLightBackground()); cp->setTextWidth(this->textWidth()); cp->setTextHeight(this->textHeight()); @@ -275,15 +274,9 @@ QPainterPath UBGraphicsTextItem::shape() const void UBGraphicsTextItem::setTextWidth(qreal width) { QFontMetrics fm(font()); - qreal strictMin = fm.height(); + qreal strictMin = 155; // the size of the font customization panel qreal newWidth = qMax(strictMin, width); - if (toPlainText().isEmpty()) - { - qreal minWidth = fm.width(mTypeTextHereLabel); - newWidth = qMax(minWidth, newWidth); - } - QGraphicsTextItem::setTextWidth(newWidth); } @@ -313,7 +306,7 @@ void UBGraphicsTextItem::contentsChanged() if (toPlainText().isEmpty()) { - setTextWidth(textWidth()); + resize(textWidth(),textHeight()); } } From 1423fb937ab062c43c4d8d676c00df2a89cc8626 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 10 Jun 2013 14:29:35 +0200 Subject: [PATCH 23/24] centered left panel on selected thumbnail --- src/gui/UBDocumentNavigator.cpp | 6 ++++++ src/gui/UBDocumentNavigator.h | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index baed7d67..11f5400d 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -52,6 +52,7 @@ UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGra , mNbColumns(1) , mThumbnailWidth(0) , mThumbnailMinWidth(100) + , mSelectedThumbnail(NULL) { setObjectName(name); mScene = new QGraphicsScene(this); @@ -123,6 +124,7 @@ void UBDocumentNavigator::onScrollToSelectedPage(int index) if (c==index) { el.getThumbnail()->setSelected(true); + mSelectedThumbnail = el.getThumbnail(); } else { @@ -130,6 +132,7 @@ void UBDocumentNavigator::onScrollToSelectedPage(int index) } c++; } + centerOn(mSelectedThumbnail); } /** @@ -228,6 +231,9 @@ void UBDocumentNavigator::resizeEvent(QResizeEvent *event) // Update the thumbnails width mThumbnailWidth = (width() > mThumbnailMinWidth) ? width() - 2*border() : mThumbnailMinWidth; + if(mSelectedThumbnail) + centerOn(mSelectedThumbnail); + // Refresh the scene refreshScene(); } diff --git a/src/gui/UBDocumentNavigator.h b/src/gui/UBDocumentNavigator.h index ad5fcf31..d323dbd6 100644 --- a/src/gui/UBDocumentNavigator.h +++ b/src/gui/UBDocumentNavigator.h @@ -59,7 +59,7 @@ protected: virtual void mouseReleaseEvent(QMouseEvent *event); private: - + void refreshScene(); int border(); @@ -76,6 +76,8 @@ private: int mThumbnailWidth; /** The current thumbnails minimum width */ int mThumbnailMinWidth; + /** The selected thumbnail */ + UBSceneThumbnailNavigPixmap* mSelectedThumbnail; }; - + #endif // UBDOCUMENTNAVIGATOR_H From 1ff95dbf03fc65ee01d7e70bb85c3813ff05acef Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 10 Jun 2013 14:52:19 +0200 Subject: [PATCH 24/24] handled selectall keyboard shortcut on board --- src/domain/UBGraphicsScene.cpp | 10 ++++++++++ src/domain/UBGraphicsScene.h | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 82583ce5..2e88df74 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -2188,6 +2188,16 @@ void UBGraphicsScene::keyReleaseEvent(QKeyEvent * keyEvent) QList si = selectedItems(); + if(keyEvent->matches(QKeySequence::SelectAll)){ + QListIterator itItems(this->mFastAccessItems); + + while (itItems.hasNext()) + itItems.next()->setSelected(true); + + keyEvent->accept(); + return; + } + if ((si.size() > 0) && (keyEvent->isAccepted())) { #ifdef Q_OS_MAC diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index c09855a5..9dd09525 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -356,8 +356,8 @@ public slots: void recolorAllItems(); - virtual void drawItems (QPainter * painter, int numItems, - QGraphicsItem * items[], const QStyleOptionGraphicsItem options[], QWidget * widget = 0); + virtual void drawItems (QPainter * painter, int numItems, + QGraphicsItem * items[], const QStyleOptionGraphicsItem options[], QWidget * widget = 0); QGraphicsItem* rootItem(QGraphicsItem* item) const;