2021-06-15 Fred Gleason <fredg@paravelsystems.com>

* Refactored the 'StartButton' widget in rdairplay(1) to be more
	idiomatic.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-06-15 13:50:18 -04:00
parent a0023dbc1e
commit d4cb5ce4e4
3 changed files with 36 additions and 51 deletions

View File

@ -21893,3 +21893,6 @@
2021-06-14 Fred Gleason <fredg@paravelsystems.com> 2021-06-14 Fred Gleason <fredg@paravelsystems.com>
* Made the sound panel resizeable in rdairplay(1). * Made the sound panel resizeable in rdairplay(1).
* Make the sound panel resizeable in rdpanel(1). * Make the sound panel resizeable in rdpanel(1).
2021-06-15 Fred Gleason <fredg@paravelsystems.com>
* Refactored the 'StartButton' widget in rdairplay(1) to be more
idiomatic.

View File

@ -42,33 +42,36 @@ StartButton::StartButton(bool allow_pause,QWidget *parent)
// Create Palettes // Create Palettes
// //
start_stop_color= start_stop_color=
QPalette(QColor(BUTTON_STOPPED_BACKGROUND_COLOR),palette().color(QPalette::Background)); QPalette(QColor(BUTTON_STOPPED_BACKGROUND_COLOR),
palette().color(QPalette::Background));
start_play_color= start_play_color=
QPalette(QColor(BUTTON_PLAY_BACKGROUND_COLOR),palette().color(QPalette::Background)); QPalette(QColor(BUTTON_PLAY_BACKGROUND_COLOR),
palette().color(QPalette::Background));
start_play_color. start_play_color.
setColor(QPalette::ButtonText,QColor(BUTTON_PLAY_TEXT_COLOR)); setColor(QPalette::ButtonText,QColor(BUTTON_PLAY_TEXT_COLOR));
start_pause_color= start_pause_color=
QPalette(QColor(BUTTON_PAUSE_BACKGROUND_COLOR),palette().color(QPalette::Background)); QPalette(QColor(BUTTON_PAUSE_BACKGROUND_COLOR),
palette().color(QPalette::Background));
start_pause_color. start_pause_color.
setColor(QPalette::ButtonText,QColor(BUTTON_PAUSE_TEXT_COLOR)); setColor(QPalette::ButtonText,QColor(BUTTON_PAUSE_TEXT_COLOR));
start_from_color= start_from_color=QPalette(QColor(BUTTON_FROM_BACKGROUND_COLOR),
QPalette(QColor(BUTTON_FROM_BACKGROUND_COLOR),palette().color(QPalette::Background)); palette().color(QPalette::Background));
start_from_color. start_from_color.
setColor(QPalette::ButtonText,QColor(BUTTON_FROM_TEXT_COLOR)); setColor(QPalette::ButtonText,QColor(BUTTON_FROM_TEXT_COLOR));
start_to_color= start_to_color=QPalette(QColor(BUTTON_TO_BACKGROUND_COLOR),
QPalette(QColor(BUTTON_TO_BACKGROUND_COLOR),palette().color(QPalette::Background)); palette().color(QPalette::Background));
start_to_color. start_to_color.
setColor(QPalette::ButtonText,QColor(BUTTON_TO_TEXT_COLOR)); setColor(QPalette::ButtonText,QColor(BUTTON_TO_TEXT_COLOR));
start_disabled_color= start_disabled_color=QPalette(QColor(BUTTON_DISABLED_BACKGROUND_COLOR),
QPalette(QColor(BUTTON_DISABLED_BACKGROUND_COLOR),palette().color(QPalette::Background)); palette().color(QPalette::Background));
start_disabled_color. start_disabled_color.
setColor(QPalette::ButtonText,QColor(BUTTON_DISABLED_TEXT_COLOR)); setColor(QPalette::ButtonText,QColor(BUTTON_DISABLED_TEXT_COLOR));
start_error_color= start_error_color=QPalette(QColor(BUTTON_ERROR_BACKGROUND_COLOR),
QPalette(QColor(BUTTON_ERROR_BACKGROUND_COLOR),palette().color(QPalette::Background)); palette().color(QPalette::Background));
start_error_color. start_error_color.
setColor(QPalette::ButtonText,QColor(BUTTON_ERROR_TEXT_COLOR)); setColor(QPalette::ButtonText,QColor(BUTTON_ERROR_TEXT_COLOR));
@ -77,24 +80,17 @@ StartButton::StartButton(bool allow_pause,QWidget *parent)
} }
void StartButton::setTime(QString str) void StartButton::setTime(const QTime &time)
{
start_time=QTime();
Resize(geometry().x(),geometry().y(),geometry().width(),geometry().height());
}
void StartButton::setTime(QTime time)
{ {
start_time=time; start_time=time;
Resize(geometry().x(),geometry().y(),geometry().width(),geometry().height()); update();
} }
void StartButton::setPort(QString port) void StartButton::setPort(const QString &port)
{ {
start_port=port; start_port=port;
Resize(geometry().x(),geometry().y(),geometry().width(),geometry().height()); update();
} }
@ -174,7 +170,7 @@ void StartButton::setMode(Mode mode,RDCart::Type cart_type)
start_title=ERROR_MODE_TITLE; start_title=ERROR_MODE_TITLE;
break; break;
} }
Resize(geometry().x(),geometry().y(),geometry().width(),geometry().height()); update();
} }
@ -184,27 +180,14 @@ void StartButton::setTimeMode(RDAirPlayConf::TimeMode mode)
return; return;
} }
start_time_mode=mode; start_time_mode=mode;
Resize(geometry().x(),geometry().y(),geometry().width(),geometry().height()); update();
} }
void StartButton::setGeometry(int x,int y,int w,int h) void StartButton::paintEvent(QPaintEvent *e)
{ {
Resize(x,y,w,h); int w=size().width()-2;
QPushButton::setGeometry(x,y,w,h); int h=size().width()-2;
}
void StartButton::setGeometry(QRect rect)
{
setGeometry(rect.x(),rect.y(),rect.width(),rect.height());
}
void StartButton::Resize(int x,int y,int w,int h)
{
w-=2;
h-=2;
QPixmap *pix=new QPixmap(w,h); QPixmap *pix=new QPixmap(w,h);
QPainter *p=new QPainter(); QPainter *p=new QPainter();
p->begin(pix); p->begin(pix);
@ -235,8 +218,10 @@ void StartButton::Resize(int x,int y,int w,int h)
p->drawText(15,70,start_port); p->drawText(15,70,start_port);
} }
p->end(); p->end();
setIcon(*pix); delete p;
setIconSize(QSize(w-2,h-2));
p=new QPainter(this);
p->drawPixmap(1,1,w,w,*pix,0,0,pix->size().width(),pix->size().height());
delete p; delete p;
delete pix; delete pix;
} }

