Commit 23bf38ed authored by Yimgo's avatar Yimgo

Merge branch 'master' into widget_fix

parents 880877ae d4072aae
...@@ -15,12 +15,19 @@ ...@@ -15,12 +15,19 @@
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
MAKE_TAG=true MAKE_TAG=true
CREATE_DIENA_DISTRIBUTION_ZIP=false
if [ $# == "1" ]; then
if [ $1 == "notag" ]; then for var in "$@"
do
if [ $var == "notag" ]; then
MAKE_TAG=false; MAKE_TAG=false;
fi fi
fi if [ $var == "diena" ]; then
CREATE_DIENA_DISTRIBUTION_ZIP=true;
fi
done
notifyError(){ notifyError(){
notify-send -t 0 "Error occoured" "An error occours during the sankore build:\n\t$1" -i /usr/share/icons/oxygen/64x64/status/dialog-error.png notify-send -t 0 "Error occoured" "An error occours during the sankore build:\n\t$1" -i /usr/share/icons/oxygen/64x64/status/dialog-error.png
...@@ -39,7 +46,6 @@ alertIfPreviousVersionInstalled(){ ...@@ -39,7 +46,6 @@ alertIfPreviousVersionInstalled(){
fi fi
} }
alertIfPreviousVersionInstalled alertIfPreviousVersionInstalled
...@@ -318,11 +324,23 @@ chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm" ...@@ -318,11 +324,23 @@ chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm"
chmod 755 "$BASE_WORKING_DIR/DEBIAN/postint" chmod 755 "$BASE_WORKING_DIR/DEBIAN/postint"
mkdir -p "install/linux" mkdir -p "install/linux"
DEBIAN_PACKAGE_NAME="Open-Sankore_${VERSION}_$ARCHITECTURE.deb"
fakeroot chown -R root:root $BASE_WORKING_DIR fakeroot chown -R root:root $BASE_WORKING_DIR
dpkg -b "$BASE_WORKING_DIR" install/linux/Open-Sankore_${VERSION}_$ARCHITECTURE.deb dpkg -b "$BASE_WORKING_DIR" "install/linux/$DEBIAN_PACKAGE_NAME"
notify-send "Open-Sankore" "Package built" notify-send "Open-Sankore" "Package built"
#clean up mess #clean up mess
fakeroot rm -rf $BASE_WORKING_DIR fakeroot rm -rf $BASE_WORKING_DIR
if [ $CREATE_DIENA_DISTRIBUTION_ZIP == true ]; then
ZIP_NAME="Open-Sankoré_`lsb_release -is`_`lsb_release -rs`_${VERSION}_${ARCHITECTURE}.zip"
cd install/linux
`which zip` -1 --junk-paths ${ZIP_NAME} ${DEBIAN_PACKAGE_NAME} ../../ReleaseNotes.pdf ../../JournalDesModifications.pdf
cd -
notify-send "Open-Sankore" "Build Diena zip file for distribution"
fi
...@@ -21,13 +21,18 @@ notifyError(){ ...@@ -21,13 +21,18 @@ notifyError(){
} }
MAKE_TAG=true MAKE_TAG=true
CREATE_DIENA_DISTRIBUTION_ZIP=false
if [ $# == "1" ]; then
if [ $1 == "notag" ]; then for var in "$@"
do
if [ $var == "notag" ]; then
MAKE_TAG=false; MAKE_TAG=false;
fi fi
fi if [ $var == "diena" ]; then
CREATE_DIENA_DISTRIBUTION_ZIP=true;
fi
done
alertIfPreviousVersionInstalled(){ alertIfPreviousVersionInstalled(){
APT_CACHE=`which apt-cache` APT_CACHE=`which apt-cache`
...@@ -320,11 +325,21 @@ chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm" ...@@ -320,11 +325,21 @@ chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm"
chmod 755 "$BASE_WORKING_DIR/DEBIAN/postint" chmod 755 "$BASE_WORKING_DIR/DEBIAN/postint"
mkdir -p "install/linux" mkdir -p "install/linux"
DEBIAN_PACKAGE_NAME="Open-Sankore_${VERSION}_$ARCHITECTURE.deb"
fakeroot chown -R root:root $BASE_WORKING_DIR fakeroot chown -R root:root $BASE_WORKING_DIR
dpkg -b "$BASE_WORKING_DIR" install/linux/Open-Sankore_${VERSION}_$ARCHITECTURE.deb dpkg -b "$BASE_WORKING_DIR" "install/linux/$DEBIAN_PACKAGE_NAME"
notify-send "Open-Sankore" "Package built" notify-send "Open-Sankore" "Package built"
#clean up mess #clean up mess
fakeroot rm -rf $BASE_WORKING_DIR fakeroot rm -rf $BASE_WORKING_DIR
if [ $CREATE_DIENA_DISTRIBUTION_ZIP == true ]; then
ZIP_NAME="Open-Sankoré_`lsb_release -is`_`lsb_release -rs`_${VERSION}_${ARCHITECTURE}.zip"
cd install/linux
`which zip` -1 --junk-paths ${ZIP_NAME} ${DEBIAN_PACKAGE_NAME} ../../ReleaseNotes.pdf ../../JournalDesModifications.pdf
cd -
notify-send "Open-Sankore" "Build Diena zip file for distribution"
fi
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<teacherGuide> <teacherGuide>
<gradeLevels> <gradeLevels>
<gradeLevel label="" baseLevel="Maternelle"/>
<gradeLevel label="Petite Section (3-4 ans)" baseLevel="Maternelle"/> <gradeLevel label="Petite Section (3-4 ans)" baseLevel="Maternelle"/>
<gradeLevel label="Moyenne Section (4-5 ans)" baseLevel="Maternelle"/> <gradeLevel label="Moyenne Section (4-5 ans)" baseLevel="Maternelle"/>
<gradeLevel label="Grande Section (5-6 ans)" baseLevel="Maternelle"/> <gradeLevel label="Grande Section (5-6 ans)" baseLevel="Maternelle"/>
...@@ -22,6 +23,7 @@ ...@@ -22,6 +23,7 @@
<gradeLevel label="Education Spécialisée" baseLevel="Enseignement Professionnel" /> <gradeLevel label="Education Spécialisée" baseLevel="Enseignement Professionnel" />
</gradeLevels> </gradeLevels>
<subjects baseLevel="Maternelle"> <subjects baseLevel="Maternelle">
<subject label="" />
<subject label="Percevoir, sentir, imaginer, créer" /> <subject label="Percevoir, sentir, imaginer, créer" />
<subject label="Découvrir l'écrit" /> <subject label="Découvrir l'écrit" />
<subject label="S'approprier le langage" /> <subject label="S'approprier le langage" />
...@@ -29,6 +31,7 @@ ...@@ -29,6 +31,7 @@
<subject label="Découvrir le monde" /> <subject label="Découvrir le monde" />
</subjects> </subjects>
<subjects baseLevel="Elémentaire"> <subjects baseLevel="Elémentaire">
<subject label="" />
<subject label="Pratiques artistiques" /> <subject label="Pratiques artistiques" />
<subject label="Pratiques artistiques - arts visuels" /> <subject label="Pratiques artistiques - arts visuels" />
<subject label="Pratiques artistiques - éducation musicale" /> <subject label="Pratiques artistiques - éducation musicale" />
...@@ -50,6 +53,7 @@ ...@@ -50,6 +53,7 @@
<subject label="TUIC" /> <subject label="TUIC" />
</subjects> </subjects>
<subjects baseLevel="Collège"> <subjects baseLevel="Collège">
<subject label="" />
<subject label="Pratiques artistiques" /> <subject label="Pratiques artistiques" />
<subject label="Pratiques artistiques - arts visuels" /> <subject label="Pratiques artistiques - arts visuels" />
<subject label="Pratiques artistiques - éducation musicale" /> <subject label="Pratiques artistiques - éducation musicale" />
...@@ -80,6 +84,7 @@ ...@@ -80,6 +84,7 @@
<subject label="Education aux médias" /> <subject label="Education aux médias" />
</subjects> </subjects>
<subjects baseLevel="Lycée"> <subjects baseLevel="Lycée">
<subject label="" />
<subject label="Enseignements artistiques" /> <subject label="Enseignements artistiques" />
<subject label="Agriculture" /> <subject label="Agriculture" />
<subject label="Arts" /> <subject label="Arts" />
...@@ -125,6 +130,7 @@ ...@@ -125,6 +130,7 @@
<subject label="Philosophie" /> <subject label="Philosophie" />
</subjects> </subjects>
<subjects baseLevel="Enseignement Professionnel"> <subjects baseLevel="Enseignement Professionnel">
<subject label="" />
<subject label="Enseignements artistiques" /> <subject label="Enseignements artistiques" />
<subject label="Agriculture" /> <subject label="Agriculture" />
<subject label="Arts" /> <subject label="Arts" />
...@@ -169,6 +175,7 @@ ...@@ -169,6 +175,7 @@
<subject label="Philosophie" /> <subject label="Philosophie" />
</subjects> </subjects>
<types> <types>
<type label="" />
<type label="Activité : Evaluation/Travail à la maison" /> <type label="Activité : Evaluation/Travail à la maison" />
<type label="Activité : Exercice" /> <type label="Activité : Exercice" />
<type label="Activité : Travaux Pratiques" /> <type label="Activité : Travaux Pratiques" />
......
*
{
color: #3F3F3F;
}
QMainWindow QMainWindow
{ {
background-color: #F1F1F1; background-color: #F1F1F1;
} }
......
...@@ -700,11 +700,11 @@ function addContainer(){ ...@@ -700,11 +700,11 @@ function addContainer(){
var close = $("<div class='close_cont'>").appendTo(container); var close = $("<div class='close_cont'>").appendTo(container);
var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container); var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
var text = $("<div class='text_cont'>").appendTo(sub_container); var text = $("<div class='text_cont'>").appendTo(sub_container);
text.attr("ondragenter", "return false;")
.attr("ondragleave", "$(this).removeClass('gray'); return false;")
.attr("ondragover", "$(this).addClass('gray'); return false;")
.attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
var audio_block = $("<div class='audio_block'>").appendTo(text); var audio_block = $("<div class='audio_block'>").appendTo(text);
audio_block.attr("ondragenter", "return false;")
.attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
.attr("ondragover", "$(this).addClass('audio_gray'); return false;")
.attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
$("<div class='play'>").appendTo(audio_block); $("<div class='play'>").appendTo(audio_block);
$("<div class='replay'>").appendTo(audio_block); $("<div class='replay'>").appendTo(audio_block);
var source = $("<source/>").attr("src", ""); var source = $("<source/>").attr("src", "");
......
...@@ -685,11 +685,11 @@ function addContainer(){ ...@@ -685,11 +685,11 @@ function addContainer(){
var close = $("<div class='close_cont'>").appendTo(container); var close = $("<div class='close_cont'>").appendTo(container);
var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container); var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
var text = $("<div class='text_cont'>").appendTo(sub_container); var text = $("<div class='text_cont'>").appendTo(sub_container);
text.attr("ondragenter", "return false;")
.attr("ondragleave", "$(this).removeClass('gray'); return false;")
.attr("ondragover", "$(this).addClass('gray'); return false;")
.attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
var audio_block = $("<div class='audio_block'>").appendTo(text); var audio_block = $("<div class='audio_block'>").appendTo(text);
audio_block.attr("ondragenter", "return false;")
.attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
.attr("ondragover", "$(this).addClass('audio_gray'); return false;")
.attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
$("<div class='play'>").appendTo(audio_block); $("<div class='play'>").appendTo(audio_block);
$("<div class='replay'>").appendTo(audio_block); $("<div class='replay'>").appendTo(audio_block);
var source = $("<source/>").attr("src", ""); var source = $("<source/>").attr("src", "");
...@@ -850,8 +850,8 @@ function onDropAudio(obj, event) { ...@@ -850,8 +850,8 @@ function onDropAudio(obj, event) {
textData = stringToXML(textData); textData = stringToXML(textData);
var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent; var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent; var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
if(tmp_type.substr(0, 5) == "audio"){ if(tmp_type.substr(0, 5) == "audio"){
var audio_block = $(obj).find(".audio_block"); var audio_block = $(obj);
$(obj).find("audio").remove(); $(obj).find("audio").remove();
audio_block.find(":first-child").removeClass("stop").addClass("play"); audio_block.find(":first-child").removeClass("stop").addClass("play");
var source = $("<source/>").attr("src", "../../" + tmp); var source = $("<source/>").attr("src", "../../" + tmp);
......
...@@ -685,11 +685,11 @@ function addContainer(){ ...@@ -685,11 +685,11 @@ function addContainer(){
var close = $("<div class='close_cont'>").appendTo(container); var close = $("<div class='close_cont'>").appendTo(container);
var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container); var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
var text = $("<div class='text_cont'>").appendTo(sub_container); var text = $("<div class='text_cont'>").appendTo(sub_container);
text.attr("ondragenter", "return false;")
.attr("ondragleave", "$(this).removeClass('gray'); return false;")
.attr("ondragover", "$(this).addClass('gray'); return false;")
.attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
var audio_block = $("<div class='audio_block'>").appendTo(text); var audio_block = $("<div class='audio_block'>").appendTo(text);
audio_block.attr("ondragenter", "return false;")
.attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
.attr("ondragover", "$(this).addClass('audio_gray'); return false;")
.attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
$("<div class='play'>").appendTo(audio_block); $("<div class='play'>").appendTo(audio_block);
$("<div class='replay'>").appendTo(audio_block); $("<div class='replay'>").appendTo(audio_block);
var source = $("<source/>").attr("src", ""); var source = $("<source/>").attr("src", "");
...@@ -851,7 +851,7 @@ function onDropAudio(obj, event) { ...@@ -851,7 +851,7 @@ function onDropAudio(obj, event) {
var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent; var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent; var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
if(tmp_type.substr(0, 5) == "audio"){ if(tmp_type.substr(0, 5) == "audio"){
var audio_block = $(obj).find(".audio_block"); var audio_block = $(obj);
$(obj).find("audio").remove(); $(obj).find("audio").remove();
audio_block.find(":first-child").removeClass("stop").addClass("play"); audio_block.find(":first-child").removeClass("stop").addClass("play");
var source = $("<source/>").attr("src", "../../" + tmp); var source = $("<source/>").attr("src", "../../" + tmp);
......
...@@ -4,6 +4,7 @@ html, body{ ...@@ -4,6 +4,7 @@ html, body{
margin: 0; margin: 0;
padding: 0; padding: 0;
border-radius: 50px; border-radius: 50px;
overflow: hidden;
} }
body{ body{
...@@ -212,6 +213,7 @@ li>div{ ...@@ -212,6 +213,7 @@ li>div{
.real_text{ .real_text{
width: 100%; width: 100%;
height: 100%; height: 100%;
word-wrap: break-word;
} }
.block_border{ .block_border{
...@@ -357,7 +359,6 @@ li>div{ ...@@ -357,7 +359,6 @@ li>div{
#wgt_name{ #wgt_name{
height: 44px; height: 44px;
width: 200px;
margin: 10px 10px 0 10px; margin: 10px 10px 0 10px;
padding: 0; padding: 0;
float: left; float: left;
...@@ -366,9 +367,8 @@ li>div{ ...@@ -366,9 +367,8 @@ li>div{
color: #8c5730; color: #8c5730;
} }
#wgt_reload, #wgt_edit, #wgt_display{ #wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
cursor: pointer; cursor: pointer;
width: 80px;
height: 44px; height: 44px;
margin: 10px 10px 0 0; margin: 10px 10px 0 0;
float: right; float: right;
...@@ -378,7 +378,6 @@ li>div{ ...@@ -378,7 +378,6 @@ li>div{
} }
#wgt_display{ #wgt_display{
width: 100px;
padding-left: 40px; padding-left: 40px;
background-image: url(../img/slate-edit.png); background-image: url(../img/slate-edit.png);
background-repeat: no-repeat; background-repeat: no-repeat;
...@@ -387,7 +386,6 @@ li>div{ ...@@ -387,7 +386,6 @@ li>div{
} }
#wgt_edit{ #wgt_edit{
width: 100px;
padding-left: 40px; padding-left: 40px;
background-image: url(../img/slate-edit.png); background-image: url(../img/slate-edit.png);
background-repeat: no-repeat; background-repeat: no-repeat;
...@@ -479,4 +477,28 @@ li>div{ ...@@ -479,4 +477,28 @@ li>div{
background-color: #333 !important; background-color: #333 !important;
color: white !important; color: white !important;
background-image: url(../img/ar_down_white.png) !important; background-image: url(../img/ar_down_white.png) !important;
}
.pad_help{
background-image: url(../img/slate-help-white.png) !important;
}
#wgt_help{
padding-left: 32px;
background-image: url(../img/slate-help.png);
background-repeat: no-repeat;
background-position: top 0;
}
#help{
width: 100%;
height: 100%;
overflow: auto;
display: none;
background-color: #ccc;
padding: 5px 0 5px 5px;
}
.open{
} }
\ No newline at end of file
...@@ -48,7 +48,8 @@ ...@@ -48,7 +48,8 @@
<tr style="height: 54px;"> <tr style="height: 54px;">
<td class="b_top_left">&nbsp;</td> <td class="b_top_left">&nbsp;</td>
<td class="b_top_center"> <td class="b_top_center">
<div id="wgt_name"></div> <div id="wgt_name"></div>
<div id="wgt_help"></div>
<div id="wgt_display" class="selected"></div> <div id="wgt_display" class="selected"></div>
<div id="wgt_edit"></div> <div id="wgt_edit"></div>
<select class="style_select"> <select class="style_select">
...@@ -59,10 +60,11 @@ ...@@ -59,10 +60,11 @@
</td> </td>
<td class="b_top_right">&nbsp;</td> <td class="b_top_right">&nbsp;</td>
</tr> </tr>
<tr> <tr>
<td class="b_center_left">&nbsp;</td> <td class="b_center_left">&nbsp;</td>
<td> <td>
<div id="help"></div>
<div id="slider"> <div id="slider">
<ul> <ul>
</ul> </ul>
...@@ -72,7 +74,7 @@ ...@@ -72,7 +74,7 @@
</td> </td>
<td class="b_center_right">&nbsp;</td> <td class="b_center_right">&nbsp;</td>
</tr> </tr>
<tr style="height: 54px;"> <tr style="height: 54px;">
<td class="b_bottom_left">&nbsp;</td> <td class="b_bottom_left">&nbsp;</td>
<td class="b_bottom_center">&nbsp;</td> <td class="b_bottom_center">&nbsp;</td>
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
<tr style="height: 54px;"> <tr style="height: 54px;">
<td class="b_top_left">&nbsp;</td> <td class="b_top_left">&nbsp;</td>
<td class="b_top_center"> <td class="b_top_center">
<div id="wgt_name"></div> <div id="wgt_name"></div>
<div id="wgt_help"></div>
<div id="wgt_display" class="selected"></div> <div id="wgt_display" class="selected"></div>
<div id="wgt_edit"></div> <div id="wgt_edit"></div>
<select class="style_select"> <select class="style_select">
...@@ -33,10 +34,11 @@ ...@@ -33,10 +34,11 @@
</td> </td>
<td class="b_top_right">&nbsp;</td> <td class="b_top_right">&nbsp;</td>
</tr> </tr>
<tr> <tr>
<td class="b_center_left">&nbsp;</td> <td class="b_center_left">&nbsp;</td>
<td> <td>
<div id="help"></div>
<div id="slider"> <div id="slider">
<ul> <ul>
</ul> </ul>
...@@ -46,7 +48,7 @@ ...@@ -46,7 +48,7 @@
</td> </td>
<td class="b_center_right">&nbsp;</td> <td class="b_center_right">&nbsp;</td>
</tr> </tr>
<tr style="height: 54px;"> <tr style="height: 54px;">
<td class="b_bottom_left">&nbsp;</td> <td class="b_bottom_left">&nbsp;</td>
<td class="b_bottom_center">&nbsp;</td> <td class="b_bottom_center">&nbsp;</td>
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
<tr style="height: 54px;"> <tr style="height: 54px;">
<td class="b_top_left">&nbsp;</td> <td class="b_top_left">&nbsp;</td>
<td class="b_top_center"> <td class="b_top_center">
<div id="wgt_name"></div> <div id="wgt_name"></div>
<div id="wgt_help"></div>
<div id="wgt_display" class="selected"></div> <div id="wgt_display" class="selected"></div>
<div id="wgt_edit"></div> <div id="wgt_edit"></div>
<select class="style_select"> <select class="style_select">
...@@ -33,10 +34,11 @@ ...@@ -33,10 +34,11 @@
</td> </td>
<td class="b_top_right">&nbsp;</td> <td class="b_top_right">&nbsp;</td>
</tr> </tr>
<tr> <tr>
<td class="b_center_left">&nbsp;</td> <td class="b_center_left">&nbsp;</td>
<td> <td>
<div id="help"></div>
<div id="slider"> <div id="slider">
<ul> <ul>
</ul> </ul>
...@@ -46,7 +48,7 @@ ...@@ -46,7 +48,7 @@
</td> </td>
<td class="b_center_right">&nbsp;</td> <td class="b_center_right">&nbsp;</td>
</tr> </tr>
<tr style="height: 54px;"> <tr style="height: 54px;">
<td class="b_bottom_left">&nbsp;</td> <td class="b_bottom_left">&nbsp;</td>
<td class="b_bottom_center">&nbsp;</td> <td class="b_bottom_center">&nbsp;</td>
......
...@@ -5,7 +5,9 @@ QWidget#UBLibNavigatorWidget, ...@@ -5,7 +5,9 @@ QWidget#UBLibNavigatorWidget,
QWidget#UBLibItemProperties, QWidget#UBLibItemProperties,
QWidget#UBDownloadWidget, QWidget#UBDownloadWidget,
QWidget#UBTeacherGuideWidget, QWidget#UBTeacherGuideWidget,
QWidget#UBFeatureProperties QWidget#UBFeatureProperties,
QWidget#UBFeaturesNavigatorWidget,
QWidget#PathList
{ {
background: #EEEEEE; background: #EEEEEE;
border-radius: 10px; border-radius: 10px;
...@@ -26,14 +28,13 @@ QWidget#UBLibWebView ...@@ -26,14 +28,13 @@ QWidget#UBLibWebView
border: 2px solid #999999; border: 2px solid #999999;
} }
QWidget#UBFeaturesWebView QListView
{ {
background: #EEEEEE; border: 0px;
border-radius : 10px;
border: 2px solid #999999;
} }
QListView
QWidget#UBFeaturesWebView
{ {
background: #EEEEEE; background: #EEEEEE;
border-radius : 10px; border-radius : 10px;
......
...@@ -80,7 +80,7 @@ bool UBImportPDF::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFi ...@@ -80,7 +80,7 @@ bool UBImportPDF::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFi
for(int pdfPageNumber = 1; pdfPageNumber <= pdfPageCount; pdfPageNumber++) for(int pdfPageNumber = 1; pdfPageNumber <= pdfPageCount; pdfPageNumber++)
{ {
int pageIndex = documentPageCount + (pdfPageNumber - 1); int pageIndex = documentPageCount + pdfPageNumber;
UBApplication::showMessage(tr("Importing page %1 of %2").arg(pdfPageNumber).arg(pdfPageCount), true); UBApplication::showMessage(tr("Importing page %1 of %2").arg(pdfPageNumber).arg(pdfPageCount), true);
UBGraphicsScene* scene = 0; UBGraphicsScene* scene = 0;
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include "board/UBBoardView.h" #include "board/UBBoardView.h"
#include "board/UBBoardController.h" #include "board/UBBoardController.h"
#include "board/UBDrawingController.h" #include "board/UBDrawingController.h"
#include "board/UBBoardPaletteManager.h"
#include "frameworks/UBFileSystemUtils.h" #include "frameworks/UBFileSystemUtils.h"
#include "frameworks/UBStringUtils.h" #include "frameworks/UBStringUtils.h"
...@@ -54,6 +55,9 @@ ...@@ -54,6 +55,9 @@
#include "core/UBPersistenceManager.h" #include "core/UBPersistenceManager.h"
#include "core/UBApplication.h" #include "core/UBApplication.h"
#include "gui/UBTeacherGuideWidget.h"
#include "gui/UBDockTeacherGuideWidget.h"
#include "interfaces/IDataStorage.h" #include "interfaces/IDataStorage.h"
#include "document/UBDocumentContainer.h" #include "document/UBDocumentContainer.h"
...@@ -1142,7 +1146,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement() ...@@ -1142,7 +1146,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement()
bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
{ {
if (mScene->isModified()) if (mScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()))
{ {
//Creating dom structure to store information //Creating dom structure to store information
......
...@@ -38,6 +38,9 @@ ...@@ -38,6 +38,9 @@
#include "gui/UBToolWidget.h" #include "gui/UBToolWidget.h"
#include "gui/UBKeyboardPalette.h" #include "gui/UBKeyboardPalette.h"
#include "gui/UBMagnifer.h" #include "gui/UBMagnifer.h"
#include "gui/UBDockPaletteWidget.h"
#include "gui/UBDockTeacherGuideWidget.h"
#include "gui/UBTeacherGuideWidget.h"
#include "domain/UBGraphicsPixmapItem.h" #include "domain/UBGraphicsPixmapItem.h"
#include "domain/UBGraphicsItemUndoCommand.h" #include "domain/UBGraphicsItemUndoCommand.h"
...@@ -1464,7 +1467,10 @@ void UBBoardController::lastWindowClosed() ...@@ -1464,7 +1467,10 @@ void UBBoardController::lastWindowClosed()
{ {
if (!mCleanupDone) if (!mCleanupDone)
{ {
if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty())) bool teacherGuideModified = false;
if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget())
teacherGuideModified = UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()) && !teacherGuideModified)
{ {
UBPersistenceManager::persistenceManager()->deleteDocument(selectedDocument()); UBPersistenceManager::persistenceManager()->deleteDocument(selectedDocument());
} }
...@@ -1591,7 +1597,7 @@ void UBBoardController::persistCurrentScene() ...@@ -1591,7 +1597,7 @@ void UBBoardController::persistCurrentScene()
if(UBPersistenceManager::persistenceManager() if(UBPersistenceManager::persistenceManager()
&& selectedDocument() && mActiveScene && selectedDocument() && mActiveScene
&& (mActiveSceneIndex >= 0) && (mActiveSceneIndex >= 0)
&& mActiveScene->isModified()) && (mActiveScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())))
{ {
emit activeSceneWillBePersisted(); emit activeSceneWillBePersisted();
......
...@@ -83,9 +83,9 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll ...@@ -83,9 +83,9 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll
, mPendingPanButtonPressed(false) , mPendingPanButtonPressed(false)
, mPendingEraseButtonPressed(false) , mPendingEraseButtonPressed(false)
, mpPageNavigWidget(NULL) , mpPageNavigWidget(NULL)
#ifdef USE_WEB_WIDGET //#ifdef USE_WEB_WIDGET
, mpLibWidget(NULL) , mpLibWidget(NULL)
#endif //#endif
, mpCachePropWidget(NULL) , mpCachePropWidget(NULL)
, mpDownloadWidget(NULL) , mpDownloadWidget(NULL)
, mpDesktopLibWidget(NULL) , mpDesktopLibWidget(NULL)
...@@ -134,6 +134,8 @@ void UBBoardPaletteManager::setupDockPaletteWidgets() ...@@ -134,6 +134,8 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
//------------------------------------------------// //------------------------------------------------//
// Create the widgets for the dock palettes // Create the widgets for the dock palettes
mpPageNavigWidget = new UBPageNavigationWidget();
#ifdef USE_WEB_WIDGET #ifdef USE_WEB_WIDGET
mpLibWidget = new UBLibWidget(); mpLibWidget = new UBLibWidget();
#endif #endif
......
...@@ -69,6 +69,8 @@ class UBBoardPaletteManager : public QObject ...@@ -69,6 +69,8 @@ class UBBoardPaletteManager : public QObject
void setCurrentWebToolsPalette(UBWebToolsPalette *palette) {mWebToolsCurrentPalette = palette;} void setCurrentWebToolsPalette(UBWebToolsPalette *palette) {mWebToolsCurrentPalette = palette;}
UBWebToolsPalette* mWebToolsCurrentPalette; UBWebToolsPalette* mWebToolsCurrentPalette;
UBDockTeacherGuideWidget* teacherGuideDockWidget() { return mpTeacherGuideWidget;}
void processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode); void processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode);
void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false); void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false);
void startDownloads(); void startDownloads();
...@@ -135,10 +137,10 @@ class UBBoardPaletteManager : public QObject ...@@ -135,10 +137,10 @@ class UBBoardPaletteManager : public QObject
/** The page navigator widget */ /** The page navigator widget */
UBPageNavigationWidget* mpPageNavigWidget; UBPageNavigationWidget* mpPageNavigWidget;
#ifdef USE_WEB_WIDGET //#ifdef USE_WEB_WIDGET
/** The library widget */ /** The library widget */
UBLibWidget* mpLibWidget; UBLibWidget* mpLibWidget;
#endif //#endif
/** The cache properties widget */ /** The cache properties widget */
UBCachePropertiesWidget* mpCachePropWidget; UBCachePropertiesWidget* mpCachePropWidget;
......
...@@ -28,7 +28,7 @@ class UBRubberBand; ...@@ -28,7 +28,7 @@ class UBRubberBand;
class UBBoardView : public QGraphicsView class UBBoardView : public QGraphicsView
{ {
Q_OBJECT; Q_OBJECT
public: public:
......
...@@ -65,6 +65,10 @@ class UBDrawingController : public QObject ...@@ -65,6 +65,10 @@ class UBDrawingController : public QObject
mIsDesktopMode = mode; mIsDesktopMode = mode;
} }
bool isInDesktopMode(){
return mIsDesktopMode;
}
public slots: public slots:
void setStylusTool(int tool); void setStylusTool(int tool);
......
This diff is collapsed.
...@@ -11,6 +11,15 @@ ...@@ -11,6 +11,15 @@
#include <QMap> #include <QMap>
#include <QUrl> #include <QUrl>
#include <QByteArray> #include <QByteArray>
#include <QtGui>
class UBFeaturesModel;
class UBFeaturesItemDelegate;
class UBFeaturesPathItemDelegate;
class UBFeaturesProxyModel;
class UBFeaturesSearchProxyModel;
class UBFeaturesPathProxyModel;
class UBFeaturesListView;
//#include "UBDockPaletteWidget.h" //#include "UBDockPaletteWidget.h"
...@@ -33,77 +42,120 @@ public: ...@@ -33,77 +42,120 @@ public:
UBFeature() {;} UBFeature() {;}
//UBFeature(const UBFeature &f); //UBFeature(const UBFeature &f);
UBFeature(const QString &url, const QPixmap &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type = FEATURE_CATEGORY); UBFeature(const QString &url, const QPixmap &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type = FEATURE_CATEGORY);
virtual ~UBFeature() {;} // UBFeature();
virtual ~UBFeature();
QString getName() const { return mName; } QString getName() const { return mName; }
QPixmap getThumbnail() const {return mThumbnail;} QPixmap getThumbnail() const {return mThumbnail;}
QString getVirtualPath() const { return virtualPath; } QString getVirtualPath() const { return virtualDir; }
//QString getPath() const { return mPath; }; //QString getPath() const { return mPath; };
QUrl getFullPath() const { return mPath; } QUrl getFullPath() const { return mPath; }
QString getFullVirtualPath() const { return virtualPath + "/" + mName; } QString getFullVirtualPath() const { return virtualDir + "/" + mName; }
QString getUrl() const; QString getUrl() const;
void setFullPath(const QUrl &newPath) {mPath = newPath;}
void setFullVirtualPath(const QString &newVirtualPath) {virtualDir = newVirtualPath;}
UBFeatureElementType getType() const { return elementType; } UBFeatureElementType getType() const { return elementType; }
bool isFolder() const; bool isFolder() const;
bool isDeletable() const; bool isDeletable() const;
bool inTrash() const;
bool operator ==( const UBFeature &f )const; bool operator ==( const UBFeature &f )const;
bool operator !=( const UBFeature &f )const; bool operator !=( const UBFeature &f )const;
const QMap<QString,QString> & getMetadata() const { return metadata; } const QMap<QString,QString> & getMetadata() const { return metadata; }
void setMetadata( const QMap<QString,QString> &data ) { metadata = data; } void setMetadata( const QMap<QString,QString> &data ) { metadata = data; }
bool hasChildren() const {return mChildren.count();}
bool hasParents() const {return mParents.count();}
bool hasRelationships() const {return mChildren.count() && mParents.count();}
private: private:
QString virtualPath; QString virtualDir;
QPixmap mThumbnail; QPixmap mThumbnail;
QString mName; QString mName;
QUrl mPath; QUrl mPath;
UBFeatureElementType elementType; UBFeatureElementType elementType;
QMap<QString,QString> metadata; QMap<QString,QString> metadata;
QList<UBFeature*> mChildren;
QList<UBFeature*> mParents;
}; };
Q_DECLARE_METATYPE( UBFeature ) Q_DECLARE_METATYPE( UBFeature )
class UBFeaturesController : public QObject class UBFeaturesController : public QObject
{ {
friend class UBFeaturesWidget;
Q_OBJECT Q_OBJECT
public: public:
UBFeaturesController(QWidget *parentWidget); UBFeaturesController(QWidget *parentWidget);
virtual ~UBFeaturesController(); virtual ~UBFeaturesController();
QList <UBFeature>* getFeatures()const { return featuresList; } QList <UBFeature>* getFeatures() const {return featuresList;}
const QString& getRootPath()const { return rootPath; } const QString& getRootPath()const {return rootPath;}
void scanFS();
void addItemToPage( const UBFeature &item ); void addItemToPage(const UBFeature &item);
void addItemAsBackground( const UBFeature &item ); void addItemAsBackground(const UBFeature &item);
const UBFeature& getCurrentElement()const { return currentElement; } const UBFeature& getCurrentElement()const {return currentElement;}
void setCurrentElement( const UBFeature &elem ) { currentElement = elem; } void setCurrentElement( const UBFeature &elem ) {currentElement = elem;}
const UBFeature & getTrashElement () const { return trashElement; } const UBFeature & getTrashElement () const { return trashElement; }
UBFeature addDownloadedFile( const QUrl &sourceUrl, const QByteArray &pData ); void addDownloadedFile( const QUrl &sourceUrl, const QByteArray &pData );
UBFeature moveItemToFolder( const QUrl &url, const UBFeature &destination ); UBFeature moveItemToFolder( const QUrl &url, const UBFeature &destination );
UBFeature copyItemToFolder( const QUrl &url, const UBFeature &destination ); UBFeature copyItemToFolder( const QUrl &url, const UBFeature &destination );
void rescanModel();
void siftElements(const QString &pSiftValue);
//TODO make less complicated for betteer maintainence
UBFeature getFeature(const QModelIndex &index, QListView *pOnView);
void searchStarted(const QString &pattern, QListView *pOnView);
void refreshModels();
void deleteItem( const QUrl &url ); void deleteItem( const QUrl &url );
void deleteItem(const UBFeature &pFeature);
bool isTrash( const QUrl &url ); bool isTrash( const QUrl &url );
UBFeature newFolder( const QString &name ); void moveToTrash(UBFeature feature, bool deleteManualy = false);
UBFeature addToFavorite( const QUrl &path ); void addNewFolder(const QString &name);
void removeFromFavorite( const QUrl &path ); void addToFavorite( const QUrl &path );
void removeFromFavorite(const QUrl &path, bool deleteManualy = false);
UBFeature importImage( const QImage &image, const UBFeature &destination ); UBFeature importImage( const QImage &image, const UBFeature &destination );
void fileSystemScan(const QUrl &currPath, const QString & currVirtualPath);
static QString fileNameFromUrl( const QUrl &url ); static QString fileNameFromUrl( const QUrl &url );
static QPixmap thumbnailForFile( const QString &path ); static QPixmap thumbnailForFile( const QString &path );
static bool isDeletable( const QUrl &url ); static bool isDeletable( const QUrl &url );
static char featureTypeSplitter() {return ':';}
static const QString virtualRootName;
void assignFeaturesListVeiw(UBFeaturesListView *pList);
void assignPathListView(UBFeaturesListView *pList);
private:
UBFeaturesItemDelegate *itemDelegate;
UBFeaturesPathItemDelegate *pathItemDelegate;
UBFeaturesModel *featuresModel;
UBFeaturesProxyModel *featuresProxyModel;
UBFeaturesSearchProxyModel *featuresSearchModel;
UBFeaturesPathProxyModel *featuresPathModel;
private: private:
void initDirectoryTree();
void fileSystemScan(const QUrl &currPath, const QString & currVirtualPath); static QPixmap createThumbnail(const QString &path);
static QPixmap createThumbnail(const QString &path);
//void addImageToCurrentPage( const QString &path ); //void addImageToCurrentPage( const QString &path );
void loadFavoriteList(); void loadFavoriteList();
void saveFavoriteList(); void saveFavoriteList();
UBFeature getDestinationForItem( const QUrl &url );
static UBFeatureElementType fileTypeFromUrl( const QString &path ); static UBFeatureElementType fileTypeFromUrl( const QString &path );
QList <UBFeature> *featuresList; QList <UBFeature> *featuresList;
UBFeature *rootElement;
QUrl mUserAudioDirectoryPath; QUrl mUserAudioDirectoryPath;
QUrl mUserVideoDirectoryPath; QUrl mUserVideoDirectoryPath;
...@@ -136,19 +188,24 @@ private: ...@@ -136,19 +188,24 @@ private:
int mLastItemOffsetIndex; int mLastItemOffsetIndex;
UBFeature currentElement; UBFeature currentElement;
UBFeature trashElement;
UBFeature favoriteElement; UBFeature rootElement;
UBFeature favoriteElement;
UBFeature audiosElement; UBFeature audiosElement;
UBFeature moviesElement; UBFeature moviesElement;
UBFeature picturesElement; UBFeature picturesElement;
UBFeature interactElement; UBFeature interactElement;
UBFeature applicationsElement;
UBFeature flashElement; UBFeature flashElement;
UBFeature shapesElement; UBFeature shapesElement;
UBFeature webSearchElement; UBFeature webSearchElement;
QSet <QUrl> *favoriteSet; QSet <QUrl> *favoriteSet;
};
public:
UBFeature trashElement;
UBFeature getParentFeatureForUrl( const QUrl &url );
};
#endif #endif
...@@ -40,6 +40,8 @@ ...@@ -40,6 +40,8 @@
#include "gui/UBScreenMirror.h" #include "gui/UBScreenMirror.h"
#include "gui/UBMainWindow.h" #include "gui/UBMainWindow.h"
#include "gui/UBDockTeacherGuideWidget.h"
#include "gui/UBTeacherGuideWidget.h"
#include "domain/UBGraphicsPixmapItem.h" #include "domain/UBGraphicsPixmapItem.h"
#include "domain/UBW3CWidget.h" #include "domain/UBW3CWidget.h"
...@@ -418,7 +420,7 @@ void UBApplicationController::showDocument() ...@@ -418,7 +420,7 @@ void UBApplicationController::showDocument()
if (UBApplication::boardController) if (UBApplication::boardController)
{ {
if (UBApplication::boardController->activeScene()->isModified()) if (UBApplication::boardController->activeScene()->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()))
UBApplication::boardController->persistCurrentScene(); UBApplication::boardController->persistCurrentScene();
UBApplication::boardController->hide(); UBApplication::boardController->hide();
} }
...@@ -471,23 +473,30 @@ void UBApplicationController::showTutorial() ...@@ -471,23 +473,30 @@ void UBApplicationController::showTutorial()
UBApplication::boardController->hide(); UBApplication::boardController->hide();
} }
// it's needed not to duplicate webbrowser search in web mode. If I've breaked smbd's code let Ivan know if (UBSettings::settings()->webUseExternalBrowser->get().toBool())
UBApplication::webController->show(UBWebController::Tutorial); {
showDesktop(true);
UBApplication::webController->show(UBWebController::Tutorial);
mMainWindow->webToolBar->hide(); }
mMainWindow->boardToolBar->hide(); else{
mMainWindow->documentToolBar->hide(); mMainWindow->webToolBar->hide();
mMainWindow->tutorialToolBar->show(); mMainWindow->boardToolBar->hide();
mMainWindow->documentToolBar->hide();
mMainWindow->tutorialToolBar->show();
mMainMode = Tutorial; mMainMode = Tutorial;
adaptToolBar(); adaptToolBar();
mUninoteController->hideWindow(); mUninoteController->hideWindow();
mirroringEnabled(false); UBApplication::webController->show(UBWebController::Tutorial);
emit mainModeChanged(mMainMode);
mirroringEnabled(false);
emit mainModeChanged(mMainMode);
}
} }
...@@ -537,7 +546,6 @@ void UBApplicationController::updateRequestFinished(int id, bool error) ...@@ -537,7 +546,6 @@ void UBApplicationController::updateRequestFinished(int id, bool error)
} }
else{ else{
QString responseString = QString(mHttp->readAll()); QString responseString = QString(mHttp->readAll());
qDebug() << responseString;
if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){ if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){
mHttp->close(); mHttp->close();
downloadJsonFinished(responseString); downloadJsonFinished(responseString);
...@@ -586,7 +594,10 @@ void UBApplicationController::checkUpdateRequest() ...@@ -586,7 +594,10 @@ void UBApplicationController::checkUpdateRequest()
void UBApplicationController::hideDesktop() void UBApplicationController::hideDesktop()
{ {
mDisplayManager->adjustScreens(-1); mDisplayManager->adjustScreens(-1);
UBDrawingController::drawingController()->setDrawingMode(eDrawingMode_Vector);
if(UBStylusTool::Eraser != UBDrawingController::drawingController()->stylusTool()){
UBDrawingController::drawingController()->setDrawingMode(eDrawingMode_Vector);
}
if (mMainMode == Board) if (mMainMode == Board)
{ {
......
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
#include "core/UBSettings.h" #include "core/UBSettings.h"
#include "core/UBSetting.h" #include "core/UBSetting.h"
#include "gui/UBDockTeacherGuideWidget.h"
#include "gui/UBTeacherGuideWidget.h"
#include "document/UBDocumentProxy.h" #include "document/UBDocumentProxy.h"
#include "adaptors/UBExportPDF.h" #include "adaptors/UBExportPDF.h"
...@@ -33,6 +36,7 @@ ...@@ -33,6 +36,7 @@
#include "adaptors/UBMetadataDcSubsetAdaptor.h" #include "adaptors/UBMetadataDcSubsetAdaptor.h"
#include "board/UBBoardController.h" #include "board/UBBoardController.h"
#include "board/UBBoardPaletteManager.h"
#include "interfaces/IDataStorage.h" #include "interfaces/IDataStorage.h"
...@@ -591,7 +595,6 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy, ...@@ -591,7 +595,6 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy,
} }
} }
void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy, UBGraphicsScene* pScene, const int pSceneIndex) void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy, UBGraphicsScene* pScene, const int pSceneIndex)
{ {
checkIfDocumentRepositoryExists(); checkIfDocumentRepositoryExists();
...@@ -603,10 +606,15 @@ void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy, ...@@ -603,10 +606,15 @@ void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy,
QDir dir(pDocumentProxy->persistencePath()); QDir dir(pDocumentProxy->persistencePath());
dir.mkpath(pDocumentProxy->persistencePath()); dir.mkpath(pDocumentProxy->persistencePath());
if (pDocumentProxy->isModified()) UBBoardPaletteManager* paletteManager = UBApplication::boardController->paletteManager();
bool teacherGuideModified = false;
if(paletteManager->teacherGuideDockWidget())
teacherGuideModified = paletteManager->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
if (pDocumentProxy->isModified() || teacherGuideModified)
UBMetadataDcSubsetAdaptor::persist(pDocumentProxy); UBMetadataDcSubsetAdaptor::persist(pDocumentProxy);
if (pScene->isModified()) if (pScene->isModified() || teacherGuideModified)
{ {
UBSvgSubsetAdaptor::persistScene(pDocumentProxy, pScene, pSceneIndex); UBSvgSubsetAdaptor::persistScene(pDocumentProxy, pScene, pSceneIndex);
......
...@@ -74,6 +74,10 @@ void UBSetting::setString(const QString& pValue) ...@@ -74,6 +74,10 @@ void UBSetting::setString(const QString& pValue)
{ {
set(pValue); set(pValue);
} }
void UBSetting::setInt(int pValue)
{
set(pValue);
}
UBColorListSetting::UBColorListSetting(UBSettings* parent) UBColorListSetting::UBColorListSetting(UBSettings* parent)
......
...@@ -54,6 +54,7 @@ class UBSetting : public QObject ...@@ -54,6 +54,7 @@ class UBSetting : public QObject
void setBool(bool pValue); void setBool(bool pValue);
void setString(const QString& pValue); void setString(const QString& pValue);
void setInt(int pValue);
signals: signals:
......
...@@ -225,6 +225,8 @@ void UBSettings::init() ...@@ -225,6 +225,8 @@ void UBSettings::init()
appStartMode = new UBSetting(this, "App", "StartMode", ""); appStartMode = new UBSetting(this, "App", "StartMode", "");
featureSliderPosition = new UBSetting(this, "Board", "FeatureSliderPosition", 40);
boardPenFineWidth = new UBSetting(this, "Board", "PenFineWidth", 1.5); boardPenFineWidth = new UBSetting(this, "Board", "PenFineWidth", 1.5);
boardPenMediumWidth = new UBSetting(this, "Board", "PenMediumWidth", 3.0); boardPenMediumWidth = new UBSetting(this, "Board", "PenMediumWidth", 3.0);
boardPenStrongWidth = new UBSetting(this, "Board", "PenStrongWidth", 8.0); boardPenStrongWidth = new UBSetting(this, "Board", "PenStrongWidth", 8.0);
......
...@@ -249,6 +249,8 @@ class UBSettings : public QObject ...@@ -249,6 +249,8 @@ class UBSettings : public QObject
UBSetting* appStartMode; UBSetting* appStartMode;
UBSetting* featureSliderPosition;
UBColorListSetting* boardPenLightBackgroundColors; UBColorListSetting* boardPenLightBackgroundColors;
UBColorListSetting* boardPenLightBackgroundSelectedColors; UBColorListSetting* boardPenLightBackgroundSelectedColors;
......
...@@ -386,7 +386,10 @@ void UBDesktopAnnotationController::goToUniboard() ...@@ -386,7 +386,10 @@ void UBDesktopAnnotationController::goToUniboard()
UBPlatformUtils::setDesktopMode(false); UBPlatformUtils::setDesktopMode(false);
UBDrawingController::drawingController()->setInDestopMode(false); UBDrawingController::drawingController()->setInDestopMode(false);
UBDrawingController::drawingController()->setDrawingMode(eDrawingMode_Vector);
if(UBStylusTool::Eraser != UBDrawingController::drawingController()->stylusTool()){
UBDrawingController::drawingController()->setDrawingMode(eDrawingMode_Vector);
}
emit restoreUniboard(); emit restoreUniboard();
} }
......
...@@ -1624,7 +1624,11 @@ void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*) ...@@ -1624,7 +1624,11 @@ void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*)
} }
items << pixmapItem; items << pixmapItem;
labels << tr("Page %1").arg(pageFromSceneIndex(i)); int pageIndex = pageFromSceneIndex(i);
if(pageIndex)
labels << tr("Page %1").arg(pageIndex);
else
labels << tr("Title page");
itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBDocumentContainer::pageFromSceneIndex(i)))); itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBDocumentContainer::pageFromSceneIndex(i))));
} }
......
...@@ -359,7 +359,7 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) ...@@ -359,7 +359,7 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
} }
} }
} }
else if (mOperationMode == Resizing) else if (mOperationMode == Resizing || mOperationMode == ResizingHorizontally)
{ {
mTranslateX = moveX; mTranslateX = moveX;
UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated()); UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated());
...@@ -675,19 +675,22 @@ void UBGraphicsDelegateFrame::positionHandles() ...@@ -675,19 +675,22 @@ void UBGraphicsDelegateFrame::positionHandles()
QVariant vLocked = delegated()->data(UBGraphicsItemData::ItemLocked); QVariant vLocked = delegated()->data(UBGraphicsItemData::ItemLocked);
bool isLocked = (vLocked.isValid() && vLocked.toBool()); bool isLocked = (vLocked.isValid() && vLocked.toBool());
bool bShowHorizontalResizers = ResizingHorizontally == mOperationMode;
mBottomRightResizeGripSvgItem->setVisible(!isLocked); bool bShowVerticalResizers = ResizingHorizontally != mOperationMode;
mBottomResizeGripSvgItem->setVisible(!isLocked); bool bShowAllResizers = Resizing == mOperationMode || Scaling == mOperationMode ;
mLeftResizeGripSvgItem->setVisible(!isLocked);
mRightResizeGripSvgItem->setVisible(!isLocked); mBottomRightResizeGripSvgItem->setVisible(!isLocked && bShowAllResizers);
mTopResizeGripSvgItem->setVisible(!isLocked); mBottomResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
mLeftResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
mRightResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
mTopResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
mRotateButton->setVisible(mDelegate->canRotate() && !isLocked); mRotateButton->setVisible(mDelegate->canRotate() && !isLocked);
mBottomRightResizeGrip->setVisible(!isLocked); mBottomRightResizeGrip->setVisible(!isLocked && bShowAllResizers);
mBottomResizeGrip->setVisible(!isLocked); mBottomResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
mLeftResizeGrip->setVisible(!isLocked); mLeftResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
mRightResizeGrip->setVisible(!isLocked); mRightResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
mTopResizeGrip->setVisible(!isLocked); mTopResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
if (isLocked) if (isLocked)
{ {
...@@ -714,9 +717,9 @@ UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF ...@@ -714,9 +717,9 @@ UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF
{ {
if(mDelegate->isLocked()) if(mDelegate->isLocked())
return None; return None;
else if (bottomRightResizeGripRect().contains(pos)) else if (bottomRightResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode)
return ResizeBottomRight; return ResizeBottomRight;
else if (bottomResizeGripRect().contains(pos)){ else if (bottomResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
if(mMirrorY){ if(mMirrorY){
return ResizeTop; return ResizeTop;
}else{ }else{
...@@ -738,7 +741,7 @@ UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF ...@@ -738,7 +741,7 @@ UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF
return ResizeRight; return ResizeRight;
} }
} }
else if (topResizeGripRect().contains(pos)){ else if (topResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
if(mMirrorY){ if(mMirrorY){
return ResizeBottom; return ResizeBottom;
}else{ }else{
......
...@@ -46,7 +46,7 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject ...@@ -46,7 +46,7 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
virtual void setAntiScale(qreal pAntiScale); virtual void setAntiScale(qreal pAntiScale);
enum OperationMode {Scaling, Resizing}; enum OperationMode {Scaling, Resizing, ResizingHorizontally};
void setOperationMode(OperationMode pMode) {mOperationMode = pMode;} void setOperationMode(OperationMode pMode) {mOperationMode = pMode;}
bool isResizing(){return mResizing;} bool isResizing(){return mResizing;}
......
...@@ -677,7 +677,8 @@ UBGraphicsToolBarItem::UBGraphicsToolBarItem(QGraphicsItem * parent) : ...@@ -677,7 +677,8 @@ UBGraphicsToolBarItem::UBGraphicsToolBarItem(QGraphicsItem * parent) :
mShifting(true), mShifting(true),
mVisible(false), mVisible(false),
mMinWidth(200), mMinWidth(200),
mInitialHeight(26) mInitialHeight(26),
mElementsPadding(2)
{ {
QRectF rect = this->rect(); QRectF rect = this->rect();
rect.setHeight(mInitialHeight); rect.setHeight(mInitialHeight);
...@@ -698,7 +699,7 @@ void UBGraphicsToolBarItem::positionHandles() ...@@ -698,7 +699,7 @@ void UBGraphicsToolBarItem::positionHandles()
foreach (QGraphicsItem* item, mItemsOnToolBar) foreach (QGraphicsItem* item, mItemsOnToolBar)
{ {
item->setPos(itemXOffset, 0); item->setPos(itemXOffset, 0);
itemXOffset += (item->boundingRect().width()); itemXOffset += (item->boundingRect().width()+mElementsPadding);
item->show(); item->show();
} }
} }
...@@ -1155,7 +1156,7 @@ void DelegateMediaControl::paint(QPainter *painter, ...@@ -1155,7 +1156,7 @@ void DelegateMediaControl::paint(QPainter *painter,
mLCDTimerArea.setWidth(rect().height()); mLCDTimerArea.setWidth(rect().height());
mSeecArea = rect(); mSeecArea = rect();
mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()); mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()-2);
path.addRoundedRect(mSeecArea, mSeecArea.height()/2, mSeecArea.height()/2); path.addRoundedRect(mSeecArea, mSeecArea.height()/2, mSeecArea.height()/2);
painter->fillPath(path, brush()); painter->fillPath(path, brush());
......
...@@ -128,6 +128,7 @@ class DelegateMediaControl: public QObject, public QGraphicsRectItem ...@@ -128,6 +128,7 @@ class DelegateMediaControl: public QObject, public QGraphicsRectItem
void positionHandles(); void positionHandles();
void updateTicker(qint64 time); void updateTicker(qint64 time);
void totalTimeChanged(qint64 newTotalTime); void totalTimeChanged(qint64 newTotalTime);
QSizeF lcdAreaSize(){return mLCDTimerArea.size();}
signals: signals:
void used(); void used();
...@@ -165,6 +166,7 @@ class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject ...@@ -165,6 +166,7 @@ class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject
int minWidth() { return mMinWidth; } int minWidth() { return mMinWidth; }
void positionHandles(); void positionHandles();
void update(); void update();
int getElementsPadding(){return mElementsPadding;}
private: private:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
...@@ -175,6 +177,7 @@ class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject ...@@ -175,6 +177,7 @@ class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject
bool mVisible; bool mVisible;
int mMinWidth; int mMinWidth;
int mInitialHeight; int mInitialHeight;
int mElementsPadding;
QList<QGraphicsItem*> mItemsOnToolBar; QList<QGraphicsItem*> mItemsOnToolBar;
}; };
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include "document/UBDocumentProxy.h" #include "document/UBDocumentProxy.h"
#include "core/UBApplication.h" #include "core/UBApplication.h"
#include "board/UBBoardController.h" #include "board/UBBoardController.h"
#include "frameworks/UBFileSystemUtils.h"
#include "core/memcheck.h" #include "core/memcheck.h"
bool UBGraphicsMediaItem::sIsMutedByDefault = false; bool UBGraphicsMediaItem::sIsMutedByDefault = false;
...@@ -56,6 +55,7 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte ...@@ -56,6 +55,7 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
if(mVideoWidget->sizeHint() == QSize(1,1)){ if(mVideoWidget->sizeHint() == QSize(1,1)){
mVideoWidget->resize(320,240); mVideoWidget->resize(320,240);
mVideoWidget->setMinimumSize(140,26);
} }
setWidget(mVideoWidget); setWidget(mVideoWidget);
haveLinkedImage = true; haveLinkedImage = true;
...@@ -67,8 +67,16 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte ...@@ -67,8 +67,16 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
mAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); mAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
mMediaObject->setTickInterval(1000); mMediaObject->setTickInterval(1000);
mAudioWidget = new QWidget(); mAudioWidget = new UBGraphicsMediaItem::UBAudioPresentationWidget();
mAudioWidget->resize(320,26); int borderSize = 0;
UBGraphicsMediaItem::UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBGraphicsMediaItem::UBAudioPresentationWidget*>(mAudioWidget);
if (pAudioWidget)
{
borderSize = pAudioWidget->borderSize();
}
mAudioWidget->resize(320,26+3*borderSize);
mAudioWidget->setMinimumSize(150,26+borderSize);
setWidget(mAudioWidget); setWidget(mAudioWidget);
haveLinkedImage = false; haveLinkedImage = false;
} }
...@@ -82,7 +90,10 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte ...@@ -82,7 +90,10 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
itemDelegate->init(); itemDelegate->init();
setDelegate(itemDelegate); setDelegate(itemDelegate);
mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); if (mediaType_Audio == mMediaType)
mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::ResizingHorizontally);
else
mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
...@@ -284,4 +295,4 @@ void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) ...@@ -284,4 +295,4 @@ void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
event->accept(); event->accept();
} }
\ No newline at end of file
...@@ -21,12 +21,54 @@ ...@@ -21,12 +21,54 @@
#include <phonon/VideoWidget> #include <phonon/VideoWidget>
#include "core/UBApplication.h" #include "core/UBApplication.h"
#include "board/UBBoardController.h" #include "board/UBBoardController.h"
#include "frameworks/UBFileSystemUtils.h"
class UBGraphicsMediaItem : public UBGraphicsProxyWidget class UBGraphicsMediaItem : public UBGraphicsProxyWidget
{ {
Q_OBJECT Q_OBJECT
public:
class UBAudioPresentationWidget : public QWidget
{
public:
UBAudioPresentationWidget(QWidget *parent = NULL)
:QWidget(parent)
, mBorderSize(10)
, mTitleSize(10)
{}
int borderSize()
{
return mBorderSize;
}
void setTitle(QString title = QString()){mTitle = title;}
QString getTitle(){return mTitle;}
private:
virtual void paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.fillRect(rect(), QBrush(Qt::black));
if (QString() != mTitle)
{
painter.setPen(QPen(Qt::white));
QRect titleRect = rect();
titleRect.setX(mBorderSize);
titleRect.setY(2);
titleRect.setHeight(15);
painter.drawText(titleRect, mTitle);
}
QWidget::paintEvent(event);
}
int mBorderSize;
int mTitleSize;
QString mTitle;
};
public: public:
typedef enum{ typedef enum{
mediaType_Video, mediaType_Video,
...@@ -81,6 +123,17 @@ public: ...@@ -81,6 +123,17 @@ public:
virtual UBItem* deepCopy() const; virtual UBItem* deepCopy() const;
virtual void setSourceUrl(const QUrl &pSourceUrl)
{
UBGraphicsMediaItem::UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBGraphicsMediaItem::UBAudioPresentationWidget*>(mAudioWidget);
if (pAudioWidget)
{
pAudioWidget->setTitle(UBFileSystemUtils::lastPathComponent(pSourceUrl.toLocalFile()));
}
UBItem::setSourceUrl(pSourceUrl);
}
public slots: public slots:
void toggleMute(); void toggleMute();
...@@ -118,15 +171,6 @@ private: ...@@ -118,15 +171,6 @@ private:
QPointF mMouseMovePos; QPointF mMouseMovePos;
bool haveLinkedImage; bool haveLinkedImage;
QGraphicsPixmapItem *mLinkedImage; QGraphicsPixmapItem *mLinkedImage;
}; };
class UBGraphicsUnitedMediaItem : public UBGraphicsMediaItem
{
public:
UBGraphicsUnitedMediaItem(const QUrl& pMediaFileUrl, QGraphicsItem *parent = 0);
};
#endif // UBGRAPHICSMEDIAITEM_H #endif // UBGRAPHICSMEDIAITEM_H
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "UBGraphicsMediaItem.h" #include "UBGraphicsMediaItem.h"
#include "UBGraphicsMediaItemDelegate.h" #include "UBGraphicsMediaItemDelegate.h"
#include "UBGraphicsDelegateFrame.h"
#include "UBGraphicsScene.h" #include "UBGraphicsScene.h"
...@@ -120,31 +121,48 @@ void UBGraphicsMediaItemDelegate::positionHandles() ...@@ -120,31 +121,48 @@ void UBGraphicsMediaItemDelegate::positionHandles()
{ {
UBGraphicsItemDelegate::positionHandles(); UBGraphicsItemDelegate::positionHandles();
qreal AntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());
UBGraphicsMediaItem *mediaItem = dynamic_cast<UBGraphicsMediaItem*>(mDelegated); UBGraphicsMediaItem *mediaItem = dynamic_cast<UBGraphicsMediaItem*>(mDelegated);
if (mediaItem) if (mediaItem)
{ {
if (mediaItem->getMediaType() != UBGraphicsMediaItem::mediaType_Audio) QRectF toolBarRect = mToolBarItem->rect();
{ if (mediaItem->getMediaType() == UBGraphicsMediaItem::mediaType_Video)
mToolBarItem->setPos(0, delegated()->boundingRect().height()-mToolBarItem->rect().height()*AntiScaleRatio); {
mToolBarItem->setScale(AntiScaleRatio); mToolBarItem->setPos(0, delegated()->boundingRect().height()-mToolBarItem->rect().height());
QRectF toolBarRect = mToolBarItem->rect(); // mToolBarItem->setScale(AntiScaleRatio);
toolBarRect.setWidth(delegated()->boundingRect().width()/AntiScaleRatio);
mToolBarItem->setRect(toolBarRect); toolBarRect.setWidth(delegated()->boundingRect().width());
} }
else else if (mediaItem->getMediaType() == UBGraphicsMediaItem::mediaType_Audio)
{ {
mToolBarItem->setPos(0, 0); int borderSize = 0;
UBGraphicsMediaItem::UBAudioPresentationWidget *audioWidget = dynamic_cast<UBGraphicsMediaItem::UBAudioPresentationWidget*>(delegated()->widget());
if (audioWidget)
borderSize = audioWidget->borderSize();
mToolBarItem->setPos(borderSize,delegated()->boundingRect().height()-(mToolBarItem->rect().height() + borderSize));
toolBarRect.setWidth((delegated()->boundingRect().width()-2*borderSize));
mToolBarItem->show(); mToolBarItem->show();
} }
mToolBarItem->setRect(toolBarRect);
} }
int toolBarMinimumWidth = 0;
int mediaItemWidth = mToolBarItem->boundingRect().width(); int mediaItemWidth = mToolBarItem->boundingRect().width();
foreach (DelegateButton* button, mButtons) foreach (DelegateButton* button, mButtons)
{ {
if (button->getSection() == Qt::TitleBarArea) if (button->getSection() == Qt::TitleBarArea)
mediaItemWidth -= button->boundingRect().width(); {
mediaItemWidth -= button->boundingRect().width() + mToolBarItem->getElementsPadding();
toolBarMinimumWidth += button->boundingRect().width() + mToolBarItem->getElementsPadding();
}
}
toolBarMinimumWidth += mToolBarItem->boundingRect().height();
UBGraphicsMediaItem::UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBGraphicsMediaItem::UBAudioPresentationWidget*>(delegated()->widget());
if (pAudioWidget)
{
pAudioWidget->setMinimumSize(toolBarMinimumWidth + (int)mMediaControl->lcdAreaSize().width() + (int)mMediaControl->rect().height(),26+pAudioWidget->borderSize());
} }
QRectF mediaItemRect = mMediaControl->rect(); QRectF mediaItemRect = mMediaControl->rect();
......
...@@ -153,10 +153,30 @@ void UBGraphicsProxyWidget::resize(const QSizeF & pSize) ...@@ -153,10 +153,30 @@ void UBGraphicsProxyWidget::resize(const QSizeF & pSize)
{ {
if (pSize != size()) if (pSize != size())
{ {
QGraphicsProxyWidget::setMaximumSize(pSize.width(), pSize.height()); qreal sizeX = 0;
QGraphicsProxyWidget::resize(pSize.width(), pSize.height()); qreal sizeY = 0;
if (widget())
{
QSizeF minimumItemSize(widget()->minimumSize());
if (minimumItemSize.width() > pSize.width())
sizeX = minimumItemSize.width();
else
sizeX = pSize.width();
if (minimumItemSize.height() > pSize.height())
sizeY = minimumItemSize.height();
else
sizeY = pSize.height();
}
QSizeF size(sizeX, sizeY);
QGraphicsProxyWidget::setMaximumSize(size.width(), size.height());
QGraphicsProxyWidget::resize(size.width(), size.height());
if (widget()) if (widget())
widget()->resize(pSize.width(), pSize.height()); widget()->resize(size.width(), size.height());
if (mDelegate) if (mDelegate)
mDelegate->positionHandles(); mDelegate->positionHandles();
if (scene()) if (scene())
......
...@@ -779,7 +779,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) ...@@ -779,7 +779,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
if (mShouldUseOMP) if (mShouldUseOMP)
{ {
//#pragma omp parallel for #pragma omp parallel for
for (int i = 0; i < collidItemsSize; i++) for (int i = 0; i < collidItemsSize; i++)
{ {
UBGraphicsPolygonItem *collidingPolygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(collidItems.at(i)); UBGraphicsPolygonItem *collidingPolygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(collidItems.at(i));
...@@ -789,7 +789,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) ...@@ -789,7 +789,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
if(eraserInnerRect.contains(collidingPolygonItem->boundingRect())) if(eraserInnerRect.contains(collidingPolygonItem->boundingRect()))
{ {
//#pragma omp critical #pragma omp critical
// Put the entire polygon into the remove list // Put the entire polygon into the remove list
toBeRemovedItems << collidingPolygonItem; toBeRemovedItems << collidingPolygonItem;
} }
...@@ -826,7 +826,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) ...@@ -826,7 +826,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
} }
else */if (croppedPathSimplified.isEmpty()) else */if (croppedPathSimplified.isEmpty())
{ {
//#pragma omp critical #pragma omp critical
// Put the entire polygon into the remove list if the eraser removes all its visible content // Put the entire polygon into the remove list if the eraser removes all its visible content
toBeRemovedItems << collidingPolygonItem; toBeRemovedItems << collidingPolygonItem;
} }
...@@ -837,7 +837,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) ...@@ -837,7 +837,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
foreach(const QPolygonF &pol, croppedPathSimplified.toFillPolygons()) foreach(const QPolygonF &pol, croppedPathSimplified.toFillPolygons())
{ {
UBGraphicsPolygonItem* croppedPolygonItem = collidingPolygonItem->deepCopy(pol); UBGraphicsPolygonItem* croppedPolygonItem = collidingPolygonItem->deepCopy(pol);
//#pragma omp critical #pragma omp critical
if(NULL != pGroup){ if(NULL != pGroup){
croppedPolygonItem->setStrokesGroup(pGroup); croppedPolygonItem->setStrokesGroup(pGroup);
//pGroup->addToGroup(croppedPolygonItem); //pGroup->addToGroup(croppedPolygonItem);
...@@ -845,7 +845,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) ...@@ -845,7 +845,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
// Add this new polygon to the 'added' list // Add this new polygon to the 'added' list
toBeAddedItems << croppedPolygonItem; toBeAddedItems << croppedPolygonItem;
} }
//#pragma omp critical #pragma omp critical
// Remove the original polygonitem because it has been replaced by many smaller polygons // Remove the original polygonitem because it has been replaced by many smaller polygons
toBeRemovedItems << collidingPolygonItem; toBeRemovedItems << collidingPolygonItem;
} }
...@@ -902,7 +902,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) ...@@ -902,7 +902,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
} }
} }
if(eDrawingMode_Vector == UBDrawingController::drawingController()->drawingMode()){ if(eDrawingMode_Vector == DRAWING_MODE && !UBDrawingController::drawingController()->isInDesktopMode()){
foreach(QGraphicsItem* item, toBeRemovedItems){ foreach(QGraphicsItem* item, toBeRemovedItems){
UBGraphicsPolygonItem* poly = dynamic_cast<UBGraphicsPolygonItem*>(item); UBGraphicsPolygonItem* poly = dynamic_cast<UBGraphicsPolygonItem*>(item);
if(NULL != poly){ if(NULL != poly){
...@@ -920,7 +920,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) ...@@ -920,7 +920,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
mRemovedItems += toBeRemovedItems; mRemovedItems += toBeRemovedItems;
} }
if(eDrawingMode_Vector == UBDrawingController::drawingController()->drawingMode()){ if(eDrawingMode_Vector == DRAWING_MODE && !UBDrawingController::drawingController()->isInDesktopMode()){
foreach(QGraphicsItem* item, toBeAddedItems){ foreach(QGraphicsItem* item, toBeAddedItems){
UBGraphicsPolygonItem* poly = dynamic_cast<UBGraphicsPolygonItem*>(item); UBGraphicsPolygonItem* poly = dynamic_cast<UBGraphicsPolygonItem*>(item);
if(NULL != poly && NULL != poly->strokesGroup()){ if(NULL != poly && NULL != poly->strokesGroup()){
......
...@@ -78,14 +78,14 @@ bool UBFileSystemUtils::isAZipFile(QString &filePath) ...@@ -78,14 +78,14 @@ bool UBFileSystemUtils::isAZipFile(QString &filePath)
return result; return result;
} }
bool UBFileSystemUtils::copyFile(const QString &source, const QString &Destination, bool overwrite) bool UBFileSystemUtils::copyFile(const QString &source, const QString &destination, bool overwrite)
{ {
if (!QFile::exists(source)) { if (!QFile::exists(source)) {
qDebug() << "file" << source << "does not present in fs"; qDebug() << "file" << source << "does not present in fs";
return false; return false;
} }
QString normalizedDestination = Destination; QString normalizedDestination = destination;
if (QFile::exists(normalizedDestination)) { if (QFile::exists(normalizedDestination)) {
if (QFileInfo(normalizedDestination).isFile() && overwrite) { if (QFileInfo(normalizedDestination).isFile() && overwrite) {
QFile::remove(normalizedDestination); QFile::remove(normalizedDestination);
...@@ -103,6 +103,15 @@ bool UBFileSystemUtils::copyFile(const QString &source, const QString &Destinati ...@@ -103,6 +103,15 @@ bool UBFileSystemUtils::copyFile(const QString &source, const QString &Destinati
return QFile::copy(source, normalizedDestination); return QFile::copy(source, normalizedDestination);
} }
bool UBFileSystemUtils::copy(const QString &source, const QString &destination, bool overwrite)
{
if (QFileInfo(source).isDir()) {
return copyDir(source, destination);
} else {
return copyFile(source, destination, overwrite);
}
}
bool UBFileSystemUtils::deleteFile(const QString &path) bool UBFileSystemUtils::deleteFile(const QString &path)
{ {
QFile f(path); QFile f(path);
......
...@@ -49,6 +49,10 @@ class UBFileSystemUtils ...@@ -49,6 +49,10 @@ class UBFileSystemUtils
static bool moveDir(const QString& pSourceDirPath, const QString& pTargetDirPath); static bool moveDir(const QString& pSourceDirPath, const QString& pTargetDirPath);
static bool copyFile(const QString &source, const QString &destination, bool overwrite = false);
static bool copy(const QString &source, const QString &Destination, bool overwrite = false);
static QString cleanName(const QString& name); static QString cleanName(const QString& name);
static QString digitFileFormat(const QString& s, int digit); static QString digitFileFormat(const QString& s, int digit);
...@@ -73,8 +77,6 @@ class UBFileSystemUtils ...@@ -73,8 +77,6 @@ class UBFileSystemUtils
static bool isAZipFile(QString &filePath); static bool isAZipFile(QString &filePath);
static bool copyFile(const QString &source, const QString &Destination, bool overwrite = false);
static bool deleteFile(const QString &path); static bool deleteFile(const QString &path);
/** /**
* Compress a source directory in a zip file. * Compress a source directory in a zip file.
......
...@@ -231,7 +231,6 @@ void UBActionPalette::mouseReleaseEvent(QMouseEvent * event) ...@@ -231,7 +231,6 @@ void UBActionPalette::mouseReleaseEvent(QMouseEvent * event)
void UBActionPalette::actionChanged() void UBActionPalette::actionChanged()
{ {
emit itemOnActionPaletteChanged();
for(int i = 0; i < mActions.length() && i < mButtons.length(); i++) for(int i = 0; i < mActions.length() && i < mButtons.length(); i++)
{ {
mButtons.at(i)->setVisible(mActions.at(i)->isVisible()); mButtons.at(i)->setVisible(mActions.at(i)->isVisible());
......
...@@ -61,7 +61,6 @@ class UBActionPalette : public UBFloatingPalette ...@@ -61,7 +61,6 @@ class UBActionPalette : public UBFloatingPalette
void closed(); void closed();
void buttonGroupClicked(int id); void buttonGroupClicked(int id);
void customMouseReleased(); void customMouseReleased();
void itemOnActionPaletteChanged();
protected: protected:
virtual void paintEvent(QPaintEvent *event); virtual void paintEvent(QPaintEvent *event);
......
...@@ -44,3 +44,8 @@ UBDockTeacherGuideWidget::~UBDockTeacherGuideWidget() ...@@ -44,3 +44,8 @@ UBDockTeacherGuideWidget::~UBDockTeacherGuideWidget()
DELETEPTR(mpTeacherGuideWidget); DELETEPTR(mpTeacherGuideWidget);
DELETEPTR(mpLayout); DELETEPTR(mpLayout);
} }
UBTeacherGuideWidget* UBDockTeacherGuideWidget::teacherGuideWidget()
{
return mpTeacherGuideWidget;
}
...@@ -31,6 +31,8 @@ public: ...@@ -31,6 +31,8 @@ public:
bool visibleInMode(eUBDockPaletteWidgetMode mode){ return mode == eUBDockPaletteWidget_BOARD; } bool visibleInMode(eUBDockPaletteWidgetMode mode){ return mode == eUBDockPaletteWidget_BOARD; }
UBTeacherGuideWidget* teacherGuideWidget();
private: private:
QVBoxLayout* mpLayout; QVBoxLayout* mpLayout;
UBTeacherGuideWidget* mpTeacherGuideWidget; UBTeacherGuideWidget* mpTeacherGuideWidget;
......
...@@ -86,7 +86,9 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source) ...@@ -86,7 +86,9 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source)
{ {
const QPixmap* pix = source->pageAt(i); const QPixmap* pix = source->pageAt(i);
UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i); UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i);
UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(tr("Page %0").arg(UBDocumentContainer::pageFromSceneIndex(i))); int pageIndex = UBDocumentContainer::pageFromSceneIndex(i);
QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex);
UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(label);
UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem); UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem);
thumbWithText.setBorder(border()); thumbWithText.setBorder(border());
......
#include "UBFeaturesActionBar.h" #include "UBFeaturesActionBar.h"
#include "core/memcheck.h" #include "core/memcheck.h"
#include "gui/UBFeaturesWidget.h"
UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWidget* parent, const char* name ) : QWidget (parent) UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWidget* parent, const char* name ) : QWidget (parent)
, featuresController(controller) , featuresController(controller)
...@@ -8,6 +9,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid ...@@ -8,6 +9,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
, mLayout(NULL) , mLayout(NULL)
, mpFavoriteAction(NULL) , mpFavoriteAction(NULL)
, mpSocialAction(NULL) , mpSocialAction(NULL)
, mpRescanModelAction(NULL)
, mpDeleteAction(NULL) , mpDeleteAction(NULL)
, mpSearchAction(NULL) , mpSearchAction(NULL)
, mpCloseAction(NULL) , mpCloseAction(NULL)
...@@ -15,6 +17,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid ...@@ -15,6 +17,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
, mpNewFolderAction(NULL) , mpNewFolderAction(NULL)
, mpFavoriteBtn(NULL) , mpFavoriteBtn(NULL)
, mpSocialBtn(NULL) , mpSocialBtn(NULL)
, mpRescanModelBtn(NULL)
, mpDeleteBtn(NULL) , mpDeleteBtn(NULL)
, mpCloseBtn(NULL) , mpCloseBtn(NULL)
, mpRemoveFavoriteBtn(NULL) , mpRemoveFavoriteBtn(NULL)
...@@ -38,6 +41,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid ...@@ -38,6 +41,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
mpFavoriteAction = new QAction(QIcon(":/images/libpalette/miniFavorite.png"), tr("Add to favorites"), this); mpFavoriteAction = new QAction(QIcon(":/images/libpalette/miniFavorite.png"), tr("Add to favorites"), this);
mpSocialAction = new QAction(QIcon(":/images/libpalette/social.png"), tr("Share"), this); mpSocialAction = new QAction(QIcon(":/images/libpalette/social.png"), tr("Share"), this);
mpSearchAction = new QAction(QIcon(":/images/libpalette/miniSearch.png"), tr("Search"), this); mpSearchAction = new QAction(QIcon(":/images/libpalette/miniSearch.png"), tr("Search"), this);
mpRescanModelAction = new QAction(QIcon(":/images/cursors/rotate.png"), tr("Rescan file system"), this);
mpDeleteAction = new QAction(QIcon(":/images/libpalette/miniTrash.png"), tr("Delete"), this); mpDeleteAction = new QAction(QIcon(":/images/libpalette/miniTrash.png"), tr("Delete"), this);
mpCloseAction = new QAction(QIcon(":/images/close.svg"), tr("Back to folder"), this); mpCloseAction = new QAction(QIcon(":/images/close.svg"), tr("Back to folder"), this);
mpRemoveFavorite = new QAction(QIcon(":/images/libpalette/trash_favorite.svg"), tr("Remove from favorites"), this); mpRemoveFavorite = new QAction(QIcon(":/images/libpalette/trash_favorite.svg"), tr("Remove from favorites"), this);
...@@ -46,6 +50,10 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid ...@@ -46,6 +50,10 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
// Create the buttons // Create the buttons
mpFavoriteBtn = new UBActionButton(this, mpFavoriteAction); mpFavoriteBtn = new UBActionButton(this, mpFavoriteAction);
mpSocialBtn = new UBActionButton(this, mpSocialAction); mpSocialBtn = new UBActionButton(this, mpSocialAction);
//mpSearchBtn = new UBActionButton(this, mpSearchAction);
mpRescanModelBtn = new UBActionButton(this, mpRescanModelAction);
mpDeleteBtn = new UBActionButton(this, mpDeleteAction); mpDeleteBtn = new UBActionButton(this, mpDeleteAction);
mpCloseBtn = new UBActionButton(this, mpCloseAction); mpCloseBtn = new UBActionButton(this, mpCloseAction);
mpRemoveFavoriteBtn = new UBActionButton(this, mpRemoveFavorite); mpRemoveFavoriteBtn = new UBActionButton(this, mpRemoveFavorite);
...@@ -77,14 +85,17 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid ...@@ -77,14 +85,17 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
connect(mSearchBar, SIGNAL(textChanged(QString)), this, SLOT(onSearchTextChanged(QString))); connect(mSearchBar, SIGNAL(textChanged(QString)), this, SLOT(onSearchTextChanged(QString)));
connect(mpNewFolderAction, SIGNAL(triggered()), this, SLOT(onActionNewFolder())); connect(mpNewFolderAction, SIGNAL(triggered()), this, SLOT(onActionNewFolder()));
connect(mpRemoveFavorite, SIGNAL(triggered()), this, SLOT(onActionRemoveFavorite())); connect(mpRemoveFavorite, SIGNAL(triggered()), this, SLOT(onActionRemoveFavorite()));
connect(mpRescanModelAction, SIGNAL(triggered()), this , SLOT(onActionRescanModel()));
connect(mpDeleteAction,SIGNAL(triggered()), this, SLOT(onActionTrash())); connect(mpDeleteAction,SIGNAL(triggered()), this, SLOT(onActionTrash()));
// Build the default toolbar // Build the default toolbar
mLayout->addWidget(mpFavoriteBtn); mLayout->addWidget(mpFavoriteBtn);
mLayout->addWidget(mpSocialBtn); mLayout->addWidget(mpSocialBtn);
mLayout->addWidget(mpNewFolderBtn); mLayout->addWidget(mpNewFolderBtn);
mLayout->addWidget(mSearchBar); mLayout->addWidget(mSearchBar);
//mLayout->addWidget(mpSearchBtn); //mLayout->addWidget(mpSearchBtn);
mLayout->addWidget(mpRescanModelBtn);
mLayout->addWidget(mpDeleteBtn); mLayout->addWidget(mpDeleteBtn);
mLayout->addWidget(mpCloseBtn); mLayout->addWidget(mpCloseBtn);
mLayout->addWidget(mpRemoveFavoriteBtn); mLayout->addWidget(mpRemoveFavoriteBtn);
...@@ -113,6 +124,7 @@ void UBFeaturesActionBar::setButtons() ...@@ -113,6 +124,7 @@ void UBFeaturesActionBar::setButtons()
mpNewFolderBtn->show(); mpNewFolderBtn->show();
mpNewFolderBtn->setEnabled(true); mpNewFolderBtn->setEnabled(true);
mpDeleteBtn->setEnabled(true); mpDeleteBtn->setEnabled(true);
mpRescanModelBtn->show();
break; break;
case IN_ROOT: case IN_ROOT:
mpFavoriteBtn->show(); mpFavoriteBtn->show();
...@@ -124,6 +136,7 @@ void UBFeaturesActionBar::setButtons() ...@@ -124,6 +136,7 @@ void UBFeaturesActionBar::setButtons()
mpNewFolderBtn->show(); mpNewFolderBtn->show();
mpNewFolderBtn->setEnabled(false); mpNewFolderBtn->setEnabled(false);
mpDeleteBtn->setEnabled(false); mpDeleteBtn->setEnabled(false);
mpRescanModelBtn->show();
break; break;
case IN_PROPERTIES: case IN_PROPERTIES:
mpFavoriteBtn->show(); mpFavoriteBtn->show();
...@@ -134,6 +147,7 @@ void UBFeaturesActionBar::setButtons() ...@@ -134,6 +147,7 @@ void UBFeaturesActionBar::setButtons()
mpCloseBtn->hide(); mpCloseBtn->hide();
mpRemoveFavoriteBtn->hide(); mpRemoveFavoriteBtn->hide();
mpNewFolderBtn->hide(); mpNewFolderBtn->hide();
mpRescanModelBtn->hide();
break; break;
case IN_FAVORITE: case IN_FAVORITE:
mpFavoriteBtn->hide(); mpFavoriteBtn->hide();
...@@ -144,6 +158,7 @@ void UBFeaturesActionBar::setButtons() ...@@ -144,6 +158,7 @@ void UBFeaturesActionBar::setButtons()
mpCloseBtn->hide(); mpCloseBtn->hide();
mpRemoveFavoriteBtn->show(); mpRemoveFavoriteBtn->show();
mpNewFolderBtn->hide(); mpNewFolderBtn->hide();
mpRescanModelBtn->hide();
break; break;
case IN_TRASH: case IN_TRASH:
mpFavoriteBtn->hide(); mpFavoriteBtn->hide();
...@@ -156,6 +171,7 @@ void UBFeaturesActionBar::setButtons() ...@@ -156,6 +171,7 @@ void UBFeaturesActionBar::setButtons()
mpCloseBtn->hide(); mpCloseBtn->hide();
//mpRemoveFavoriteBtn->show(); //mpRemoveFavoriteBtn->show();
mpNewFolderBtn->hide(); mpNewFolderBtn->hide();
mpRescanModelBtn->hide();
break; break;
default: default:
break; break;
...@@ -187,48 +203,57 @@ void UBFeaturesActionBar::onActionTrash() ...@@ -187,48 +203,57 @@ void UBFeaturesActionBar::onActionTrash()
{ {
emit deleteSelectedElements(); emit deleteSelectedElements();
} }
void UBFeaturesActionBar::onActionRescanModel()
/*
void UBFeaturesActionBar::dragMoveEvent(QDragMoveEvent *event)
{ {
event->acceptProposedAction(); emit rescanModel();
} }
*/
void UBFeaturesActionBar::dragEnterEvent( QDragEnterEvent *event ) void UBFeaturesActionBar::dragEnterEvent( QDragEnterEvent *event )
{ {
if (event->mimeData()->hasFormat("text/uri-list")) const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
{ if (fMimeData) {
event->acceptProposedAction(); event->acceptProposedAction();
} } else {
event->ignore();
}
} }
void UBFeaturesActionBar::dropEvent( QDropEvent *event ) void UBFeaturesActionBar::dropEvent(QDropEvent *event)
{ {
QWidget *dest = childAt( event->pos() ); const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
if ( dest == mpDeleteBtn )
{ if (!fMimeData) {
QList <QUrl> urls = event->mimeData()->urls(); qWarning() << "data came from not supported widget";
foreach ( QUrl url, urls ) event->ignore();
{ return;
if ( !UBFeaturesController::isDeletable( url ) ) }
return;
} QWidget *dest = childAt(event->pos());
event->setDropAction( Qt::MoveAction ); if (dest == mpDeleteBtn) {
QList<UBFeature> featuresList = fMimeData->features();
foreach (UBFeature curFeature, featuresList) {
if (!curFeature.isDeletable()) {
qWarning() << "Undeletable feature found, stopping deleting process";
event->ignore();
return;
}
}
event->setDropAction(Qt::MoveAction);
event->accept(); event->accept();
emit deleteElements( *event->mimeData() );
} emit deleteElements(fMimeData);
else if ( dest == mpFavoriteBtn )
{ } else if (dest == mpFavoriteBtn) {
event->setDropAction( Qt::CopyAction ); event->setDropAction( Qt::CopyAction);
event->accept(); event->accept();
emit addToFavorite( *event->mimeData() );
} emit addToFavorite(fMimeData);
else if ( dest == mpRemoveFavoriteBtn )
{ } else if (dest == mpRemoveFavoriteBtn) {
event->setDropAction( Qt::MoveAction ); event->setDropAction( Qt::MoveAction );
event->accept(); event->accept();
emit removeFromFavorite( *event->mimeData() );
emit removeFromFavorite(fMimeData);
} }
} }
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include "UBLibActionBar.h" #include "UBLibActionBar.h"
#include "board/UBFeaturesController.h" #include "board/UBFeaturesController.h"
class UBFeaturesMimeData;
enum UBFeaturesActionBarState enum UBFeaturesActionBarState
{ {
IN_ROOT, IN_ROOT,
...@@ -24,25 +26,30 @@ public: ...@@ -24,25 +26,30 @@ public:
~UBFeaturesActionBar(); ~UBFeaturesActionBar();
void setCurrentState( UBFeaturesActionBarState state ); void setCurrentState( UBFeaturesActionBarState state );
signals: signals:
void searchElement(const QString &text); void searchElement(const QString &text);
void newFolderToCreate(); void newFolderToCreate();
void deleteElements( const QMimeData &data ); void deleteElements(const UBFeaturesMimeData *data);
void addToFavorite( const QMimeData &data ); void addToFavorite(const UBFeaturesMimeData *data);
void removeFromFavorite( const QMimeData &data ); void removeFromFavorite(const UBFeaturesMimeData *data);
void addElementsToFavorite(); void addElementsToFavorite();
void removeElementsFromFavorite(); void removeElementsFromFavorite();
void deleteSelectedElements(); void deleteSelectedElements();
void rescanModel();
private slots: private slots:
void onSearchTextChanged(QString txt); void onSearchTextChanged(QString txt);
void onActionNewFolder(); void onActionNewFolder();
void onActionFavorite(); void onActionFavorite();
void onActionRemoveFavorite(); void onActionRemoveFavorite();
void onActionTrash(); void onActionTrash();
void onActionRescanModel();
protected: protected:
//void dragMoveEvent(QDragMoveEvent *event); void dragEnterEvent( QDragEnterEvent *event );
void dragEnterEvent( QDragEnterEvent *event );
void dropEvent( QDropEvent *event ); void dropEvent( QDropEvent *event );
private: private:
void setButtons(); void setButtons();
UBFeaturesController *featuresController; UBFeaturesController *featuresController;
...@@ -56,6 +63,7 @@ private: ...@@ -56,6 +63,7 @@ private:
QHBoxLayout* mLayout; QHBoxLayout* mLayout;
QAction* mpFavoriteAction; QAction* mpFavoriteAction;
QAction* mpSocialAction; QAction* mpSocialAction;
QAction* mpRescanModelAction;
QAction* mpDeleteAction; QAction* mpDeleteAction;
QAction* mpSearchAction; QAction* mpSearchAction;
QAction* mpCloseAction; QAction* mpCloseAction;
...@@ -63,13 +71,11 @@ private: ...@@ -63,13 +71,11 @@ private:
QAction* mpNewFolderAction; QAction* mpNewFolderAction;
UBActionButton* mpFavoriteBtn; UBActionButton* mpFavoriteBtn;
UBActionButton* mpSocialBtn; UBActionButton* mpSocialBtn;
UBActionButton* mpRescanModelBtn;
UBActionButton* mpDeleteBtn; UBActionButton* mpDeleteBtn;
//UBActionButton* mpSearchBtn;
UBActionButton* mpCloseBtn; UBActionButton* mpCloseBtn;
UBActionButton* mpRemoveFavoriteBtn; UBActionButton* mpRemoveFavoriteBtn;
UBActionButton* mpNewFolderBtn; UBActionButton* mpNewFolderBtn;
}; };
#endif
#endif
\ No newline at end of file
This diff is collapsed.
...@@ -16,13 +16,12 @@ ...@@ -16,13 +16,12 @@
#include <QDropEvent> #include <QDropEvent>
#include "UBDockPaletteWidget.h" #include "UBDockPaletteWidget.h"
//#include "UBLibActionBar.h" #include "core/UBSettings.h"
#include "board/UBFeaturesController.h" #include "board/UBFeaturesController.h"
#include "api/UBWidgetUniboardAPI.h" #include "api/UBWidgetUniboardAPI.h"
#include "UBFeaturesActionBar.h" #include "UBFeaturesActionBar.h"
#include "UBRubberBand.h" #include "UBRubberBand.h"
#define THUMBNAIL_WIDTH 400 #define THUMBNAIL_WIDTH 400
#define ID_LISTVIEW 0 #define ID_LISTVIEW 0
#define ID_PROPERTIES 1 #define ID_PROPERTIES 1
...@@ -41,6 +40,8 @@ class UBFeatureProperties; ...@@ -41,6 +40,8 @@ class UBFeatureProperties;
class UBFeatureItemButton; class UBFeatureItemButton;
class UBFeaturesListView; class UBFeaturesListView;
class UBFeaturesWebView; class UBFeaturesWebView;
class UBFeaturesNavigatorWidget;
class UBFeaturesMimeData;
class UBFeaturesWidget : public UBDockPaletteWidget class UBFeaturesWidget : public UBDockPaletteWidget
{ {
...@@ -54,82 +55,100 @@ public: ...@@ -54,82 +55,100 @@ public:
return mode == eUBDockPaletteWidget_BOARD return mode == eUBDockPaletteWidget_BOARD
|| mode == eUBDockPaletteWidget_DESKTOP; || mode == eUBDockPaletteWidget_DESKTOP;
} }
UBFeaturesController * getFeaturesController()const { return controller; }; UBFeaturesController * getFeaturesController() const { return controller; }
static const int minThumbnailSize = 20; static const int minThumbnailSize = 20;
static const int maxThumbnailSize = 100; static const int maxThumbnailSize = 100;
static const int defaultThumbnailSize = 40; static const int defaultThumbnailSize = 40;
private:
void switchToListView();
void switchToProperties();
void switchToWebView();
UBFeaturesController *controller;
UBFeaturesItemDelegate *itemDelegate;
UBFeaturesPathItemDelegate *pathItemDelegate;
UBFeaturesModel *featuresModel;
UBFeaturesProxyModel *featuresProxyModel;
UBFeaturesSearchProxyModel *featuresSearchModel;
UBFeaturesPathProxyModel *featuresPathModel;
UBFeaturesListView *featuresListView;
UBFeaturesListView *pathListView;
QSlider *thumbSlider;
QVBoxLayout *layout;
//UBFeaturesPathViewer *pathViewer;
//QGraphicsScene *pathScene;
UBFeaturesActionBar *mActionBar;
UBFeatureProperties *featureProperties;
UBFeaturesWebView *webView;
QStackedWidget *stackedWidget;
int currentStackedWidget;
UBDownloadHttpFile* imageGatherer; public:
int scrollbarHorisontalPadding() const { return 10;}
int scrollbarVerticalIndent() const { return 0;}
private slots: private slots:
void onPreviewLoaded(int id, bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground); void onPreviewLoaded(int id, bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
void currentSelected( const QModelIndex & ); void currentSelected( const QModelIndex & );
//void currentPathChanged(const QString &); void searchStarted( const QString & );
void currentPathChanged( const QModelIndex & ); void createNewFolder();
void searchStarted( const QString & ); void deleteElements( const UBFeaturesMimeData * );
void createNewFolder(); void addToFavorite( const UBFeaturesMimeData *);
void deleteElements( const QMimeData & ); void removeFromFavorite( const UBFeaturesMimeData * );
void addToFavorite( const QMimeData & ); void onDisplayMetadata( QMap<QString,QString> );
void removeFromFavorite( const QMimeData & );
void thumbnailSizeChanged( int );
void onDisplayMetadata( QMap<QString,QString> );
void onAddDownloadedFileToLibrary(bool, QUrl, QString, QByteArray); void onAddDownloadedFileToLibrary(bool, QUrl, QString, QByteArray);
void addElementsToFavorite(); void addElementsToFavorite();
void removeElementsFromFavorite(); void removeElementsFromFavorite();
void deleteSelectedElements(); void deleteSelectedElements();
void rescanModel();
private:
void switchToListView();
void switchToProperties();
void switchToWebView();
private:
UBFeaturesController *controller;
UBFeaturesNavigatorWidget *mNavigator;
UBFeaturesListView *pathListView;
QVBoxLayout *layout;
UBFeaturesActionBar *mActionBar;
UBFeatureProperties *featureProperties;
UBFeaturesWebView *webView;
QStackedWidget *stackedWidget;
int currentStackedWidget;
UBDownloadHttpFile* imageGatherer;
protected:
bool eventFilter(QObject *target, QEvent *event);
}; };
class UBFeaturesMimeData : public QMimeData
{
Q_OBJECT
public:
virtual QStringList formats() const;
QList<UBFeature> features() const {return mFeatures;}
void setFeatures(const QList<UBFeature> &fList) {mFeatures = fList;}
private:
QList<UBFeature> mFeatures;
};
class UBFeaturesListView : public QListView class UBFeaturesListView : public QListView
{ {
Q_OBJECT Q_OBJECT
public: public:
UBFeaturesListView( QWidget* parent=0, const char* name="UBFeaturesListView" ); UBFeaturesListView( QWidget* parent=0, const char* name="UBFeaturesListView" );
virtual ~UBFeaturesListView() {;} virtual ~UBFeaturesListView() {;}
protected: protected:
virtual void dragEnterEvent( QDragEnterEvent *event ); virtual void dragEnterEvent( QDragEnterEvent *event );
virtual void dropEvent( QDropEvent *event ); virtual void dropEvent( QDropEvent *event );
virtual void dragMoveEvent( QDragMoveEvent *event ); virtual void dragMoveEvent( QDragMoveEvent *event );
/*virtual void mousePressEvent( QMouseEvent *event );
virtual void mouseMoveEvent( QMouseEvent *event ); private slots:
virtual void mouseReleaseEvent( QMouseEvent *event );*/ void thumbnailSizeChanged(int);
};
// class created to have the same style for slider and QListView itself
class UBFeaturesNavigatorWidget: public QWidget
{
Q_OBJECT
public:
UBFeaturesNavigatorWidget(QWidget *parent, const char* name = "");
UBFeaturesListView *listView() {return mListView;}
void setSliderPosition(int pValue);
private: private:
//UBRubberBand *rubberBand; UBFeaturesListView *mListView;
//QPoint rubberOrigin; QSlider *mListSlder;
}; };
class UBFeaturesWebView : public QWidget class UBFeaturesWebView : public QWidget
{ {
Q_OBJECT Q_OBJECT
...@@ -177,9 +196,9 @@ private: ...@@ -177,9 +196,9 @@ private:
QVBoxLayout* mpLayout; QVBoxLayout* mpLayout;
QHBoxLayout* mpButtonLayout; QHBoxLayout* mpButtonLayout;
UBFeatureItemButton* mpAddPageButton; UBFeatureItemButton *mpAddPageButton;
UBFeatureItemButton* mpAddToLibButton; UBFeatureItemButton *mpAddToLibButton;
UBFeatureItemButton* mpSetAsBackgroundButton; UBFeatureItemButton *mpSetAsBackgroundButton;
QLabel* mpObjInfoLabel; QLabel* mpObjInfoLabel;
QTreeWidget* mpObjInfos; QTreeWidget* mpObjInfos;
QLabel* mpThumbnail; QLabel* mpThumbnail;
...@@ -189,9 +208,6 @@ private: ...@@ -189,9 +208,6 @@ private:
QTreeWidgetItem* mpItem; QTreeWidgetItem* mpItem;
}; };
class UBFeatureItemButton : public QPushButton class UBFeatureItemButton : public QPushButton
{ {
public: public:
...@@ -202,13 +218,18 @@ public: ...@@ -202,13 +218,18 @@ public:
class UBFeaturesModel : public QAbstractListModel class UBFeaturesModel : public QAbstractListModel
{ {
Q_OBJECT Q_OBJECT
signals:
void dataRestructured();
public: public:
UBFeaturesModel( QObject *parent = 0 ) : QAbstractListModel(parent) {;} UBFeaturesModel(QList<UBFeature> *pFeaturesList, QObject *parent = 0) : QAbstractListModel(parent), featuresList(pFeaturesList) {;}
virtual ~UBFeaturesModel(){;} virtual ~UBFeaturesModel(){;}
void addItem( const UBFeature &item ); void addItem( const UBFeature &item );
void deleteFavoriteItem( const QString &path ); void deleteFavoriteItem( const QString &path );
void deleteItem( const QString &path ); void deleteItem( const QString &path );
void deleteItem(const UBFeature &feature);
QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
QMimeData *mimeData( const QModelIndexList &indexes ) const; QMimeData *mimeData( const QModelIndexList &indexes ) const;
...@@ -220,10 +241,11 @@ public: ...@@ -220,10 +241,11 @@ public:
bool removeRow(int row, const QModelIndex &parent = QModelIndex()); bool removeRow(int row, const QModelIndex &parent = QModelIndex());
//bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); //bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
//bool insertRow(int row, const QModelIndex &parent = QModelIndex()); //bool insertRow(int row, const QModelIndex &parent = QModelIndex());
void moveData(const UBFeature &source, const UBFeature &destination, Qt::DropAction action, bool deleteManualy = false);
Qt::DropActions supportedDropActions() const { return Qt::MoveAction | Qt::CopyAction; } Qt::DropActions supportedDropActions() const { return Qt::MoveAction | Qt::CopyAction; }
// void setFeaturesList(QList <UBFeature> *flist ) { featuresList = flist; }
void setFeaturesList(QList <UBFeature> *flist ) { featuresList = flist; }
private: private:
QList <UBFeature> *featuresList; QList <UBFeature> *featuresList;
}; };
...@@ -265,7 +287,7 @@ class UBFeaturesItemDelegate : public QStyledItemDelegate ...@@ -265,7 +287,7 @@ class UBFeaturesItemDelegate : public QStyledItemDelegate
{ {
Q_OBJECT Q_OBJECT
public: public:
UBFeaturesItemDelegate(QWidget *parent = 0, const QListView *lw = 0) : QStyledItemDelegate(parent) { listView = lw; } UBFeaturesItemDelegate(QObject *parent = 0, const QListView *lw = 0) : QStyledItemDelegate(parent) { listView = lw; }
~UBFeaturesItemDelegate() {} ~UBFeaturesItemDelegate() {}
//UBFeaturesItemDelegate(const QListView *lw = 0) { listView = lw; }; //UBFeaturesItemDelegate(const QListView *lw = 0) { listView = lw; };
//void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; //void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
...@@ -279,7 +301,7 @@ class UBFeaturesPathItemDelegate : public QStyledItemDelegate ...@@ -279,7 +301,7 @@ class UBFeaturesPathItemDelegate : public QStyledItemDelegate
{ {
Q_OBJECT Q_OBJECT
public: public:
UBFeaturesPathItemDelegate(QWidget *parent = 0); UBFeaturesPathItemDelegate(QObject *parent = 0);
~UBFeaturesPathItemDelegate(); ~UBFeaturesPathItemDelegate();
virtual QString displayText ( const QVariant & value, const QLocale & locale ) const; virtual QString displayText ( const QVariant & value, const QLocale & locale ) const;
void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
......
...@@ -74,8 +74,6 @@ UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name ...@@ -74,8 +74,6 @@ UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name
mTimeFormat = mTimeFormat.remove(":s"); mTimeFormat = mTimeFormat.remove(":s");
mTimerID = startTimer(1000); mTimerID = startTimer(1000);
//connect(mNavigator, SIGNAL(changeCurrentPage()), this, SLOT(changeCurrentPage()));
//connect(UBApplication::boardController, SIGNAL(setDocOnPageNavigator(UBDocumentProxy*)), this, SLOT(onSetDocOnPageNavigator(UBDocumentProxy*)));
} }
/** /**
......
...@@ -43,7 +43,7 @@ UBRubberBand::UBRubberBand(Shape s, QWidget * p) ...@@ -43,7 +43,7 @@ UBRubberBand::UBRubberBand(Shape s, QWidget * p)
#elif defined(Q_WS_MAC) #elif defined(Q_WS_MAC)
customStyle = new QMacStyle(); customStyle = new QMacStyle();
#elif defined(Q_WS_X11) #elif defined(Q_WS_X11)
// customStyle = QStyleFactory::create("oxygen"); customStyle = QStyleFactory::create("oxygen");
#endif #endif
if (customStyle) if (customStyle)
...@@ -246,4 +246,4 @@ void UBRubberBand::mouseReleaseEvent(QMouseEvent *event) ...@@ -246,4 +246,4 @@ void UBRubberBand::mouseReleaseEvent(QMouseEvent *event)
Q_UNUSED(event); Q_UNUSED(event);
mMouseIsPressed = false; mMouseIsPressed = false;
unsetCursor(); unsetCursor();
} }
\ No newline at end of file
This diff is collapsed.
...@@ -50,6 +50,8 @@ public: ...@@ -50,6 +50,8 @@ public:
void load(QString element); void load(QString element);
QVector<tIDataStorage*> save(int pageIndex); QVector<tIDataStorage*> save(int pageIndex);
bool isModified();
public slots: public slots:
void onAddItemClicked(QTreeWidgetItem* widget, int column, QDomElement* element = 0); void onAddItemClicked(QTreeWidgetItem* widget, int column, QDomElement* element = 0);
void onActiveSceneChanged(); void onActiveSceneChanged();
...@@ -124,6 +126,7 @@ public: ...@@ -124,6 +126,7 @@ public:
~UBTeacherGuidePageZeroWidget(); ~UBTeacherGuidePageZeroWidget();
QVector<tUBGEElementNode*> getData(); QVector<tUBGEElementNode*> getData();
bool isModified();
public slots: public slots:
...@@ -198,6 +201,8 @@ public: ...@@ -198,6 +201,8 @@ public:
explicit UBTeacherGuideWidget(QWidget* parent = 0, const char* name="UBTeacherGuideWidget"); explicit UBTeacherGuideWidget(QWidget* parent = 0, const char* name="UBTeacherGuideWidget");
~UBTeacherGuideWidget(); ~UBTeacherGuideWidget();
bool isModified();
public slots: public slots:
void changeMode(); void changeMode();
void showPresentationMode(); void showPresentationMode();
...@@ -209,6 +214,11 @@ private: ...@@ -209,6 +214,11 @@ private:
UBTeacherGuideEditionWidget* mpEditionWidget; UBTeacherGuideEditionWidget* mpEditionWidget;
UBTeacherGuidePresentationWidget* mpPresentationWidget; UBTeacherGuidePresentationWidget* mpPresentationWidget;
QVector<tUBGEElementNode*>mCurrentData; QVector<tUBGEElementNode*>mCurrentData;
bool mKeyboardActionFired;
private slots:
void onTriggeredAction(bool checked);
void onTriggeredKeyboardAction(bool checked);
}; };
#endif // UBTEACHERGUIDEWIDGET_H #endif // UBTEACHERGUIDEWIDGET_H
...@@ -177,10 +177,8 @@ void UBWebController::tutorialWebInstance() ...@@ -177,10 +177,8 @@ void UBWebController::tutorialWebInstance()
QString tutorialPath = "/etc/Tutorial/tutorial" + language + "/index.html"; QString tutorialPath = "/etc/Tutorial/tutorial" + language + "/index.html";
#if defined(Q_WS_MAC) #if defined(Q_WS_MAC)
tutorialHtmlIndexFile = QApplication::applicationDirPath()+ "/../Resources" + tutorialPath; tutorialHtmlIndexFile = QApplication::applicationDirPath()+ "/../Resources" + tutorialPath;
#elif defined(Q_WS_WIN)
tutorialHtmlIndexFile = QApplication::applicationDirPath()+ tutorialPath;
#else #else
tutorialHtmlIndexFile = QApplication::applicationDirPath()+ tutorialPath; tutorialHtmlIndexFile = QApplication::applicationDirPath() + tutorialPath;
#endif #endif
QUrl currentUrl = QUrl::fromLocalFile(tutorialHtmlIndexFile); QUrl currentUrl = QUrl::fromLocalFile(tutorialHtmlIndexFile);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment