Blame src/lib/adwaita.h

Packit Bot 052d53
/*************************************************************************
Packit Bot 052d53
 * Copyright (C) 2014 by Hugo Pereira Da Costa <hugo.pereira@free.fr>    *
Packit Bot 052d53
 * Copyright (C) 2019 Jan Grulich <jgrulich@redhat.com>                  *
Packit Bot 052d53
 *                                                                       *
Packit Bot 052d53
 * This program is free software; you can redistribute it and/or modify  *
Packit Bot 052d53
 * it under the terms of the GNU General Public License as published by  *
Packit Bot 052d53
 * the Free Software Foundation; either version 2 of the License, or     *
Packit Bot 052d53
 * (at your option) any later version.                                   *
Packit Bot 052d53
 *                                                                       *
Packit Bot 052d53
 * This program is distributed in the hope that it will be useful,       *
Packit Bot 052d53
 * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
Packit Bot 052d53
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
Packit Bot 052d53
 * GNU General Public License for more details.                          *
Packit Bot 052d53
 *                                                                       *
Packit Bot 052d53
 * You should have received a copy of the GNU General Public License     *
Packit Bot 052d53
 * along with this program; if not, write to the                         *
Packit Bot 052d53
 * Free Software Foundation, Inc.,                                       *
Packit Bot 052d53
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
Packit Bot 052d53
 *************************************************************************/
