Merge branch 'dev' (1.3.1 release)

preferencesAboutTextFull
Craig Watson 9 years ago
commit 9753835df0
  1. 2
      OpenBoard.pro
  2. 6
      release_scripts/linux/package.sh
  3. 187
      resources/library/applications/GoogleMap.wgt/index.html
  4. 8
      src/board/UBBoardController.cpp
  5. 15
      src/core/UBApplication.cpp
  6. 3
      src/core/UBApplication.h
  7. 10
      src/core/UBApplicationController.cpp
  8. 4
      src/core/UBDisplayManager.cpp
  9. 15
      src/desktop/UBDesktopAnnotationController.cpp
  10. 4
      src/domain/UBGraphicsPixmapItem.cpp
  11. 2
      src/frameworks/UBFileSystemUtils.cpp
  12. 2
      src/gui/UBScreenMirror.cpp
  13. 4
      src/podcast/UBPodcastController.cpp
  14. 2
      src/web/browser/WBBrowserWindow.cpp

@ -10,7 +10,7 @@ CONFIG += debug_and_release \
VERSION_MAJ = 1 VERSION_MAJ = 1
VERSION_MIN = 3 VERSION_MIN = 3
VERSION_PATCH = 0 VERSION_PATCH = 1
VERSION_TYPE = r # a = alpha, b = beta, rc = release candidate, r = release, other => error VERSION_TYPE = r # a = alpha, b = beta, rc = release candidate, r = release, other => error
VERSION_BUILD = 0 VERSION_BUILD = 0

@ -199,6 +199,7 @@ if $BUNDLE_QT; then
notifyProgress "Copying and stripping Qt plugins" notifyProgress "Copying and stripping Qt plugins"
mkdir -p $QT_PLUGINS_DEST_PATH mkdir -p $QT_PLUGINS_DEST_PATH
copyQtPlugin audio copyQtPlugin audio
copyQtPlugin bearer
copyQtPlugin generic copyQtPlugin generic
copyQtPlugin iconengines copyQtPlugin iconengines
copyQtPlugin imageformats copyQtPlugin imageformats
@ -232,6 +233,7 @@ if $BUNDLE_QT; then
copyQtLibrary libQt5WebChannel copyQtLibrary libQt5WebChannel
copyQtLibrary libQt5WebKit copyQtLibrary libQt5WebKit
copyQtLibrary libQt5WebKitWidgets copyQtLibrary libQt5WebKitWidgets
copyQtLibrary libQt5WebSockets
copyQtLibrary libQt5Widgets copyQtLibrary libQt5Widgets
copyQtLibrary libQt5XcbQpa copyQtLibrary libQt5XcbQpa
copyQtLibrary libQt5Xml copyQtLibrary libQt5Xml
@ -353,9 +355,11 @@ echo -n ", onboard" >> "$CONTROL_FILE"
if $BUNDLE_QT; then if $BUNDLE_QT; then
# Listing some dependencies manually; ideally we should use dpkg -p recursively # Listing some dependencies manually; ideally we should use dpkg -p recursively
# to get the dependencies of the bundled shared libs & plugins. Or use static libs. # to get the dependencies of the bundled shared libs & plugins. Or use static libs.
echo -n ", libxcb-render-util0" >> "$CONTROL_FILE" echo -n ", libxcb1" >> "$CONTROL_FILE"
echo -n ", libxcb-icccm4" >> "$CONTROL_FILE" echo -n ", libxcb-icccm4" >> "$CONTROL_FILE"
echo -n ", libxcb-xkb1" >> "$CONTROL_FILE" echo -n ", libxcb-xkb1" >> "$CONTROL_FILE"
echo -n ", libxcb-image0" >> "$CONTROL_FILE"
echo -n ", libxcb-render-util0" >> "$CONTROL_FILE"
else else
echo -n ", libqt5multimedia5-plugins" >> "$CONTROL_FILE" echo -n ", libqt5multimedia5-plugins" >> "$CONTROL_FILE"
fi fi

