diff --git a/data/themes/default/fullscreen.png b/data/themes/default/fullscreen.png new file mode 100755 index 000000000..56f552e10 Binary files /dev/null and b/data/themes/default/fullscreen.png differ diff --git a/include/Editor.h b/include/Editor.h index 454ec4d3e..04765ee07 100644 --- a/include/Editor.h +++ b/include/Editor.h @@ -62,6 +62,8 @@ private slots: /// Called by pressing shift+space. Toggles pause state. void togglePause(); + void toggleMaximize(); + signals: protected: diff --git a/include/MainWindow.h b/include/MainWindow.h index c894ef4f0..151124568 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -155,6 +155,7 @@ public slots: void toggleFxMixerWin(); void togglePianoRollWin(); void toggleControllerRack(); + void toggleFullscreen(); void updatePlayPauseIcons(); @@ -224,6 +225,8 @@ private: ToolButton * m_metronomeToggle; SessionState m_session; + + bool maximized; private slots: void browseHelp(); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 2be265e04..94f337576 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -245,6 +245,9 @@ MainWindow::MainWindow() : connect(Engine::getSong(), SIGNAL(modified()), SLOT(onSongModified())); connect(Engine::getSong(), SIGNAL(projectFileNameChanged()), SLOT(onProjectFileNameChanged())); + + maximized = isMaximized(); + new QShortcut(QKeySequence(Qt::Key_F11), this, SLOT(toggleFullscreen())); } @@ -479,60 +482,60 @@ void MainWindow::finalize() // window-toolbar ToolButton * song_editor_window = new ToolButton( embed::getIconPixmap( "songeditor" ), - tr( "Song Editor" ) + " (F5)", + tr( "Song Editor" ) + " (Ctrl+1)", this, SLOT( toggleSongEditorWin() ), m_toolBar ); - song_editor_window->setShortcut( Qt::Key_F5 ); + song_editor_window->setShortcut( Qt::CTRL + Qt::Key_1 ); ToolButton * bb_editor_window = new ToolButton( embed::getIconPixmap( "bb_track_btn" ), tr( "Beat+Bassline Editor" ) + - " (F6)", + " (Ctrl+2)", this, SLOT( toggleBBEditorWin() ), m_toolBar ); - bb_editor_window->setShortcut( Qt::Key_F6 ); + bb_editor_window->setShortcut( Qt::CTRL + Qt::Key_2 ); ToolButton * piano_roll_window = new ToolButton( embed::getIconPixmap( "piano" ), tr( "Piano Roll" ) + - " (F7)", + " (Ctrl+3)", this, SLOT( togglePianoRollWin() ), m_toolBar ); - piano_roll_window->setShortcut( Qt::Key_F7 ); + piano_roll_window->setShortcut( Qt::CTRL + Qt::Key_3 ); ToolButton * automation_editor_window = new ToolButton( embed::getIconPixmap( "automation" ), tr( "Automation Editor" ) + - " (F8)", + " (Ctrl+4)", this, SLOT( toggleAutomationEditorWin() ), m_toolBar ); - automation_editor_window->setShortcut( Qt::Key_F8 ); + automation_editor_window->setShortcut( Qt::CTRL + Qt::Key_4 ); ToolButton * fx_mixer_window = new ToolButton( embed::getIconPixmap( "fx_mixer" ), - tr( "FX Mixer" ) + " (F9)", + tr( "FX Mixer" ) + " (Ctrl+5)", this, SLOT( toggleFxMixerWin() ), m_toolBar ); - fx_mixer_window->setShortcut( Qt::Key_F9 ); + fx_mixer_window->setShortcut( Qt::CTRL + Qt::Key_5 ); ToolButton * controllers_window = new ToolButton( embed::getIconPixmap( "controller" ), tr( "Show/hide controller rack" ) + - " (F10)", + " (Ctrl+6)", this, SLOT( toggleControllerRack() ), m_toolBar ); - controllers_window->setShortcut( Qt::Key_F10 ); + controllers_window->setShortcut( Qt::CTRL + Qt::Key_6 ); ToolButton * project_notes_window = new ToolButton( embed::getIconPixmap( "project_notes" ), tr( "Show/hide project notes" ) + - " (F11)", + " (Ctrl+7)", this, SLOT( toggleProjectNotesWin() ), m_toolBar ); - project_notes_window->setShortcut( Qt::Key_F11 ); + project_notes_window->setShortcut( Qt::CTRL + Qt::Key_7 ); m_toolBarLayout->addWidget( song_editor_window, 1, 1 ); m_toolBarLayout->addWidget( bb_editor_window, 1, 2 ); @@ -1007,6 +1010,20 @@ void MainWindow::toggleWindow( QWidget *window, bool forceShow ) +void MainWindow::toggleFullscreen() +{ + if ( !isFullScreen() ) + { + maximized = isMaximized(); + showFullScreen(); + } + else + { + maximized ? showMaximized() : showNormal(); + } +} + + /* * When an editor window with focus is toggled off, attempt to set focus @@ -1093,36 +1110,43 @@ void MainWindow::updateViewMenu() // Not that it's straight visible <-> invisible, more like // not on top -> top <-> invisible m_viewMenu->addAction(embed::getIconPixmap( "songeditor" ), - tr( "Song Editor" ) + " (F5)", + tr( "Song Editor" ) + "\tCtrl+1", this, SLOT( toggleSongEditorWin() ) ); m_viewMenu->addAction(embed::getIconPixmap( "bb_track" ), - tr( "Beat+Bassline Editor" ) + " (F6)", + tr( "Beat+Bassline Editor" ) + "\tCtrl+2", this, SLOT( toggleBBEditorWin() ) ); m_viewMenu->addAction(embed::getIconPixmap( "piano" ), - tr( "Piano Roll" ) + " (F7)", + tr( "Piano Roll" ) + "\tCtrl+3", this, SLOT( togglePianoRollWin() ) ); m_viewMenu->addAction(embed::getIconPixmap( "automation" ), - tr( "Automation Editor" ) + " (F8)", + tr( "Automation Editor" ) + "\tCtrl+4", this, SLOT( toggleAutomationEditorWin()) ); m_viewMenu->addAction(embed::getIconPixmap( "fx_mixer" ), - tr( "FX Mixer" ) + " (F9)", + tr( "FX Mixer" ) + "\tCtrl+5", this, SLOT( toggleFxMixerWin() ) ); m_viewMenu->addAction(embed::getIconPixmap( "controller" ), - tr( "Controller Rack" ) + " (F10)", + tr( "Controller Rack" ) + "\tCtrl+6", this, SLOT( toggleControllerRack() ) ); m_viewMenu->addAction(embed::getIconPixmap( "project_notes" ), - tr( "Project Notes" ) + " (F11)", + tr( "Project Notes" ) + "\tCtrl+7", this, SLOT( toggleProjectNotesWin() ) ); m_viewMenu->addSeparator(); + + m_viewMenu->addAction(embed::getIconPixmap( "fullscreen" ), + tr( "Fullscreen" ) + "\tF11", + this, SLOT( toggleFullscreen() ) + ); + + m_viewMenu->addSeparator(); // Here we should put all look&feel -stuff from configmanager // that is safe to change on the fly. There is probably some diff --git a/src/gui/editors/Editor.cpp b/src/gui/editors/Editor.cpp index 00a659d07..dc86a1789 100644 --- a/src/gui/editors/Editor.cpp +++ b/src/gui/editors/Editor.cpp @@ -79,6 +79,11 @@ void Editor::togglePause() Engine::getSong()->togglePause(); } +void Editor::toggleMaximize() +{ + isMaximized() ? showNormal() : showMaximized(); +} + Editor::Editor(bool record, bool stepRecord) : m_toolBar(new DropToolBar(this)), m_playAction(nullptr), @@ -110,6 +115,7 @@ Editor::Editor(bool record, bool stepRecord) : connect(m_stopAction, SIGNAL(triggered()), this, SLOT(stop())); new QShortcut(Qt::Key_Space, this, SLOT(togglePlayStop())); new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_Space), this, SLOT(togglePause())); + new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_F11), this, SLOT(toggleMaximize())); // Add actions to toolbar addButton(m_playAction, "playButton");