Packit Bot 052d53
Packit Bot 052d53
#ifndef ADWAITA_H
Packit Bot 052d53
#define ADWAITA_H
Packit Bot 052d53
Packit Bot 052d53
#include "adwaitaqt_export.h"
Packit Bot 052d53
Packit Bot 052d53
#include <QColor>
Packit Bot 052d53
#include <QFlags>
Packit Bot 052d53
#include <QPalette>
Packit Bot 052d53
#include <QPointer>
Packit Bot 052d53
#include <QStyle>
Packit Bot 052d53
#include <QScopedPointer>
Packit Bot 052d53
#include <QWeakPointer>
Packit Bot 052d53
Packit Bot 052d53
namespace Adwaita
Packit Bot 052d53
{
Packit Bot 052d53
Packit Bot 052d53
//*@name convenience typedef
Packit Bot 052d53
//@{
Packit Bot 052d53
Packit Bot 052d53
//* scoped pointer convenience typedef
Packit Bot 052d53
template<typename T> using WeakPointer = QPointer<T>;
Packit Bot 052d53
Packit Bot 052d53
//* scoped pointer convenience typedef
Packit Bot 052d53
template<typename T> using ScopedPointer = QScopedPointer<T, QScopedPointerPodDeleter>;
Packit Bot 052d53
Packit Bot 052d53
//@}
Packit Bot 052d53
Packit Bot 052d53
//* Settings
Packit Bot 052d53
namespace Settings
Packit Bot 052d53
{
Packit Bot 052d53
    const bool SingleClick {true};
Packit Bot 052d53
    const bool ShowIconsOnPushButtons {true};
Packit Bot 052d53
    const int ToolButtonStyle {Qt::ToolButtonTextBesideIcon};
Packit Bot 052d53
    const bool ShowIconsInMenuItems {true};
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
enum EnumMnemonicsMode { MN_NEVER, MN_AUTO, MN_ALWAYS };
Packit Bot 052d53
Packit Bot 052d53
enum EnumWindowDragMode { WD_NONE, WD_MINIMAL, WD_FULL };
Packit Bot 052d53
Packit Bot 052d53
//* Config
Packit Bot 052d53
namespace Config
Packit Bot 052d53
{
Packit Bot 052d53
    // Common
Packit Bot 052d53
    const int ShadowStrength {0};
Packit Bot 052d53
    const int ShadowSize {0};
Packit Bot 052d53
    const QColor ShadowColor {Qt::transparent};
Packit Bot 052d53
    const bool OutlineCloseButton {false};
Packit Bot 052d53
Packit Bot 052d53
    // Style
Packit Bot 052d53
    const bool AnimationsEnabled {true};
Packit Bot 052d53
    const int AnimationSteps {100};
Packit Bot 052d53
    const int AnimationsDuration {180};
Packit Bot 052d53
    const bool StackedWidgetTransitionsEnabled {false};
Packit Bot 052d53
    const bool ProgressBarAnimated {true};
Packit Bot 052d53
    const int ProgressBarBusyStepDuration {600};
Packit Bot 052d53
    const int ScrollBarAddLineButtons {0};
Packit Bot 052d53
    const int ScrollBarSubLineButtons {0};
Packit Bot 052d53
    const bool ScrollBarShowOnMouseOver {true};
Packit Bot 052d53
    const int MnemonicsMode {MN_AUTO};
Packit Bot 052d53
    const bool ToolBarDrawItemSeparator {0};
Packit Bot 052d53
    const bool ViewDrawFocusIndicator {true};
Packit Bot 052d53
    const bool SliderDrawTickMarks {true};
Packit Bot 052d53
    const bool ViewDrawTreeBranchLines {true};
Packit Bot 052d53
    const bool ViewInvertSortIndicator {true};
Packit Bot 052d53
    const bool TabBarDrawCenteredTabs {false};
Packit Bot 052d53
    const bool TitleWidgetDrawFrame {true};
Packit Bot 052d53
    const bool DockWidgetDrawFrame {false};
Packit Bot 052d53
    const bool SidePanelDrawFrame {false};
Packit Bot 052d53
    const bool MenuItemDrawStrongFocus {true};
Packit Bot 052d53
    const int WindowDragMode {0};
Packit Bot 052d53
    const QStringList WindowDragWhiteList;
Packit Bot 052d53
    const QStringList WindowDragBlackList;
Packit Bot 052d53
    const bool UseWMMoveResize {true};
Packit Bot 052d53
    const bool SplitterProxyEnabled {true};
Packit Bot 052d53
    const int SplitterProxyWidth {3};
Packit Bot 052d53
    const bool WidgetExplorerEnabled {false};
Packit Bot 052d53
    const bool DrawWidgetRects {false};
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
namespace PropertyNames
Packit Bot 052d53
{
Packit Bot 052d53
    const char noAnimations[] = "_kde_no_animations";
Packit Bot 052d53
    const char noWindowGrab[] = "_kde_no_window_grab";
Packit Bot 052d53
    const char netWMForceShadow[] = "_KDE_NET_WM_FORCE_SHADOW";
Packit Bot 052d53
    const char netWMSkipShadow[] = "_KDE_NET_WM_SKIP_SHADOW";
Packit Bot 052d53
    const char sidePanelView[] = "_kde_side_panel_view";
Packit Bot 052d53
    const char toolButtonAlignment[] = "_kde_toolButton_alignment";
Packit Bot 052d53
    const char menuTitle[] = "_adwaita_toolButton_menutitle";
Packit Bot 052d53
    const char alteredBackground[] = "_adwaita_altered_background";
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
//* metrics
Packit Bot 052d53
enum Metrics {
Packit Bot 052d53
    // frames
Packit Bot 052d53
    Frame_FrameWidth = 4,
Packit Bot 052d53
    Frame_FrameRadius = 5,
Packit Bot 052d53
Packit Bot 052d53
    // layout
Packit Bot 052d53
    Layout_TopLevelMarginWidth = 10,
Packit Bot 052d53
    Layout_ChildMarginWidth = 6,
Packit Bot 052d53
    Layout_DefaultSpacing = 6,
Packit Bot 052d53
Packit Bot 052d53
    // line editors
Packit Bot 052d53
    LineEdit_FrameWidth = 3,
Packit Bot 052d53
    LineEdit_MarginHeight = 2,
Packit Bot 052d53
    LineEdit_MarginWidth = 8,
Packit Bot 052d53
    LineEdit_MinHeight = 36,
Packit Bot 052d53
    LineEdit_MinWidth = 80,
Packit Bot 052d53
Packit Bot 052d53
    // menu items
Packit Bot 052d53
    Menu_FrameWidth = 0,
Packit Bot 052d53
    MenuItem_MarginWidth = 4,
Packit Bot 052d53
    MenuItem_ItemSpacing = 6,
Packit Bot 052d53
    MenuItem_AcceleratorSpace = 16,
Packit Bot 052d53
    MenuButton_IndicatorWidth = 20,
Packit Bot 052d53
Packit Bot 052d53
    // combobox
Packit Bot 052d53
    ComboBox_FrameWidth = 4,
Packit Bot 052d53
    ComboBox_MarginHeight = 4,
Packit Bot 052d53
    ComboBox_MarginWidth = 8,
Packit Bot 052d53
    ComboBox_MinHeight = 36,
Packit Bot 052d53
    ComboBox_MinWidth = 80,
Packit Bot 052d53
Packit Bot 052d53
    // spinbox
Packit Bot 052d53
    SpinBox_FrameWidth = LineEdit_FrameWidth,
Packit Bot 052d53
    SpinBox_ArrowButtonWidth = 20,
Packit Bot 052d53
    SpinBox_MinHeight = 36,
Packit Bot 052d53
    SpinBox_MinWidth = 80,
Packit Bot 052d53
    SpinBox_MarginHeight = 4,
Packit Bot 052d53
    SpinBox_MarginWidth = 8,
Packit Bot 052d53
Packit Bot 052d53
    // groupbox title margin
Packit Bot 052d53
    GroupBox_TitleMarginWidth = 4,
Packit Bot 052d53
Packit Bot 052d53
    // buttons
Packit Bot 052d53
    Button_MinHeight = 36,
Packit Bot 052d53
    Button_MinWidth = 80,
Packit Bot 052d53
    Button_MarginHeight = 4,
Packit Bot 052d53
    Button_MarginWidth = 8,
Packit Bot 052d53
    Button_ItemSpacing = 4,
Packit Bot 052d53
Packit Bot 052d53
    // tool buttons
Packit Bot 052d53
    ToolButton_MarginWidth = 6,
Packit Bot 052d53
    ToolButton_ItemSpacing = 4,
Packit Bot 052d53
    ToolButton_InlineIndicatorWidth = 12,
Packit Bot 052d53
Packit Bot 052d53
    // checkboxes and radio buttons
Packit Bot 052d53
    CheckBox_Size = 22,
Packit Bot 052d53
    CheckBox_FocusMarginWidth = 3,
Packit Bot 052d53
    CheckBox_ItemSpacing = 4,
Packit Bot 052d53
Packit Bot 052d53
    // menubar items
Packit Bot 052d53
    MenuBarItem_MarginWidth = 8,
Packit Bot 052d53
    MenuBarItem_MarginHeight = 5,
Packit Bot 052d53
Packit Bot 052d53
    // scrollbars
Packit Bot 052d53
    ScrollBar_Extend = 14,
Packit Bot 052d53
    ScrollBar_SliderWidth = 8,
Packit Bot 052d53
    ScrollBar_MinSliderHeight = 24,
Packit Bot 052d53
    ScrollBar_NoButtonHeight = (ScrollBar_Extend - ScrollBar_SliderWidth) / 2,
Packit Bot 052d53
    ScrollBar_SingleButtonHeight = 0,
Packit Bot 052d53
    ScrollBar_DoubleButtonHeight = 0,
Packit Bot 052d53
Packit Bot 052d53
    // toolbars
Packit Bot 052d53
    ToolBar_FrameWidth = 2,
Packit Bot 052d53
    ToolBar_HandleExtent = 10,
Packit Bot 052d53
    ToolBar_HandleWidth = 6,
Packit Bot 052d53
    ToolBar_SeparatorWidth = 8,
Packit Bot 052d53
    ToolBar_ExtensionWidth = 20,
Packit Bot 052d53
    ToolBar_ItemSpacing = 0,
Packit Bot 052d53
Packit Bot 052d53
    // progressbars
Packit Bot 052d53
    ProgressBar_BusyIndicatorSize = 24,
Packit Bot 052d53
    ProgressBar_Thickness = 3,
Packit Bot 052d53
    ProgressBar_ItemSpacing = 3,
Packit Bot 052d53
Packit Bot 052d53
    // mdi title bar
Packit Bot 052d53
    TitleBar_MarginWidth = 4,
Packit Bot 052d53
Packit Bot 052d53
    // sliders
Packit Bot 052d53
    Slider_TickLength = 4,
Packit Bot 052d53
    Slider_TickMarginWidth = 6,
Packit Bot 052d53
    Slider_GrooveThickness = 3,
Packit Bot 052d53
    Slider_ControlThickness = 24,
Packit Bot 052d53
Packit Bot 052d53
    // tabbar
Packit Bot 052d53
    TabBar_TabMarginHeight = 9,
Packit Bot 052d53
    TabBar_TabMarginWidth = 8,
Packit Bot 052d53
    TabBar_TabMinWidth = 80,
Packit Bot 052d53
    TabBar_TabMinHeight = 36,
Packit Bot 052d53
    TabBar_TabItemSpacing = 8,
Packit Bot 052d53
    TabBar_TabOverlap = 1,
Packit Bot 052d53
    TabBar_BaseOverlap = 0,
Packit Bot 052d53
Packit Bot 052d53
    // tab widget
Packit Bot 052d53
    TabWidget_MarginWidth = 4,
Packit Bot 052d53
Packit Bot 052d53
    // toolbox
Packit Bot 052d53
    ToolBox_TabMinWidth = 80,
Packit Bot 052d53
    ToolBox_TabItemSpacing = 4,
Packit Bot 052d53
    ToolBox_TabMarginWidth = 8,
Packit Bot 052d53
Packit Bot 052d53
    // tooltips
Packit Bot 052d53
    ToolTip_FrameWidth = 3,
Packit Bot 052d53
Packit Bot 052d53
    // scroll areas
Packit Bot 052d53
    ScrollArea_FrameWidth = 2,
Packit Bot 052d53
Packit Bot 052d53
    // list headers
Packit Bot 052d53
    Header_MarginWidth = 3,
Packit Bot 052d53
    Header_ItemSpacing = 2,
Packit Bot 052d53
    Header_ArrowSize = 10,
Packit Bot 052d53
Packit Bot 052d53
    // tree view
Packit Bot 052d53
    ItemView_ArrowSize = 10,
Packit Bot 052d53
    ItemView_ItemMarginWidth = 3,
Packit Bot 052d53
    SidePanel_ItemMarginWidth = 4,
Packit Bot 052d53
Packit Bot 052d53
    // splitter
Packit Bot 052d53
    Splitter_SplitterWidth = 1,
Packit Bot 052d53
Packit Bot 052d53
    // shadow dimensions
Packit Bot 052d53
    Shadow_Overlap = 0
Packit Bot 052d53
Packit Bot 052d53
};
Packit Bot 052d53
Packit Bot 052d53
//* animation mode
Packit Bot 052d53
enum AnimationMode { AnimationNone = 0, AnimationHover = 0x1, AnimationFocus = 0x2, AnimationEnable = 0x4, AnimationPressed = 0x8 };
Packit Bot 052d53
Q_DECLARE_FLAGS(AnimationModes, AnimationMode)
Packit Bot 052d53
Packit Bot 052d53
//* corners
Packit Bot 052d53
enum Corner {
Packit Bot 052d53
    CornerTopLeft = 0x1,
Packit Bot 052d53
    CornerTopRight = 0x2,
Packit Bot 052d53
    CornerBottomLeft = 0x4,
Packit Bot 052d53
    CornerBottomRight = 0x8,
Packit Bot 052d53
    CornersTop = CornerTopLeft | CornerTopRight,
Packit Bot 052d53
    CornersBottom = CornerBottomLeft | CornerBottomRight,
Packit Bot 052d53
    CornersLeft = CornerTopLeft | CornerBottomLeft,
Packit Bot 052d53
    CornersRight = CornerTopRight | CornerBottomRight,
Packit Bot 052d53
    AllCorners = CornerTopLeft | CornerTopRight | CornerBottomLeft | CornerBottomRight
Packit Bot 052d53
};
Packit Bot 052d53
Q_DECLARE_FLAGS(Corners, Corner)
Packit Bot 052d53
Packit Bot 052d53
//* sides
Packit Bot 052d53
enum Side { SideNone = 0x0, SideLeft = 0x1, SideTop = 0x2, SideRight = 0x4, SideBottom = 0x8, AllSides = SideLeft | SideTop | SideRight | SideBottom };
Packit Bot 052d53
Q_DECLARE_FLAGS(Sides, Side)
Packit Bot 052d53
Packit Bot 052d53
//* checkbox state
Packit Bot 052d53
enum CheckBoxState { CheckOff, CheckPartial, CheckOn, CheckAnimated };
Packit Bot 052d53
Packit Bot 052d53
//* radio button state
Packit Bot 052d53
enum RadioButtonState { RadioOff, RadioOn, RadioAnimated };
Packit Bot 052d53
Packit Bot 052d53
//* arrow orientation
Packit Bot 052d53
enum ArrowOrientation { ArrowNone, ArrowUp, ArrowDown, ArrowLeft, ArrowRight };
Packit Bot 052d53
Packit Bot 052d53
//* button type
Packit Bot 052d53
enum ButtonType { ButtonClose, ButtonMaximize, ButtonMinimize, ButtonRestore };
Packit Bot 052d53
Packit Bot 052d53
enum ColorVariant { Unknown, Adwaita, AdwaitaDark, AdwaitaHighcontrast };
Packit Bot 052d53
Packit Bot 052d53
class StyleOptionsPrivate;
Packit Bot 052d53
Packit Bot 052d53
class ADWAITAQT_EXPORT StyleOptions
Packit Bot 052d53
{
Packit Bot 052d53
public:
Packit Bot 052d53
    explicit StyleOptions(const QPalette &palette);
Packit Bot 052d53
    virtual ~StyleOptions();
Packit Bot 052d53
Packit Bot 052d53
    QPalette palette() const;
Packit Bot 052d53
Packit Bot 052d53
    void setColorGroup(QPalette::ColorGroup group);
Packit Bot 052d53
    QPalette::ColorGroup colorGroup() const;
Packit Bot 052d53
Packit Bot 052d53
    void setColorRole(QPalette::ColorRole role);
Packit Bot 052d53
    QPalette::ColorRole colorRole() const;
Packit Bot 052d53
Packit Bot 052d53
    void setColorVariant(ColorVariant variant);
Packit Bot 052d53
    ColorVariant colorVariant() const;
Packit Bot 052d53
Packit Bot 052d53
    void setActive(bool active);
Packit Bot 052d53
    bool active() const;
Packit Bot 052d53
Packit Bot 052d53
    void setHasFocus(bool focus);
Packit Bot 052d53
    bool hasFocus() const;
Packit Bot 052d53
Packit Bot 052d53
    void setMouseOver(bool mouseOver);
Packit Bot 052d53
    bool mouseOver() const;
Packit Bot 052d53
Packit Bot 052d53
    void setOpacity(qreal opacity);
Packit Bot 052d53
    qreal opacity() const;
Packit Bot 052d53
Packit Bot 052d53
    void setAnimationMode(AnimationMode mode);
Packit Bot 052d53
    AnimationMode animationMode() const;
Packit Bot 052d53
Packit Bot 052d53
    void setCheckboxState(CheckBoxState state);
Packit Bot 052d53
    CheckBoxState checkboxState() const;
Packit Bot 052d53
Packit Bot 052d53
    void setState(QStyle::State state);
Packit Bot 052d53
    QStyle::State state() const;
Packit Bot 052d53
Packit Bot 052d53
    void setInMenu(bool inMenu);
Packit Bot 052d53
    bool inMenu() const;
Packit Bot 052d53
Packit Bot 052d53
    void setSunken(bool sunken);
Packit Bot 052d53
    bool sunken() const;
Packit Bot 052d53
Packit Bot 052d53
private:
Packit Bot 052d53
    Q_DECLARE_PRIVATE(StyleOptions)
Packit Bot 052d53
Packit Bot 052d53
    const QScopedPointer<StyleOptionsPrivate> d_ptr;
Packit Bot 052d53
};
Packit Bot 052d53
Packit Bot 052d53
} // namespace Adwaita
Packit Bot 052d53
Packit Bot 052d53
Q_DECLARE_OPERATORS_FOR_FLAGS(Adwaita::AnimationModes)
Packit Bot 052d53
Q_DECLARE_OPERATORS_FOR_FLAGS(Adwaita::Corners)
Packit Bot 052d53
Q_DECLARE_OPERATORS_FOR_FLAGS(Adwaita::Sides)
Packit Bot 052d53
Packit Bot 052d53
#endif // ADWAITA_H