ui: Added option for hiding dock widge title bars to view menu

This commit is contained in:
Eberhard Graether
2015-12-17 14:28:47 +01:00
parent b6beab8283
commit 5c0493267c
3 changed files with 74 additions and 17 deletions
+5
View File
@@ -0,0 +1,5 @@
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
}
+62 -17
View File
@@ -79,6 +79,7 @@ bool MouseReleaseFilter::eventFilter(QObject* obj, QEvent* event)
}
QtMainWindow::QtMainWindow()
: m_showDockWidgetTitleBars(true)
{
setObjectName("QtMainWindow");
setCentralWidget(nullptr);
@@ -126,8 +127,13 @@ void QtMainWindow::addView(View* view)
QDockWidget* dock = new QDockWidget(tr(view->getName().c_str()), this);
dock->setWidget(QtViewWidgetWrapper::getWidgetOfView(view));
dock->setObjectName(QString::fromStdString("Dock" + view->getName()));
//dock->setFeatures(QDockWidget::NoDockWidgetFeatures);
//dock->setTitleBarWidget(new QWidget());
if (!m_showDockWidgetTitleBars)
{
dock->setFeatures(QDockWidget::NoDockWidgetFeatures);
dock->setTitleBarWidget(new QWidget());
}
addDockWidget(Qt::TopDockWidgetArea, dock);
QtViewToggle* toggle = new QtViewToggle(view, this);
@@ -181,6 +187,7 @@ void QtMainWindow::loadLayout()
{
showMaximized();
}
setShowDockWidgetTitleBars(settings.value("showTitleBars", true).toBool());
settings.endGroup();
this->restoreState(settings.value("DOCK_LOCATIONS").toByteArray());
@@ -202,6 +209,7 @@ void QtMainWindow::saveLayout()
settings.setValue("size", size());
settings.setValue("position", pos());
}
settings.setValue("showTitleBars", m_showDockWidgetTitleBars);
settings.endGroup();
settings.setValue("DOCK_LOCATIONS", this->saveState());
@@ -401,22 +409,22 @@ void QtMainWindow::saveAsProject()
void QtMainWindow::undo()
{
MessageUndo().dispatch();
MessageUndo().dispatch();
}
void QtMainWindow::redo()
{
MessageRedo().dispatch();
MessageRedo().dispatch();
}
void QtMainWindow::zoomIn()
{
MessageZoom(true).dispatch();
MessageZoom(true).dispatch();
}
void QtMainWindow::zoomOut()
{
MessageZoom(false).dispatch();
MessageZoom(false).dispatch();
}
void QtMainWindow::switchColorScheme()
@@ -473,13 +481,13 @@ void QtMainWindow::setupProjectMenu()
for (int i = 0; i < ApplicationSettings::MaximalAmountOfRecentProjects; ++i)
{
m_recentProjectAction[i] = new QAction(this);
m_recentProjectAction[i]->setVisible(false);
connect(m_recentProjectAction[i], SIGNAL(triggered()),
this, SLOT(openRecentProject()));
recentProjectMenu->addAction(m_recentProjectAction[i]);
}
updateRecentProjectMenu();
m_recentProjectAction[i] = new QAction(this);
m_recentProjectAction[i]->setVisible(false);
connect(m_recentProjectAction[i], SIGNAL(triggered()),
this, SLOT(openRecentProject()));
recentProjectMenu->addAction(m_recentProjectAction[i]);
}
updateRecentProjectMenu();
menu->addMenu(recentProjectMenu);
@@ -491,10 +499,10 @@ void QtMainWindow::setupProjectMenu()
void QtMainWindow::openRecentProject()
{
QAction *action = qobject_cast<QAction *>(sender());
if (action)
{
openProject(action->data().toString());
}
if (action)
{
openProject(action->data().toString());
}
}
void QtMainWindow::updateRecentProjectMenu()
@@ -521,6 +529,11 @@ void QtMainWindow::setWindowSettingsPath(const std::string& windowSettingsPath)
m_windowSettingsPath = windowSettingsPath;
}
void QtMainWindow::toggleShowDockWidgetTitleBars()
{
setShowDockWidgetTitleBars(!m_showDockWidgetTitleBars);
}
void QtMainWindow::setupEditMenu()
{
QMenu *menu = new QMenu(tr("&Edit"), this);
@@ -551,6 +564,14 @@ void QtMainWindow::setupViewMenu()
QMenu *menu = new QMenu(tr("&View"), this);
menuBar()->addMenu(menu);
m_showTitleBarsAction = new QAction("Show Title Bars", this);
m_showTitleBarsAction->setCheckable(true);
m_showTitleBarsAction->setChecked(m_showDockWidgetTitleBars);
connect(m_showTitleBarsAction, SIGNAL(triggered()), this, SLOT(toggleShowDockWidgetTitleBars()));
menu->addAction(m_showTitleBarsAction);
menu->addSeparator();
m_viewSeparator = menu->addSeparator();
menu->addAction(tr("Larger font"), this, SLOT(zoomIn()), QKeySequence::ZoomIn);
@@ -606,3 +627,27 @@ QtMainWindow::DockWidget* QtMainWindow::getDockWidgetForView(View* view)
LOG_ERROR("DockWidget was not found for view.");
return nullptr;
}
void QtMainWindow::setShowDockWidgetTitleBars(bool showTitleBars)
{
m_showDockWidgetTitleBars = showTitleBars;
if (m_showTitleBarsAction)
{
m_showTitleBarsAction->setChecked(showTitleBars);
}
for (DockWidget& dock : m_dockWidgets)
{
if (showTitleBars)
{
dock.widget->setFeatures(QDockWidget::AllDockWidgetFeatures);
dock.widget->setTitleBarWidget(nullptr);
}
else
{
dock.widget->setFeatures(QDockWidget::NoDockWidgetFeatures);
dock.widget->setTitleBarWidget(new QWidget());
}
}
}
+7
View File
@@ -113,6 +113,9 @@ public slots:
static void setWindowSettingsPath(const std::string& windowSettingsPath);
private slots:
void toggleShowDockWidgetTitleBars();
private:
struct DockWidget
{
@@ -132,10 +135,14 @@ private:
DockWidget* getDockWidgetForView(View* view);
void setShowDockWidgetTitleBars(bool showTitleBars);
std::vector<DockWidget> m_dockWidgets;
QMenu* m_viewMenu;
QAction* m_viewSeparator;
QAction** m_recentProjectAction;
QAction* m_showTitleBarsAction;
bool m_showDockWidgetTitleBars;
std::shared_ptr<QtApplicationSettingsScreen> m_applicationSettingsScreen;
std::shared_ptr<QtStartScreen> m_startScreen;