mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 10:22:49 +00:00
172 lines
6.7 KiB
C++
172 lines
6.7 KiB
C++
/**************************************************************************
|
|
* Copyright (C) 2009 Ben Cooksley <bcooksley@kde.org> *
|
|
* Copyright (C) 2007 Will Stephenson <wstephenson@kde.org> *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU General Public License *
|
|
* as published by the Free Software Foundation; either version 2 *
|
|
* of the License, or (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the Free Software *
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA *
|
|
* 02110-1301, USA. *
|
|
***************************************************************************/
|
|
|
|
#ifndef MENUMODEL_H
|
|
#define MENUMODEL_H
|
|
|
|
#include <QtCore/QAbstractItemModel>
|
|
#include "systemsettingsview_export.h"
|
|
|
|
class MenuItem;
|
|
|
|
/**
|
|
* @brief Provides a menu of the MenuItem objects
|
|
*
|
|
* Provides a standardised model to be used with views to display the list of modules in a variety of ways.\n
|
|
* It is recommended to also use this with the MenuProxyModel to provide searching
|
|
* and correct ordering of modules.
|
|
*
|
|
* @author Ben Cooksley <bcooksley@kde.org>
|
|
* @author Will Stephenson <wstephenson@kde.org>
|
|
*/
|
|
class SYSTEMSETTINGSVIEW_EXPORT MenuModel : public QAbstractItemModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
/**
|
|
* Creates a MenuModel using the MenuItem specified. The MenuItem must always be valid
|
|
* throughout the life of the MenuModel, otherwise it will cause crashes.
|
|
*
|
|
* @param menuRoot The MenuItem to use as the basis for providing information.
|
|
* @param parent The QObject to use as a parent of the MenuModel.
|
|
*/
|
|
explicit MenuModel( MenuItem * menuRoot, QObject *parent = 0 );
|
|
|
|
/**
|
|
* Destroys the MenuModel. The menuRoot will not be destroyed.
|
|
*/
|
|
~MenuModel();
|
|
|
|
/**
|
|
* Please see Qt QAbstractItemModel documentation for more details.\n
|
|
* Provides the name, tooltip, icon, category, keywords and the internal MenuItem to views.
|
|
*
|
|
* @param index The QModelIndex you want information about.
|
|
* @param role The information role you want information about.
|
|
* @returns The data requested for the role provided from the QModelIndex provided.
|
|
*/
|
|
QVariant data( const QModelIndex &index, int role ) const;
|
|
|
|
/**
|
|
* Please see Qt QAbstractItemModel documentation for more details.\n
|
|
* Provides the status flags for the QModelIndex specified.
|
|
* The item always has selectable and enabled for its status unless invalid.
|
|
*
|
|
* @returns The flags for the QModelIndex provided.
|
|
*/
|
|
Qt::ItemFlags flags( const QModelIndex &index ) const;
|
|
|
|
/**
|
|
* Please see Qt QAbstractItemModel documentation for more details.\n
|
|
* Provides a QModelIndex at the row and column specified who belongs to the parent specified.
|
|
*
|
|
* @param row Vertical position in the grid of children.
|
|
* @param column Horizontal position in the grid of children.
|
|
* @param parent The parent of the requested child.
|
|
* @returns The QModelIndex for the item requested.
|
|
*/
|
|
QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
|
|
|
|
/**
|
|
* Please see Qt QAbstractItemModel documentation for more details.\n
|
|
* Provides the parent QModelIndex for the child specified.
|
|
*
|
|
* @param index The child of the parent.
|
|
* @returns A QModelIndex for the parent.
|
|
*/
|
|
QModelIndex parent( const QModelIndex &index ) const;
|
|
|
|
/**
|
|
* Please see Qt QAbstractItemModel documentation for more details.\n
|
|
* Provides the number of MenuItems ( categories or modules ) that the specified parent has.
|
|
*
|
|
* @param parent The QModelIndex the count is performed on.
|
|
* @returns The number of rows ( children ) in the parent.
|
|
*/
|
|
int rowCount( const QModelIndex &parent = QModelIndex() ) const;
|
|
|
|
/**
|
|
* Please see Qt QAbstractItemModel documentation for more details.\n
|
|
* Returns 1, the number of columns of information about a row.
|
|
*
|
|
* @param parent This is ignored, as the count is always 1.
|
|
* @returns The number of columns ( 1 ) in the parent.
|
|
*/
|
|
int columnCount( const QModelIndex &parent = QModelIndex() ) const;
|
|
|
|
/**
|
|
* Makes the MenuItem specified be hidden from the list, while still showing its children.\n
|
|
* Children of exceptions consider their grand parents as their parent.
|
|
* Parents of exceptions consider the exceptions children as theirs.
|
|
*
|
|
* @param exception The MenuItem to give an exception to.
|
|
*/
|
|
void addException( MenuItem * exception );
|
|
|
|
/**
|
|
* Revokes the exception granted above. After this, the MenuItem's parents will return their children
|
|
* as normal and the grand children will return their true parents, restoring normal operation.
|
|
* It has no effect if the MenuItem does not have an exception.
|
|
*
|
|
* @param exception The MenuItem to revoke an exception from.
|
|
*/
|
|
void removeException( MenuItem * exception );
|
|
|
|
/**
|
|
* Role used to request the keywords to filter the items when searching.
|
|
*/
|
|
static const int UserFilterRole;
|
|
|
|
/**
|
|
* Role used to request the weight of a module, used to sort the items.
|
|
*/
|
|
static const int UserSortRole;
|
|
|
|
protected:
|
|
/**
|
|
* Provides the MenuItem which is used internally to provide information.
|
|
*
|
|
* @returns The MenuItem used internally.
|
|
*/
|
|
MenuItem* rootItem() const;
|
|
|
|
/**
|
|
* Provides a list of children of an item which has been altered by the exceptions list
|
|
*
|
|
* @param parent The parent of the children desired
|
|
* @returns The list of children for the item specified
|
|
*/
|
|
QList<MenuItem*> childrenList( MenuItem * parent ) const;
|
|
|
|
/**
|
|
* Provides the parent of the child specified altered by the exceptions list
|
|
*
|
|
* @param child The child of the parent
|
|
* @returns The exceptions list affected parent of the child
|
|
*/
|
|
MenuItem* parentItem( MenuItem * child ) const;
|
|
|
|
private:
|
|
class Private;
|
|
Private *const d;
|
|
};
|
|
|
|
#endif
|