@ -1,116 +1,91 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <!DOCTYPE html>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:v="urn:schemas-microsoft-com:vml">
<head> <head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps</title> <title>Google Maps</title>
<script src="http://www.google.com/jsapi?key=ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og"></script> <style type="text/css">
html, body {
<style type="text/css"> height: 100%;
@import url("http://www.google.com/uds/css/gsearch.css"); margin: 0;
@import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css"); padding: 0;
</style>
<script type="text/javascript">
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
google.load("maps", "2");
google.load("elements", "1", {
packages : ["localsearch"]
});
function initialize()
{
var map = null;
var defaultMapType = G_SATELLITE_MAP;
var mapType = null;
var lat = 30;
var lng = 0;
var zoom = 2;
var latlng = new google.maps.LatLng(lat, lng);
if (window.sankore)
{
lat = parseFloat(window.sankore.preference('latitude', lat));
lng = parseFloat(window.sankore.preference('longitude', lng));
zoom = parseFloat(window.sankore.preference('zoom', zoom));
mapType = window.sankore.preference('mapType', mapType);
latlng = new google.maps.LatLng(lat, lng);
};
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(latlng);
map.setUIToDefault();
var mapTypeToSet = defaultMapType;
if (mapType != null) {
mapTypeToSet = map.getMapTypes()[mapType];
} }
map.setMapType(mapTypeToSet); #map {
map.setZoom(zoom); height: 100%;
map.addControl(new google.elements.LocalSearch(), }
new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(5,30))); </style>
// Add persistence <script type="text/javascript">
if (window.sankore) var language = window.sankore ? sankore.locale().substr(0,2) : "en";
{
GEvent.addListener(map,'zoomend',function() function initMap()
{ {
window.sankore.setPreference('zoom', map.getZoom()); var map;
}); var mapType = null;
GEvent.addListener(map,'moveend',function() // Default map type can be ROADMAP, SATELLITE, HYBRID or TERRAIN
{ var defaultMapType = google.maps.MapTypeId.HYBRID;
window.sankore.setPreference('latitude', map.getCenter().lat());
window.sankore.setPreference('longitude', map.getCenter().lng()); var lat = 46.2;
}); var lng = 6.14;
var zoom = 4;
GEvent.addListener(map,'maptypechanged',function()
{
var newMapType = null; var position = new google.maps.LatLng(lat, lng);
for (var i = 0; i < map.getMapTypes().length; i++) {
var aMaptype = map.getMapTypes()[i]; if (window.sankore) {
if (aMaptype == map.getCurrentMapType()) { lat = parseFloat(window.sankore.preference('latitude', lat));
newMapType = i; lng = parseFloat(window.sankore.preference('longitude', lng));
break; zoom = parseFloat(window.sankore.preference('zoom', zoom));
} mapType = window.sankore.preference('mapTypeId', mapType);
}
window.sankore.setPreference('mapType', newMapType); position = new google.maps.LatLng(lat, lng);
}); };
};
}
map = new google.maps.Map(document.getElementById('map'), {
window.onresize(); center: position,
}; zoom: zoom,
mapTypeId: mapType ? mapType : defaultMapType
window.onresize = function() });
{
document.getElementById('map_canvas').style.width = window.innerWidth + 'px';
document.getElementById('map_canvas').style.height = window.innerHeight + 'px'; if (window.sankore) {
}; map.addListener('zoom_changed',function()
{
window.sankore.setPreference('zoom', map.getZoom());
});
map.addListener('dragend',function()
{
window.sankore.setPreference('latitude', map.getCenter().lat());
window.sankore.setPreference('longitude', map.getCenter().lng());
});
map.addListener('maptypeid_changed',function()
{
window.sankore.setPreference('mapTypeId', map.getMapTypeId());
});
}
window.onresize();
}
window.onresize = function()
{
document.getElementById('map').style.width = window.innerWidth + 'px';
document.getElementById('map').style.height = window.innerHeight + 'px';
};
</script> </script>
</head> </head>
<body onload="initialize()" style="margin: 0px"> <body>
<div id="map_canvas" style="width: 800px; height: 600px"></div> <div id="map" style="width: 800px; height: 600px"></div>
</body> </body>
<script>
// language has to be set in the URL, hence this way of loading the API
document.write('\x3Cscript src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBjqhXNSem9YdHR2GAb8zx0qHl4S1RsKxE&callback=initMap&language='+language+'">\x3C/script>');
</script>
</html> </html>

