refs #618, moved menus to menu subfolder

* generated some generic menus which can be reused
* adjusted view base
* new menu to merge with DB data
This commit is contained in:
Klaus Basan
2016-03-22 07:39:43 +01:00
parent c339a3d1e0
commit 7beb5661a3
7 changed files with 294 additions and 68 deletions

View File

@@ -0,0 +1,65 @@
/* Copyright (C) 2015
* swift project Community / Contributors
*
* This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#ifndef BLACKGUI_MENUS_MENUDELEGATE_H
#define BLACKGUI_MENUS_MENUDELEGATE_H
#include <QMenu>
#include <QObject>
namespace BlackGui
{
namespace Menus
{
/*!
* Interface to implement a custom menu
*/
class IMenuDelegate : public QObject
{
Q_OBJECT
public:
//! Display custom menu
virtual void customMenu(QMenu &menu) const = 0;
//! Set nested delegate
void setNestedDelegate(IMenuDelegate *nestedDelegate) { m_nestedDelegate = nestedDelegate; }
//! Nested delegate
IMenuDelegate *getNestedDelegate() const { return m_nestedDelegate; }
//! Destructor
virtual ~IMenuDelegate() {}
protected:
//! Constructor
IMenuDelegate(QWidget *parent = nullptr, bool separator = false) :
QObject(parent), m_separator(separator) {}
//! Delegate down one level
void nestedCustomMenu(QMenu &menu) const
{
if (!m_nestedDelegate) { return; }
m_nestedDelegate->customMenu(menu);
}
//! Add separator
void addSeparator(QMenu &menu) const
{
if (!m_separator || menu.isEmpty()) { return; }
menu.addSeparator();
}
IMenuDelegate *m_nestedDelegate = nullptr; //!< nested delegate if any
bool m_separator = false; //!< at end, terminate with separator
};
} // ns
} // ns
#endif // guard