Merge branch 'dev' (1.3.1 release)

preferencesAboutTextFull
Craig Watson 8 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_MIN = 3
VERSION_PATCH = 0
VERSION_PATCH = 1
VERSION_TYPE = r # a = alpha, b = beta, rc = release candidate, r = release, other => error
VERSION_BUILD = 0

@ -199,6 +199,7 @@ if $BUNDLE_QT; then
notifyProgress "Copying and stripping Qt plugins"
mkdir -p $QT_PLUGINS_DEST_PATH
copyQtPlugin audio
copyQtPlugin bearer
copyQtPlugin generic
copyQtPlugin iconengines
copyQtPlugin imageformats
@ -232,6 +233,7 @@ if $BUNDLE_QT; then
copyQtLibrary libQt5WebChannel
copyQtLibrary libQt5WebKit
copyQtLibrary libQt5WebKitWidgets
copyQtLibrary libQt5WebSockets
copyQtLibrary libQt5Widgets
copyQtLibrary libQt5XcbQpa
copyQtLibrary libQt5Xml
@ -353,9 +355,11 @@ echo -n ", onboard" >> "$CONTROL_FILE"
if $BUNDLE_QT; then
# 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.
echo -n ", libxcb-render-util0" >> "$CONTROL_FILE"
echo -n ", libxcb1" >> "$CONTROL_FILE"
echo -n ", libxcb-icccm4" >> "$CONTROL_FILE"
echo -n ", libxcb-xkb1" >> "$CONTROL_FILE"
echo -n ", libxcb-image0" >> "$CONTROL_FILE"
echo -n ", libxcb-render-util0" >> "$CONTROL_FILE"
else
echo -n ", libqt5multimedia5-plugins" >> "$CONTROL_FILE"
fi

@ -1,116 +1,91 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:v="urn:schemas-microsoft-com:vml">
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps</title>
<script src="http://www.google.com/jsapi?key=ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og"></script>
<style type="text/css">
@import url("http://www.google.com/uds/css/gsearch.css");
@import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");
</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];
<style type="text/css">
html, body {
height: 100%;
margin: 0;
padding: 0;
}
map.setMapType(mapTypeToSet);
map.setZoom(zoom);
map.addControl(new google.elements.LocalSearch(),
new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(5,30)));
// Add persistence
if (window.sankore)
{
GEvent.addListener(map,'zoomend',function()
{
window.sankore.setPreference('zoom', map.getZoom());
});
GEvent.addListener(map,'moveend',function()
{
window.sankore.setPreference('latitude', map.getCenter().lat());
window.sankore.setPreference('longitude', map.getCenter().lng());
});
GEvent.addListener(map,'maptypechanged',function()
{
var newMapType = null;
for (var i = 0; i < map.getMapTypes().length; i++) {
var aMaptype = map.getMapTypes()[i];
if (aMaptype == map.getCurrentMapType()) {
newMapType = i;
break;
}
}
window.sankore.setPreference('mapType', newMapType);
});
};
}
window.onresize();
};
window.onresize = function()
{
document.getElementById('map_canvas').style.width = window.innerWidth + 'px';
document.getElementById('map_canvas').style.height = window.innerHeight + 'px';
};
#map {
height: 100%;
}
</style>
<script type="text/javascript">
var language = window.sankore ? sankore.locale().substr(0,2) : "en";
function initMap()
{
var map;
var mapType = null;
// Default map type can be ROADMAP, SATELLITE, HYBRID or TERRAIN
var defaultMapType = google.maps.MapTypeId.HYBRID;
var lat = 46.2;
var lng = 6.14;
var zoom = 4;
var position = 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('mapTypeId', mapType);
position = new google.maps.LatLng(lat, lng);
};
map = new google.maps.Map(document.getElementById('map'), {
center: position,
zoom: zoom,
mapTypeId: mapType ? mapType : defaultMapType
});
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>
</head>
<body onload="initialize()" style="margin: 0px">
<div id="map_canvas" style="width: 800px; height: 600px"></div>
</body>
<body>
<div id="map" style="width: 800px; height: 600px"></div>
</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>

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

@ -670,3 +670,18 @@ bool UBApplication::isFromWeb(QString url)
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 bool isFromWeb(QString url);
static QScreen* controlScreen();
static int controlScreenIndex();
signals:
public slots:

@ -67,7 +67,7 @@
#ifdef Q_WS_MAC
#ifdef Q_OS_MAC
#include <Carbon/Carbon.h>
#endif
@ -121,12 +121,6 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView,
networkAccessManager = new QNetworkAccessManager (this);
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();
mMainWindow->show();
UBPlatformUtils::showFullScreen(mMainWindow);
emit mainModeChanged(Board);

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

@ -334,7 +334,8 @@ void UBDesktopAnnotationController::showWindow()
#ifndef Q_OS_LINUX
UBPlatformUtils::showFullScreen(mTransparentDrawingView);
#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();
#endif
UBPlatformUtils::setDesktopMode(true);
@ -410,13 +411,7 @@ void UBDesktopAnnotationController::hideWindow()
void UBDesktopAnnotationController::goToUniboard()
{
onToolClicked();
hideWindow();
UBPlatformUtils::setDesktopMode(false);
UBDrawingController::drawingController()->setInDestopMode(false);
emit restoreUniboard();
UBApplication::applicationController->showBoard();
}
@ -431,7 +426,7 @@ void UBDesktopAnnotationController::customCapture()
// 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
customCaptureWindow.show();
UBPlatformUtils::showFullScreen(&customCaptureWindow);
#endif
if (customCaptureWindow.execute(getScreenPixmap()) == QDialog::Accepted)
@ -500,7 +495,7 @@ void UBDesktopAnnotationController::screenCapture()
QPixmap UBDesktopAnnotationController::getScreenPixmap()
{
QDesktopWidget *desktop = QApplication::desktop();
QScreen * screen = QApplication::primaryScreen();
QScreen * screen = UBApplication::controlScreen();
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)
{
painter->setRenderHint(QPainter::Antialiasing, false);
// Never draw the rubber band, we draw our custom selection with the DelegateFrame
QStyleOptionGraphicsItem styleOption = QStyleOptionGraphicsItem(*option);
styleOption.state &= ~QStyle::State_Selected;
QGraphicsPixmapItem::paint(painter, &styleOption, widget);
Delegate()->postpaint(painter, option, widget);
painter->setRenderHint(QPainter::Antialiasing, true);
}

@ -57,7 +57,7 @@ UBFileSystemUtils::~UBFileSystemUtils()
QString UBFileSystemUtils::removeLocalFilePrefix(QString input)
{
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
if(input.startsWith("file:///"))
return input.mid(8);
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
// what we have to grab. Not very good way of doing
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());
}

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

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

Loading…
Cancel
Save