@ -62,6 +62,7 @@
#include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsTextItem.h"
#include "domain/UBPageSizeUndoCommand.h" #include "domain/UBPageSizeUndoCommand.h"
#include "domain/UBGraphicsGroupContainerItem.h" #include "domain/UBGraphicsGroupContainerItem.h"
#include "domain/UBGraphicsStrokesGroup.h"
#include "domain/UBItem.h" #include "domain/UBItem.h"
#include "board/UBFeaturesController.h" #include "board/UBFeaturesController.h"
@ -589,6 +590,10 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item)
itemPos = commonItem->pos() + QPointF(shifting,shifting); itemPos = commonItem->pos() + QPointF(shifting,shifting);
itemSize = commonItem->boundingRect().size(); itemSize = commonItem->boundingRect().size();
commonItem->setSelected(false); commonItem->setSelected(false);
UBGraphicsStrokesGroup *stroke = dynamic_cast<UBGraphicsStrokesGroup*>(commonItem);
if (stroke)
itemPos = QPointF(shifting, shifting);
} }
UBMimeType::Enum itemMimeType; UBMimeType::Enum itemMimeType;
@ -691,8 +696,7 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item)
{ {
mActiveScene->addItem(gitem); mActiveScene->addItem(gitem);
// Translate the new object a bit gitem->setPos(itemPos);
gitem->setPos(20, 20);
mLastCreatedItem = gitem; mLastCreatedItem = gitem;
gitem->setSelected(true); gitem->setSelected(true);

@ -670,3 +670,18 @@ bool UBApplication::isFromWeb(QString url)
return res; return res;
} }
QScreen* UBApplication::controlScreen()
{
QList<QScreen*> screenList = screens();
if (screenList.size() == 1)
return screenList.first();
return screenList[controlScreenIndex()];
}
int UBApplication::controlScreenIndex()
{
return applicationController->displayManager()->controleScreenIndex();
}

@ -100,6 +100,9 @@ class UBApplication : public QtSingleApplication
static QString urlFromHtml(QString html); static QString urlFromHtml(QString html);
static bool isFromWeb(QString url); static bool isFromWeb(QString url);
static QScreen* controlScreen();
static int controlScreenIndex();
signals: signals:
public slots: public slots:

@ -67,7 +67,7 @@
#ifdef Q_WS_MAC #ifdef Q_OS_MAC
#include <Carbon/Carbon.h> #include <Carbon/Carbon.h>
#endif #endif
@ -121,12 +121,6 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView,
networkAccessManager = new QNetworkAccessManager (this); networkAccessManager = new QNetworkAccessManager (this);
QTimer::singleShot (1000, this, SLOT (checkAtLaunch())); QTimer::singleShot (1000, this, SLOT (checkAtLaunch()));
#ifdef Q_WS_X11
mMainWindow->setStyleSheet("QToolButton { font-size: 11px}");
#endif
} }
@ -381,7 +375,7 @@ void UBApplicationController::showBoard()
mUninoteController->hideWindow(); mUninoteController->hideWindow();
mMainWindow->show(); UBPlatformUtils::showFullScreen(mMainWindow);
emit mainModeChanged(Board); emit mainModeChanged(Board);

