kde-playground/kdepimlibs/akonadi/calendar/standardcalendaractionmanager.h
Ivailo Monev a9b00154bc generic: replace forward class declarations with header inclusions
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
2019-07-31 18:05:48 +00:00

206 lines
7.2 KiB
C++

/*
* Copyright (C) 2010 Casey Link <unnamedrambler@gmail.com>
* Copyright (C) 2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
* Copyright (c) 2009 - 2010 Tobias Koenig <tokoe@kde.org>
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This library 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 Library General Public
* License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
#ifndef AKONADI_STANDARDCALENDARACTIONMANAGER_H
#define AKONADI_STANDARDCALENDARACTIONMANAGER_H
#include "akonadi-calendar_export.h"
#include <akonadi/standardactionmanager.h>
#include <QtCore/QObject>
//needed for windows ce, its defined somewhere
#undef CreateEvent
class KAction;
class KActionCollection;
#include <QItemSelectionModel>
#include <QWidget>
namespace Akonadi
{
class Item;
/**
* @short Manages calendar specific actions for collection and item views.
*
* @author Casey Link <unnamedrambler@gmail.com>
* @since 4.6
*/
class AKONADI_CALENDAR_EXPORT StandardCalendarActionManager : public QObject
{
Q_OBJECT
public:
/**
* Describes the supported actions.
*/
enum Type {
CreateEvent = StandardActionManager::LastType + 1, ///< Creates a new event
CreateTodo, ///< Creates a new todo
CreateSubTodo, ///< Creates a new sub-todo
CreateJournal, ///< Creates a new journal
EditIncidence, ///< Edit currently selected event/todo/journal
LastType ///< Marks last action
};
/**
* Creates a new standard calendar action manager.
*
* @param actionCollection The action collection to operate on.
* @param parent The parent widget.
*/
explicit StandardCalendarActionManager(KActionCollection *actionCollection, QWidget *parent = 0);
/**
* Destroys the standard calendar action manager.
*/
~StandardCalendarActionManager();
/**
* Sets the collection selection model based on which the collection
* related actions should operate. If none is set, all collection actions
* will be disabled.
* @param selectionModel the selection model for collections
*/
void setCollectionSelectionModel(QItemSelectionModel *selectionModel);
/**
* Sets the item selection model based on which the item related actions
* should operate. If none is set, all item actions will be disabled.
* @param selectionModel the selection model for items
*/
void setItemSelectionModel(QItemSelectionModel *selectionModel);
/**
* Creates the action of the given type and adds it to the action collection
* specified in the constructor if it does not exist yet. The action is
* connected to its default implementation provided by this class.
* @param type the type of action to create
*/
KAction* createAction(Type type);
/**
* Creates the action of the given type and adds it to the action collection
* specified in the constructor if it does not exist yet. The action is
* connected to its default implementation provided by this class.
* @param type the type of action to create
*/
KAction* createAction(StandardActionManager::Type type);
/**
* Convenience method to create all standard actions.
* @see createAction()
*/
void createAllActions();
/**
* Returns the action of the given type, 0 if it has not been created (yet).
*/
KAction* action(Type type) const;
/**
* Returns the action of the given type, 0 if it has not been created (yet).
* @param type the type of action to return
*/
KAction* action(StandardActionManager::Type type) const;
/**
* Sets the label of the action @p type to @p text, which is used during
* updating the action state and substituted according to the number of
* selected objects. This is mainly useful to customize the label of actions
* that can operate on multiple objects.
*
* Example:
* @code
* acctMgr->setActionText( Akonadi::StandardActionManager::CopyItems,
* ki18np( "Copy Item", "Copy %1 Items" ) );
* @endcode
*/
void setActionText(StandardActionManager::Type type, const KLocalizedString &text);
/**
* Sets whether the default implementation for the given action @p type
* shall be executed when the action is triggered.
*
* @param intercept If @c false, the default implementation will be executed,
* if @c true no action is taken.
*/
void interceptAction(Type type, bool intercept = true);
/**
* Sets whether the default implementation for the given action @p type
* shall be executed when the action is triggered.
*
* @param intercept If @c false, the default implementation will be executed,
* if @c true no action is taken.
*/
void interceptAction(StandardActionManager::Type type, bool intercept = true);
/**
* Returns the list of collections that are currently selected.
* The list is empty if no collection is currently selected.
*/
Akonadi::Collection::List selectedCollections() const;
/**
* Returns the list of items that are currently selected.
* The list is empty if no item is currently selected.
*/
Akonadi::Item::List selectedItems() const;
/**
* Sets the @p text of the action @p type for the given @p context.
*/
void setContextText(StandardActionManager::Type type, StandardActionManager::TextContext context, const QString &text);
/**
* Sets the @p text of the action @p type for the given @p context.
*/
void setContextText(StandardActionManager::Type type, StandardActionManager::TextContext context, const KLocalizedString &text);
void setCollectionPropertiesPageNames(const QStringList &names);
Q_SIGNALS:
/**
* This signal is emitted whenever the action state has been updated.
* In case you have special needs for changing the state of some actions,
* connect to this signal and adjust the action state.
*/
void actionStateUpdated();
private:
//@cond PRIVATE
class Private;
Private* const d;
Q_PRIVATE_SLOT(d, void slotCreateEvent())
Q_PRIVATE_SLOT(d, void slotCreateTodo())
Q_PRIVATE_SLOT(d, void slotCreateSubTodo())
Q_PRIVATE_SLOT(d, void slotCreateJournal())
Q_PRIVATE_SLOT(d, void slotEditIncidence())
Q_PRIVATE_SLOT(d, void updateActions())
//@endcond
};
}
#endif