View File

@ -2,7 +2,7 @@
// //
// The Start Button for RDAirPlay Rivendell // The Start Button for RDAirPlay Rivendell
// //
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as // it under the terms of the GNU General Public License version 2 as
@ -31,19 +31,16 @@ class StartButton : public RDPushButton
enum Mode {Stop=0,Play=1,Pause=2,AddFrom=3,AddTo=4,DeleteFrom=5, enum Mode {Stop=0,Play=1,Pause=2,AddFrom=3,AddTo=4,DeleteFrom=5,
MoveFrom=6,MoveTo=7,CopyFrom=8,CopyTo=9,Disabled=10,Error=11}; MoveFrom=6,MoveTo=7,CopyFrom=8,CopyTo=9,Disabled=10,Error=11};
StartButton(bool allow_pause=false,QWidget *parent=0); StartButton(bool allow_pause=false,QWidget *parent=0);
void setTime(QString); void setTime(const QTime &time);
void setTime(QTime); void setPort(const QString &port);
void setPort(QString port); Mode mode() const;
StartButton::Mode mode() const;
void setMode(Mode mode,RDCart::Type cart_type); void setMode(Mode mode,RDCart::Type cart_type);
void setTimeMode(RDAirPlayConf::TimeMode mode); void setTimeMode(RDAirPlayConf::TimeMode mode);
public slots: protected:
void setGeometry(int x,int y,int w,int h); void paintEvent(QPaintEvent *e);
void setGeometry(QRect rect);
private: private:
void Resize(int x,int y,int w,int h);
StartButton::Mode start_mode; StartButton::Mode start_mode;
QFont start_label_font; QFont start_label_font;
QFont start_counter_font; QFont start_counter_font;