diff --git a/kopete/statusmenu/kopetestatusrootaction.h b/kopete/statusmenu/kopetestatusrootaction.h index d13494c82..b3dd8e97d 100644 --- a/kopete/statusmenu/kopetestatusrootaction.h +++ b/kopete/statusmenu/kopetestatusrootaction.h @@ -1,169 +1,170 @@ /* kopetestatusrootaction.h - Kopete Status Root Action Copyright (c) 2008 by Roman Jarosz Kopete (c) 2008 by the Kopete developers ************************************************************************* * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2 of the License, or (at your option) any later version. * * * ************************************************************************* */ #ifndef KOPETESTATUSROOTACTION_H #define KOPETESTATUSROOTACTION_H #include #include "kopetestatusmenu_export.h" class KActionMenu; class QAction; namespace Kopete { class OnlineStatus; class Account; class StatusMessage; class StatusAction; namespace Status { class StatusItem; class Status; } /** @author Roman Jarosz */ class KOPETESTATUSMENU_EXPORT StatusRootAction : public QObject { Q_OBJECT public: enum Filter { UseCategory, UseStatus, UseStatusAndCategory }; /** * StatusRootAction constructor * @param menu the parent menu * * The menu actions are automatically recreated if anything changes * @note you should catch @p updateMessage, @p changeStatus and @p changeMessage signals **/ StatusRootAction(KActionMenu *menu); /** * StatusRootAction constructor for specific account * @param menu the parent menu * @param filter menu filter type * @param account kopete account * @param onlineStatus online status * @param before an action before the inserted root action * * The menu actions are automatically recreated if anything changes * @note you should catch @p updateMessage signal **/ StatusRootAction(KActionMenu *menu, Filter filter, Account *account, const OnlineStatus &onlineStatus, QAction *before = nullptr); ~StatusRootAction(); /** * insert "setStatus" actions from the given account to the specified actionMenu. * (actions have that menu as parent QObject) * they are connected to the Account::setOnlineStatus signal * * Items are stored by status height. * * @param account the account * @param parent the ActionMenu where action are inserted + * @param before an action before the created actions */ static void createAccountStatusActions(Account *account, KActionMenu *parent, QAction *before = 0); /** * @brief Returns menu filter used for filtering the status actions */ StatusRootAction::Filter filter() const; /** * @brief Returns default category */ int category() const; /** * @brief Returns default online status */ OnlineStatus onlineStatus() const; /** * @brief Get the account this root action was created for * * @return account for this root action or 0. */ Account *account() const; /** * @brief Set current status message * * @param statusMessage current status message */ void setCurrentMessage(const Kopete::StatusMessage &statusMessage); Q_SIGNALS: /** * @brief Update status message for this action * @param statusRootAction the StatusRootAction object which emitted this signal * * This signal is emitted before the status menu is shown and a object * that is receiving this signal should update status message of @p statusRootAction * with @p setCurrentMessage */ void updateMessage(Kopete::StatusRootAction *statusRootAction); /** * @brief Status category and message change request * @param category of new status * @param statusMessage of new status * * This signal is emitted when a status action is activated by the user * * @note this is only emitted if this object wasn't create for specific account */ void changeStatus(uint category, const Kopete::StatusMessage &statusMessage); /** * @brief Status message change request * @param statusMessage of new status * * This signal is emitted when a status action is activated by the user * * @note this is only emitted if this object wasn't created for specific account */ void changeMessage(const Kopete::StatusMessage &statusMessage); protected: friend class Kopete::StatusAction; void changeStatus(const Kopete::Status::Status *status); private Q_SLOTS: void rootChanged(); void childInserted(int i, Kopete::Status::StatusItem *child); void childRemoved(Kopete::Status::StatusItem *child); void setStatusMessage(const Kopete::StatusMessage &statusMessage); void editStatuses(); void showEditStatusDialog(); void editStatusDialogFinished(int); private: void init(); void insertChild(QAction *before, Status::StatusItem *child); class Private; Private *const d; }; } #endif