Commit 823115bd authored by Clément Fauconnier's avatar Clément Fauconnier

added an option to swap first and second display screens

parent 159ec508
[App]
AngleTolerance=4
HideCheckForSoftwareUpdate=false
HideSwapDisplayScreens=true
EnableAutomaticSoftwareUpdates=true
EnableSoftwareUpdates=true
EnableStartupHints=true
......
This diff is collapsed.
......@@ -237,7 +237,7 @@ class UBBoardController : public UBDocumentContainer
UBGraphicsMediaItem* addVideo(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
UBGraphicsMediaItem* addAudio(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
UBGraphicsWidgetItem *addW3cWidget(const QUrl& pUrl, const QPointF& pos);
void adjustDisplayViews();
void cut();
void copy();
void paste();
......@@ -289,7 +289,6 @@ class UBBoardController : public UBDocumentContainer
void initBackgroundGridSize();
void updatePageSizeState();
void saveViewState();
void adjustDisplayViews();
int autosaveTimeoutFromSettings();
UBMainWindow *mMainWindow;
......
......@@ -98,7 +98,7 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView,
connect(mDisplayManager, SIGNAL(screenLayoutChanged()), this, SLOT(screenLayoutChanged()));
connect(mDisplayManager, SIGNAL(screenLayoutChanged()), mUninoteController, SLOT(screenLayoutChanged()));
connect(mDisplayManager, SIGNAL(screenLayoutChanged()), UBApplication::webController, SLOT(screenLayoutChanged()));
connect(mDisplayManager, SIGNAL(adjustDisplayViewsRequired()), UBApplication::boardController, SLOT(adjustDisplayViews()));
connect(mUninoteController, SIGNAL(imageCaptured(const QPixmap &, bool)), this, SLOT(addCapturedPixmap(const QPixmap &, bool)));
connect(mUninoteController, SIGNAL(restoreUniboard()), this, SLOT(hideDesktop()));
......
......@@ -24,8 +24,6 @@
* along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
*/
#include "UBDisplayManager.h"
#include "frameworks/UBPlatformUtils.h"
......@@ -109,6 +107,65 @@ void UBDisplayManager::initScreenIndexes()
}
}
void UBDisplayManager::swapDisplayScreens(bool swap)
{
int screenCount = numScreens();
mScreenIndexesRoles.clear();
if (screenCount > 0)
{
mControlScreenIndex = mDesktop->primaryScreen();
if (screenCount > 1 && UBSettings::settings()->swapControlAndDisplayScreens->get().toBool())
{
mControlScreenIndex = mControlScreenIndex^1;
}
mScreenIndexesRoles << Control;
}
else
{
mControlScreenIndex = -1;
}
if (screenCount > 1 && mUseMultiScreen)
{
mDisplayScreenIndex = mControlScreenIndex != 0 ? 0 : 1;
mScreenIndexesRoles << Display;
}
else
{
mDisplayScreenIndex = -1;
}
mPreviousScreenIndexes.clear();
if (screenCount > 2)
{
for(int i = 2; i < screenCount; i++)
{
if(mControlScreenIndex == i)
mPreviousScreenIndexes.append(1);
else
mPreviousScreenIndexes.append(i);
}
}
if (swap)
{
// As it s a really specific ask and we don't have much time to handle it correctly
// this code handles only the swap between the main display screen and the first previous one
int displayScreenIndex = mDisplayScreenIndex;
mDisplayScreenIndex = mPreviousScreenIndexes.at(0);
mPreviousScreenIndexes.clear();
mPreviousScreenIndexes.append(displayScreenIndex);
}
positionScreens();
emit screenLayoutChanged();
emit adjustDisplayViewsRequired();
}
UBDisplayManager::~UBDisplayManager()
{
......
......@@ -91,6 +91,7 @@ class UBDisplayManager : public QObject
signals:
void screenLayoutChanged();
void adjustDisplayViewsRequired();
public slots:
......@@ -104,6 +105,7 @@ class UBDisplayManager : public QObject
void setRoleToScreen(DisplayRole role, int screenIndex);
void swapDisplayScreens(bool swap);
private:
void positionScreens();
......
......@@ -140,11 +140,18 @@ void UBPreferencesController::wire()
connect(mPreferencesUI->keyboardPaletteKeyButtonSize, SIGNAL(currentIndexChanged(const QString &)), settings->boardKeyboardPaletteKeyBtnSize, SLOT(setString(const QString &)));
connect(mPreferencesUI->startModeComboBox, SIGNAL(currentIndexChanged(int)), settings->appStartMode, SLOT(setInt(int)));
connect(mPreferencesUI->useExternalBrowserCheckBox, SIGNAL(clicked(bool)), settings->webUseExternalBrowser, SLOT(setBool(bool)));
connect(mPreferencesUI->displayBrowserPageCheckBox, SIGNAL(clicked(bool)), settings->webShowPageImmediatelyOnMirroredScreen, SLOT(setBool(bool)));
connect(mPreferencesUI->swapControlAndDisplayScreensCheckBox, SIGNAL(clicked(bool)), settings->swapControlAndDisplayScreens, SLOT(setBool(bool)));
connect(mPreferencesUI->swapControlAndDisplayScreensCheckBox, SIGNAL(clicked(bool)), UBApplication::applicationController->displayManager(), SLOT(reinitScreens(bool)));
if (settings->appHideSwapDisplayScreens->get().toBool())
{
mPreferencesUI->swapDisplayScreensCheckBox->hide();
}
else
{
connect(mPreferencesUI->swapDisplayScreensCheckBox, SIGNAL(clicked(bool)), UBApplication::applicationController->displayManager(), SLOT(swapDisplayScreens(bool)));
}
connect(mPreferencesUI->toolbarAtTopRadioButton, SIGNAL(clicked(bool)), this, SLOT(toolbarPositionChanged(bool)));
connect(mPreferencesUI->toolbarAtBottomRadioButton, SIGNAL(clicked(bool)), this, SLOT(toolbarPositionChanged(bool)));
......
......@@ -236,6 +236,7 @@ void UBSettings::init()
appEnableAutomaticSoftwareUpdates = new UBSetting(this, "App", "EnableAutomaticSoftwareUpdates", false);
appSoftwareUpdateURL = new UBSetting(this, "App", "SoftwareUpdateURL", "http://www.openboard.ch/update.json");
appHideCheckForSoftwareUpdate = new UBSetting(this, "App", "HideCheckForSoftwareUpdate", false);
appHideSwapDisplayScreens = new UBSetting(this, "App", "HideSwapDisplayScreens", true);
appToolBarOrientationVertical = new UBSetting(this, "App", "ToolBarOrientationVertical", false);
appPreferredLanguage = new UBSetting(this,"App","PreferredLanguage", "");
......
......@@ -252,6 +252,7 @@ class UBSettings : public QObject
UBSetting* appEnableAutomaticSoftwareUpdates;
UBSetting* appSoftwareUpdateURL;
UBSetting* appHideCheckForSoftwareUpdate;
UBSetting* appHideSwapDisplayScreens;
UBSetting* appToolBarOrientationVertical;
UBSetting* appPreferredLanguage;
......
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