summaryrefslogtreecommitdiffstats
path: root/kradio3/plugins/gui-quickbar/quickbar.h
blob: 7bf5193b5c08fdec2eb519c795bc46f60cca030f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/***************************************************************************
                          quickbar.h  -  description
                             -------------------
    begin                : Mon Feb 11 2002
    copyright            : (C) 2002 by Martin Witte / Klas Kalass
    email                : witte@kawo1.rwth-aachen.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KRADIO_QUICKBAR_H
#define KRADIO_QUICKBAR_H

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <qwidget.h>

#include "../../src/include/radio_interfaces.h"
#include "../../src/include/widgetplugins.h"
#include "../../src/include/stationselection_interfaces.h"

class ButtonFlowLayout;
class QButtonGroup;
class KConfig;
class QToolButton;

/**
  *@author Martin Witte / Klas Kalass
  */

class QuickBar : public QWidget,
                 public WidgetPluginBase,
                 public IRadioClient,
                 public IStationSelection
{
Q_OBJECT
public:
    QuickBar(const QString &name = QString::null);
    ~QuickBar();

    virtual QString pluginClassName() const { return "QuickBar"; }

    const QString &name() const { return PluginBase::name(); }
          QString &name()       { return PluginBase::name(); }

    virtual bool   connectI(Interface *i);
    virtual bool   disconnectI(Interface *i);

    // IStationSelection

RECEIVERS:
    bool setStationSelection(const QStringList &sl);

ANSWERS:
    const QStringList & getStationSelection () const { return m_stationIDs; }


    // PluginBase

public:
    virtual void   saveState (KConfig *) const;
    virtual void   restoreState (KConfig *);

    virtual ConfigPageInfo  createConfigurationPage();
    virtual AboutPageInfo   createAboutPage();

    // IRadioClient

RECEIVERS:
    bool noticePowerChanged(bool on);
    bool noticeStationChanged (const RadioStation &, int idx);
    bool noticeStationsChanged(const StationList &sl);
    bool noticePresetFileChanged(const QString &/*f*/)           { return false; }

    bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/) { return false; }

    // button/station Management


protected slots:

    void    buttonClicked(int id);

protected:

    int     getButtonID(const RadioStation &rs) const;
    void    activateCurrentButton();
    void    activateButton(const RadioStation &);

    void    autoSetCaption();


    void    dragEnterEvent(QDragEnterEvent* event);
    void    dropEvent(QDropEvent* event);

    // KDE/QT

public slots:

    void    toggleShown() { WidgetPluginBase::pToggleShown(); }
    void    show();
    void    hide();
    void    showOnOrgDesktop();
    void    setGeometry (const QRect &r);
    void    setGeometry (int x, int y, int w, int h);

protected:
    void    rebuildGUI();
    void    showEvent(QShowEvent *);
    void    hideEvent(QHideEvent *);
    void    resizeEvent(QResizeEvent *);

    const QWidget *getWidget() const { return this; }
          QWidget *getWidget()       { return this; }

protected :

    ButtonFlowLayout *m_layout;
    QButtonGroup     *m_buttonGroup;

    QPtrList<QToolButton> m_buttons;

    // config
    bool              m_showShortName;
    QStringList       m_stationIDs;

    bool              m_ignoreNoticeActivation;
};
#endif