diff --git a/src/plasmaquick/configmodel.h b/src/plasmaquick/configmodel.h index f95649fe9..318f2fdca 100644 --- a/src/plasmaquick/configmodel.h +++ b/src/plasmaquick/configmodel.h @@ -1,129 +1,129 @@ /* * Copyright 2013 Marco Martin * Copyright 2015 Eike Hein * * This program 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, 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 Library 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 CONFIGMODEL_H #define CONFIGMODEL_H #include #include #include // // W A R N I N G // ------------- // // This file is not part of the public Plasma API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // namespace Plasma { class Applet; } namespace PlasmaQuick { class ConfigPropertyMap; class ConfigCategoryPrivate; class ConfigModelPrivate; class ConfigCategory; -/* +/** * This model contains all the possible config categories for a dialog, * such as categories of the config dialog for an Applet * TODO: it should probably become an import instead of a library? */ class PLASMAQUICK_EXPORT ConfigModel : public QAbstractListModel { Q_OBJECT Q_PROPERTY(QQmlListProperty categories READ categories CONSTANT) Q_CLASSINFO("DefaultProperty", "categories") Q_PROPERTY(int count READ count NOTIFY countChanged) public: enum Roles { NameRole = Qt::UserRole + 1, IconRole, SourceRole, PluginNameRole, VisibleRole, KCMRole }; ConfigModel(QObject *parent = 0); ~ConfigModel(); /** * add a new category in the model * @param ConfigCategory the new category **/ void appendCategory(const QString &iconName, const QString &name, const QString &path, const QString &pluginName); Q_INVOKABLE void appendCategory(const QString &iconName, const QString &name, const QString &path, const QString &pluginName, bool visible); /** * clears the model **/ void clear(); void setApplet(Plasma::Applet *interface); Plasma::Applet *applet() const; int count() { return rowCount(); } int rowCount(const QModelIndex &index = QModelIndex()) const Q_DECL_OVERRIDE; QVariant data(const QModelIndex &, int) const Q_DECL_OVERRIDE; QHash roleNames() const Q_DECL_OVERRIDE; /** * @param row the row for which the data will be returned * @raturn the data of the specified row **/ Q_INVOKABLE QVariant get(int row) const; /** * @return the categories of the model **/ QQmlListProperty categories(); Q_SIGNALS: /** * emitted when the count is changed **/ void countChanged(); private: friend class ConfigModelPrivate; ConfigModelPrivate *const d; }; } #endif // multiple inclusion guard diff --git a/src/plasmaquick/dialog.h b/src/plasmaquick/dialog.h index e86a4902b..e99876187 100644 --- a/src/plasmaquick/dialog.h +++ b/src/plasmaquick/dialog.h @@ -1,260 +1,260 @@ /*************************************************************************** * Copyright 2011 Marco Martin * * Copyright 2013 Sebastian Kügler * * * * 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 DIALOG_PROXY_P #define DIALOG_PROXY_P #include #include #include #include #include #include #include #include // // W A R N I N G // ------------- // // This file is not part of the public Plasma API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // class QQuickItem; class QScreen; namespace PlasmaQuick { class DialogPrivate; /** * @class Dialog * * Dialog creates a Plasma themed top level window that can contain any QML component. * * It can be automatically positioned relative to a visual parent * The dialog will resize to the size of the main item * * @code{.qml} * import QtQuick 2.0 * import org.kde.plasma.core 2.0 as PlasmaCore * Item { * PlasmaCore.Dialog { * visible: true * mainItem: Item { * width: 500 * height: 500 * * Text { * anchors.centerIn: parent * color: "red" * text: "text" * } * } * } * } * @endcode * */ class PLASMAQUICK_EXPORT Dialog : public QQuickWindow, public QQmlParserStatus { Q_OBJECT Q_INTERFACES(QQmlParserStatus) /** * The main QML item that will be displayed in the Dialog */ Q_PROPERTY(QQuickItem *mainItem READ mainItem WRITE setMainItem NOTIFY mainItemChanged) /** * The main QML item that will be displayed in the Dialog */ Q_PROPERTY(QQuickItem *visualParent READ visualParent WRITE setVisualParent NOTIFY visualParentChanged) /** * Margins of the dialog around the mainItem. * @see DialogMargins */ Q_PROPERTY(QObject *margins READ margins CONSTANT) /** * Plasma Location of the dialog window. Useful if this dialog is a popup for a panel */ Q_PROPERTY(Plasma::Types::Location location READ location WRITE setLocation NOTIFY locationChanged) /** * Type of the window */ Q_PROPERTY(WindowType type READ type WRITE setType NOTIFY typeChanged) /** * Whether the dialog should be hidden when the dialog loses focus. * * The default value is @c false. **/ Q_PROPERTY(bool hideOnWindowDeactivate READ hideOnWindowDeactivate WRITE setHideOnWindowDeactivate NOTIFY hideOnWindowDeactivateChanged) /** * Whether the dialog is output only. Default value is @c false. If it is @c true * the dialog does not accept input and all pointer events are not accepted, thus the dialog * is click through. * * This property is currently only supported on the X11 platform. On any other platform the * property has no effect. **/ Q_PROPERTY(bool outputOnly READ isOutputOnly WRITE setOutputOnly NOTIFY outputOnlyChanged) /** * This property holds the window flags of the window. * The window flags control the window's appearance in the windowing system, * whether it's a dialog, popup, or a regular window, and whether it should * have a title bar, etc. * Regardless to what the user sets, the flags will always have the * FramelessWindowHint flag set */ Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFramelessFlags NOTIFY flagsChanged) /** * This property holds how (and if at all) the dialog should draw its own background * or if it is complete responsibility of the content item to render a background. * Note that in case of NoBackground it loses kwin side shadows and blur */ Q_PROPERTY(BackgroundHints backgroundHints READ backgroundHints WRITE setBackgroundHints NOTIFY backgroundHintsChanged) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChangedProxy) Q_CLASSINFO("DefaultProperty", "mainItem") public: enum WindowType { Normal = NET::Normal, Dock = NET::Dock, DialogWindow = NET::Dialog, PopupMenu = NET::PopupMenu, Tooltip = NET::Tooltip, Notification = NET::Notification, OnScreenDisplay = NET::OnScreenDisplay }; Q_ENUM(WindowType) enum BackgroundHints { NoBackground = 0, /**< Not drawing a background under the applet, the dialog has its own implementation */ StandardBackground = 1 /**< The standard background from the theme is drawn */ }; Q_ENUM(BackgroundHints) Dialog(QQuickItem *parent = 0); ~Dialog(); //PROPERTIES ACCESSORS QQuickItem *mainItem() const; void setMainItem(QQuickItem *mainItem); QQuickItem *visualParent() const; void setVisualParent(QQuickItem *visualParent); Plasma::Types::Location location() const; void setLocation(Plasma::Types::Location location); QObject *margins() const; void setFramelessFlags(Qt::WindowFlags flags); void setType(WindowType type); WindowType type() const; bool hideOnWindowDeactivate() const; void setHideOnWindowDeactivate(bool hide); void setOutputOnly(bool outputOnly); bool isOutputOnly() const; BackgroundHints backgroundHints() const; void setBackgroundHints(BackgroundHints hints); bool isVisible() const; void setVisible(bool visible); /** * @returns The suggested screen position for the popup * @arg item the item the popup has to be positioned relatively to. if null, the popup will be positioned in the center of the window * @arg alignment alignment of the popup compared to the item */ virtual QPoint popupPosition(QQuickItem *item, const QSize &size); Q_SIGNALS: void mainItemChanged(); void locationChanged(); void visualParentChanged(); void typeChanged(); void hideOnWindowDeactivateChanged(); void outputOnlyChanged(); void flagsChanged(); void backgroundHintsChanged(); void visibleChangedProxy(); //redeclaration of QQuickWindow::visibleChanged /** * Emitted when the @see hideOnWindowDeactivate property is @c true and this dialog lost focus to a * window that is neither a parent dialog to nor a child dialog of this dialog. */ void windowDeactivated(); protected: - /* + /** * set the dialog position. subclasses may change it. ToolTipDialog adjusts the position in an animated way */ virtual void adjustGeometry(const QRect &geom); //Reimplementations void classBegin() Q_DECL_OVERRIDE; void componentComplete() Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *re) Q_DECL_OVERRIDE; void focusInEvent(QFocusEvent *ev) Q_DECL_OVERRIDE; void focusOutEvent(QFocusEvent *ev) Q_DECL_OVERRIDE; void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void hideEvent(QHideEvent *event) Q_DECL_OVERRIDE; bool event(QEvent *event) Q_DECL_OVERRIDE; private: friend class DialogPrivate; DialogPrivate *const d; Q_PRIVATE_SLOT(d, void updateInputShape()) Q_PRIVATE_SLOT(d, void updateTheme()) Q_PRIVATE_SLOT(d, void updateVisibility(bool visible)) Q_PRIVATE_SLOT(d, void updateMinimumWidth()) Q_PRIVATE_SLOT(d, void updateMinimumHeight()) Q_PRIVATE_SLOT(d, void updateMaximumWidth()) Q_PRIVATE_SLOT(d, void updateMaximumHeight()) Q_PRIVATE_SLOT(d, void updateLayoutParameters()) Q_PRIVATE_SLOT(d, void slotMainItemSizeChanged()) }; } #endif