@ -71,7 +71,7 @@ void UBDisplayManager::initScreenIndexes()
if (screenCount > 0) if (screenCount > 0)
{ {
mControlScreenIndex = mDesktop->primaryScreen(); mControlScreenIndex = mDesktop->primaryScreen();
if (UBSettings::settings()->swapControlAndDisplayScreens->get().toBool()) if (mDesktop->screenCount() > 1 && UBSettings::settings()->swapControlAndDisplayScreens->get().toBool())
{ {
mControlScreenIndex = mControlScreenIndex^1; mControlScreenIndex = mControlScreenIndex^1;
} }
@ -118,7 +118,7 @@ int UBDisplayManager::numScreens()
{ {
if (mUseMultiScreen) if (mUseMultiScreen)
{ {
return mDesktop->numScreens(); return mDesktop->screenCount();
} }
else else
{ {

@ -334,7 +334,8 @@ void UBDesktopAnnotationController::showWindow()
#ifndef Q_OS_LINUX #ifndef Q_OS_LINUX
UBPlatformUtils::showFullScreen(mTransparentDrawingView); UBPlatformUtils::showFullScreen(mTransparentDrawingView);
#else #else
// this is necessary to avoid unity to hide the panels // this is necessary to avoid hiding the panels on Unity and Cinnamon
// if finer control is necessary, use qgetenv("XDG_CURRENT_DESKTOP")
mTransparentDrawingView->show(); mTransparentDrawingView->show();
#endif #endif
UBPlatformUtils::setDesktopMode(true); UBPlatformUtils::setDesktopMode(true);
@ -410,13 +411,7 @@ void UBDesktopAnnotationController::hideWindow()
void UBDesktopAnnotationController::goToUniboard() void UBDesktopAnnotationController::goToUniboard()
{ {
onToolClicked(); UBApplication::applicationController->showBoard();
hideWindow();
UBPlatformUtils::setDesktopMode(false);
UBDrawingController::drawingController()->setInDestopMode(false);
emit restoreUniboard();
} }
@ -431,7 +426,7 @@ void UBDesktopAnnotationController::customCapture()
// need to show the window before execute it to avoid some glitch on windows. // need to show the window before execute it to avoid some glitch on windows.
#ifndef Q_OS_WIN // Working only without this call on win32 desktop mode #ifndef Q_OS_WIN // Working only without this call on win32 desktop mode
customCaptureWindow.show(); UBPlatformUtils::showFullScreen(&customCaptureWindow);
#endif #endif
if (customCaptureWindow.execute(getScreenPixmap()) == QDialog::Accepted) if (customCaptureWindow.execute(getScreenPixmap()) == QDialog::Accepted)
@ -500,7 +495,7 @@ void UBDesktopAnnotationController::screenCapture()
QPixmap UBDesktopAnnotationController::getScreenPixmap() QPixmap UBDesktopAnnotationController::getScreenPixmap()
{ {
QDesktopWidget *desktop = QApplication::desktop(); QDesktopWidget *desktop = QApplication::desktop();
QScreen * screen = QApplication::primaryScreen(); QScreen * screen = UBApplication::controlScreen();
QRect rect = desktop->screenGeometry(QCursor::pos()); QRect rect = desktop->screenGeometry(QCursor::pos());

@ -120,12 +120,16 @@ void UBGraphicsPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void UBGraphicsPixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) void UBGraphicsPixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
painter->setRenderHint(QPainter::Antialiasing, false);
// Never draw the rubber band, we draw our custom selection with the DelegateFrame // Never draw the rubber band, we draw our custom selection with the DelegateFrame
QStyleOptionGraphicsItem styleOption = QStyleOptionGraphicsItem(*option); QStyleOptionGraphicsItem styleOption = QStyleOptionGraphicsItem(*option);
styleOption.state &= ~QStyle::State_Selected; styleOption.state &= ~QStyle::State_Selected;
QGraphicsPixmapItem::paint(painter, &styleOption, widget); QGraphicsPixmapItem::paint(painter, &styleOption, widget);
Delegate()->postpaint(painter, option, widget); Delegate()->postpaint(painter, option, widget);
painter->setRenderHint(QPainter::Antialiasing, true);
} }

@ -57,7 +57,7 @@ UBFileSystemUtils::~UBFileSystemUtils()
QString UBFileSystemUtils::removeLocalFilePrefix(QString input) QString UBFileSystemUtils::removeLocalFilePrefix(QString input)
{ {
#ifdef Q_WS_WIN #ifdef Q_OS_WIN
if(input.startsWith("file:///")) if(input.startsWith("file:///"))
return input.mid(8); return input.mid(8);
else else

@ -99,7 +99,7 @@ void UBScreenMirror::grabPixmap()
// this is the case we are showing the desktop but the is no widget and we use the last widget rectagle to know // this is the case we are showing the desktop but the is no widget and we use the last widget rectagle to know
// what we have to grab. Not very good way of doing // what we have to grab. Not very good way of doing
QDesktopWidget * desktop = QApplication::desktop(); QDesktopWidget * desktop = QApplication::desktop();
QScreen * screen = QApplication::primaryScreen(); QScreen * screen = UBApplication::controlScreen();
mLastPixmap = screen->grabWindow(desktop->effectiveWinId(), mRect.x(), mRect.y(), mRect.width(), mRect.height()); mLastPixmap = screen->grabWindow(desktop->effectiveWinId(), mRect.x(), mRect.y(), mRect.width(), mRect.height());
} }

@ -762,8 +762,8 @@ void UBPodcastController::timerEvent(QTimerEvent *event)
&& mSourceWidget == qApp->desktop()) && mSourceWidget == qApp->desktop())
{ {
QDesktopWidget * dtop = QApplication::desktop(); QDesktopWidget * dtop = QApplication::desktop();
QRect dtopRect = dtop->screenGeometry(); QRect dtopRect = dtop->screenGeometry(UBApplication::controlScreenIndex());
QScreen * screen = QApplication::primaryScreen(); QScreen * screen = UBApplication::controlScreen();
QPixmap desktop = screen->grabWindow(dtop->effectiveWinId(), QPixmap desktop = screen->grabWindow(dtop->effectiveWinId(),
dtopRect.x(), dtopRect.y(), dtopRect.width(), dtopRect.height()); dtopRect.x(), dtopRect.y(), dtopRect.width(), dtopRect.height());

@ -182,7 +182,7 @@ WBHistoryManager *WBBrowserWindow::historyManager()
QSize WBBrowserWindow::sizeHint() const QSize WBBrowserWindow::sizeHint() const
{ {
QRect desktopRect = QApplication::desktop()->screenGeometry(); QRect desktopRect = QApplication::desktop()->screenGeometry(UBApplication::controlScreenIndex());
QSize size = desktopRect.size() * qreal(0.9); QSize size = desktopRect.size() * qreal(0.9);
return size; return size;
} }

Loading…
Cancel
Save