This commit is contained in:
Martin Rotter 2016-08-04 09:02:03 +02:00
parent e5b5f3d8e1
commit 2dbd59f3a6
3 changed files with 35 additions and 12 deletions

View File

@ -168,10 +168,16 @@ void FormMain::prepareMenus() {
void FormMain::switchFullscreenMode() {
if (!isFullScreen()) {
qApp->settings()->setValue(GROUP(GUI), GUI::IsMainWindowMaximizedBeforeFullscreen, isMaximized());
showFullScreen();
}
else {
showNormal();
if (qApp->settings()->value(GROUP(GUI), SETTING(GUI::IsMainWindowMaximizedBeforeFullscreen)).toBool()) {
setWindowState((windowState() & ~Qt::WindowFullScreen) | Qt::WindowMaximized);
}
else {
showNormal();
}
}
}
@ -404,16 +410,19 @@ void FormMain::loadSize() {
resize(settings->value(GROUP(GUI), GUI::MainWindowInitialSize, size()).toSize());
move(settings->value(GROUP(GUI), GUI::MainWindowInitialPosition, screen.center() - rect().center()).toPoint());
if (settings->value(GROUP(GUI), SETTING(GUI::MainWindowStartsMaximized)).toBool()) {
setWindowState(windowState() | Qt::WindowMaximized);
// We process events so that window is really maximized fast.
qApp->processEvents();
}
// If user exited the application while in fullsreen mode,
// then re-enable it now.
if (settings->value(GROUP(GUI), SETTING(GUI::MainWindowStartsFullscreen)).toBool()) {
m_ui->m_actionFullscreen->setChecked(true);
}
if (settings->value(GROUP(GUI), SETTING(GUI::MainWindowStartsMaximized)).toBool()) {
setWindowState(windowState() | Qt::WindowMaximized);
}
// Hide the main menu if user wants it.
m_ui->m_actionSwitchMainMenu->setChecked(settings->value(GROUP(GUI), SETTING(GUI::MainMenuVisible)).toBool());
@ -429,18 +438,26 @@ void FormMain::loadSize() {
void FormMain::saveSize() {
Settings *settings = qApp->settings();
const bool is_fullscreen = isFullScreen();
const bool is_maximized = isMaximized();
bool is_fullscreen = isFullScreen();
bool is_maximized = false;
if (is_fullscreen) {
m_ui->m_actionFullscreen->setChecked(false);
// We (process events to really) un-fullscreen, so that we can determine if window is really maximized.
qApp->processEvents();
}
if (is_maximized) {
if (isMaximized()) {
is_maximized = true;
// Window is maximized, we store that fact to settings and unmaximize.
qApp->settings()->setValue(GROUP(GUI), GUI::IsMainWindowMaximizedBeforeFullscreen, isMaximized());
setWindowState((windowState() & ~Qt::WindowMaximized) | Qt::WindowActive);
}
qApp->processEvents();
// We process events to really have window un-maximized.
qApp->processEvents();
}
settings->setValue(GROUP(GUI), GUI::MainMenuVisible, m_ui->m_actionSwitchMainMenu->isChecked());
settings->setValue(GROUP(GUI), GUI::MainWindowInitialPosition, pos());

View File

@ -82,8 +82,11 @@ DVALUE(char*) GUI::FeedsToolbarActionsDef = "m_actionUpdateAllItems,m_ac
DKEY GUI::StatusbarActions = "status_bar";
DVALUE(char*) GUI::StatusbarActionsDef = "m_lblProgressFeedsAction,m_barProgressFeedsAction,m_actionUpdateAllItems,m_actionUpdateSelectedItems,m_actionStopRunningItemsUpdate,m_actionFullscreen,m_actionQuit";
DKEY GUI::MainWindowInitialSize = "window_size";
DKEY GUI::MainWindowInitialPosition = "window_position";
DKEY GUI::MainWindowInitialSize = "window_size";
DKEY GUI::MainWindowInitialPosition = "window_position";
DKEY GUI::IsMainWindowMaximizedBeforeFullscreen = "is_window_maximized_before_fullscreen";
DVALUE(bool) GUI::IsMainWindowMaximizedBeforeFullscreenDef = false;
DKEY GUI::MainWindowStartsFullscreen = "start_in_fullscreen";
DVALUE(bool) GUI::MainWindowStartsFullscreenDef = false;

View File

@ -104,6 +104,9 @@ namespace GUI {
KEY MainWindowInitialSize;
KEY MainWindowInitialPosition;
KEY IsMainWindowMaximizedBeforeFullscreen;
VALUE(bool) IsMainWindowMaximizedBeforeFullscreenDef;
KEY MainWindowStartsFullscreen;
VALUE(bool) MainWindowStartsFullscreenDef;