Warning, file /pim/kalarm/src/fontcolourbutton.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  *  fontcolourbutton.h  -  pushbutton widget to select a font and colour
0003  *  Program:  kalarm
0004  *  SPDX-FileCopyrightText: 2003-2022 David Jarvie <djarvie@kde.org>
0005  *
0006  *  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #pragma once
0010 
0011 #include "lib/pushbutton.h"
0012 
0013 #include <QDialog>
0014 #include <QFont>
0015 #include <QColor>
0016 
0017 class FontColourChooser;
0018 
0019 class FontColourButton : public PushButton
0020 {
0021     Q_OBJECT
0022 public:
0023     explicit FontColourButton(QWidget* parent = nullptr);
0024 
0025     /** Set the font to use. If using the default font, 
0026      *  @param font  Font to use.
0027      *               If @p defaultFont is true, this is the font which is currently the default.
0028      *  @param defaultFont  true to use the default font.
0029      */
0030     void          setFont(const QFont& font, bool defaultFont);
0031 
0032     void          setBgColour(const QColor& c) { mBgColour = c; }
0033     void          setFgColour(const QColor& c) { mFgColour = c; }
0034     bool          defaultFont() const    { return mDefaultFont; }
0035     QFont         font() const           { return mDefaultFont ? QFont() : mFont; }
0036     QColor        bgColour() const       { return mBgColour; }
0037     QColor        fgColour() const       { return mFgColour; }
0038     void          setReadOnly(bool ro, bool noHighlight = false) override
0039                              { mReadOnly = ro; PushButton::setReadOnly(ro, noHighlight); }
0040     bool          isReadOnly() const override     { return mReadOnly; }
0041 
0042 Q_SIGNALS:
0043     /** Signal emitted whenever a font or colour has been selected. */
0044     void          selected(const QColor& fg, const QColor& bg);
0045 
0046 protected Q_SLOTS:
0047     void          slotButtonPressed();
0048 
0049 private:
0050     QColor      mBgColour, mFgColour;
0051     QFont       mFont;
0052     bool        mDefaultFont {true};
0053     bool        mReadOnly {false};
0054 };
0055 
0056 
0057 // Font and colour selection dialog displayed by the push button
0058 class FontColourDlg : public QDialog
0059 {
0060     Q_OBJECT
0061 public:
0062     FontColourDlg(const QColor& bg, const QColor& fg, const QFont&, bool defaultFont,
0063                   const QString& caption, QWidget* parent = nullptr);
0064     bool         defaultFont() const   { return mDefaultFont; }
0065     QFont        font() const          { return mFont; }
0066     QColor       bgColour() const      { return mBgColour; }
0067     QColor       fgColour() const      { return mFgColour; }
0068     void         setReadOnly(bool);
0069     bool         isReadOnly() const    { return mReadOnly; }
0070 
0071 protected Q_SLOTS:
0072     virtual void slotOk();
0073 
0074 private:
0075     FontColourChooser* mChooser;
0076     QColor             mBgColour, mFgColour;
0077     QFont              mFont;
0078     bool               mDefaultFont;
0079     bool               mReadOnly {false};
0080 };
0081 
0082 // vim: et sw=4: