2023-10-05 Fred Gleason <fredg@paravelsystems.com>

* Fixed a regression in rdairplay(1) and rdpanel(1) that caused
	extraneous buttons to appear when resizing the sound panel.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2023-10-05 10:55:28 -04:00
parent 18c3d85108
commit 7c46d99bc3
5 changed files with 17 additions and 12 deletions

View File

@ -24414,3 +24414,6 @@
2023-10-05 Fred Gleason <fredg@paravelsystems.com> 2023-10-05 Fred Gleason <fredg@paravelsystems.com>
* Clarified the entries for the 'Pause Panel' ['PU'] and * Clarified the entries for the 'Pause Panel' ['PU'] and
'Stop Panel' ['PT'] RMLs in the Operations Guide. 'Stop Panel' ['PT'] RMLs in the Operations Guide.
2023-10-05 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in rdairplay(1) and rdpanel(1) that caused
extraneous buttons to appear when resizing the sound panel.

View File

@ -257,13 +257,15 @@ QString RDButtonPanel::json(int padding,bool final) const
void RDButtonPanel::setVisible(bool state) void RDButtonPanel::setVisible(bool state)
{ {
printf("Calling RDButtonPanel::setVisible(%d) @ %p\n",state,this);
RDWidget::setVisible(state); RDWidget::setVisible(state);
for(int i=0;i<PANEL_MAX_BUTTON_ROWS;i++) { for(int i=0;i<PANEL_MAX_BUTTON_ROWS;i++) {
for(int j=0;j<PANEL_MAX_BUTTON_COLUMNS;j++) { for(int j=0;j<PANEL_MAX_BUTTON_COLUMNS;j++) {
panel_button[i][j]->setVisible(state); panel_button[i][j]->setVisible(state);
} }
} }
if(state) {
UpdateViewport();
}
} }
@ -271,9 +273,9 @@ void RDButtonPanel::buttonClickedData(int id)
{ {
int pnum=id/(PANEL_MAX_BUTTON_COLUMNS*PANEL_MAX_BUTTON_ROWS); int pnum=id/(PANEL_MAX_BUTTON_COLUMNS*PANEL_MAX_BUTTON_ROWS);
int pos=id%(PANEL_MAX_BUTTON_COLUMNS*PANEL_MAX_BUTTON_ROWS); int pos=id%(PANEL_MAX_BUTTON_COLUMNS*PANEL_MAX_BUTTON_ROWS);
printf("emitting buttonClicked(%d,%d,%d)\n",
pnum,pos%PANEL_MAX_BUTTON_COLUMNS,pos/PANEL_MAX_BUTTON_COLUMNS); emit buttonClicked(pnum,pos%PANEL_MAX_BUTTON_COLUMNS,
emit buttonClicked(pnum,pos%PANEL_MAX_BUTTON_COLUMNS,pos/PANEL_MAX_BUTTON_COLUMNS); pos/PANEL_MAX_BUTTON_COLUMNS);
} }
@ -287,6 +289,12 @@ void RDButtonPanel::resizeEvent(QResizeEvent *e)
PANEL_BUTTON_SIZE_Y); PANEL_BUTTON_SIZE_Y);
} }
} }
UpdateViewport();
}
void RDButtonPanel::UpdateViewport()
{
for(int i=0;i<PANEL_MAX_BUTTON_ROWS;i++) { for(int i=0;i<PANEL_MAX_BUTTON_ROWS;i++) {
for(int j=0;j<PANEL_MAX_BUTTON_COLUMNS;j++) { for(int j=0;j<PANEL_MAX_BUTTON_COLUMNS;j++) {
RDPanelButton *button=panel_button[i][j]; RDPanelButton *button=panel_button[i][j];

View File

@ -70,6 +70,7 @@ class RDButtonPanel : public RDWidget
void resizeEvent(QResizeEvent *e); void resizeEvent(QResizeEvent *e);
private: private:
void UpdateViewport();
int panel_number; int panel_number;
QString panel_title; QString panel_title;
QSignalMapper *panel_button_mapper; QSignalMapper *panel_button_mapper;

View File

@ -18,7 +18,6 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// //
#include <QDrag> #include <QDrag>
#include <QPainter> #include <QPainter>

View File

@ -673,7 +673,6 @@ void RDSoundPanel::panelDown()
void RDSoundPanel::panelActivatedData(int n) void RDSoundPanel::panelActivatedData(int n)
{ {
printf("panelActivatedData(%d)\n",n);
QString username; QString username;
if(panel_type==RDAirPlayConf::UserPanel) { if(panel_type==RDAirPlayConf::UserPanel) {
username=rda->user()->name(); username=rda->user()->name();
@ -754,8 +753,6 @@ void RDSoundPanel::setupClickedData()
void RDSoundPanel::buttonClickedData(int pnum,int col,int row) void RDSoundPanel::buttonClickedData(int pnum,int col,int row)
{ {
// printf("buttonMapperData(pnum: %d,col: %d row: %d)\n",pnum,col,row);
if(panel_current_panel==NULL) { if(panel_current_panel==NULL) {
printf("NO CURRENT PANEL!\n"); printf("NO CURRENT PANEL!\n");
return; return;
@ -1300,9 +1297,7 @@ void RDSoundPanel::UpdatePanels(const QString &username)
} }
for(int i=panel_arrays.value(username).size();i<max_panels;i++) { for(int i=panel_arrays.value(username).size();i<max_panels;i++) {
RDButtonPanel *panel=new RDButtonPanel(type,i,this); RDButtonPanel *panel=new RDButtonPanel(type,i,this);
printf("new panel type: %d number: %d ptr: %p\n", panel->setGeometry(0,0,size().width()-5,size().height()-60);
type,i,panel);
connect(panel,SIGNAL(buttonClicked(int,int,int)), connect(panel,SIGNAL(buttonClicked(int,int,int)),
this,SLOT(buttonClickedData(int,int,int))); this,SLOT(buttonClickedData(int,int,int)));
panel->hide(); panel->hide();
@ -1379,7 +1374,6 @@ void RDSoundPanel::ShowPanel(RDAirPlayConf::PanelType type,int offset)
if(type==RDAirPlayConf::UserPanel) { if(type==RDAirPlayConf::UserPanel) {
username=rda->user()->name(); username=rda->user()->name();
} }
printf("username: %s\n",username.toUtf8().constData());
if(panel_arrays.value(username).size()>offset) { if(panel_arrays.value(username).size()>offset) {
if(panel_current_panel!=NULL) { if(panel_current_panel!=NULL) {
panel_current_panel->hide(); panel_current_panel->hide();