diff --git a/ChangeLog b/ChangeLog index d051828d..9c795c6c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21149,3 +21149,5 @@ * Removed the 'Q3RangeControl' dependency from 'RDEditAudio'. 2021-02-15 Fred Gleason * Removed the 'Q3PointArray' dependency from 'RDEditAudio'. +2021-02-15 Fred Gleason + * Refactored the 'Select Group' dialog to use the model based API. diff --git a/lib/librd_cs.ts b/lib/librd_cs.ts index 8a8679bd..5c9cee2b 100644 --- a/lib/librd_cs.ts +++ b/lib/librd_cs.ts @@ -3100,11 +3100,11 @@ Bitte Kofiguration prüfen und erneut versuchen. NAME - NÁZEV + NÁZEV DESCRIPTION - POPIS + POPIS &OK diff --git a/lib/librd_de.ts b/lib/librd_de.ts index 7c059048..82dd7972 100644 --- a/lib/librd_de.ts +++ b/lib/librd_de.ts @@ -3085,11 +3085,11 @@ Bitte Kofiguration prüfen und erneut versuchen. NAME - NAME + NAME DESCRIPTION - BESCHREIBUNG + BESCHREIBUNG &OK diff --git a/lib/librd_es.ts b/lib/librd_es.ts index 54068315..827b9e83 100644 --- a/lib/librd_es.ts +++ b/lib/librd_es.ts @@ -3080,11 +3080,11 @@ Do you still want to proceed? NAME - NOMBRE + NOMBRE DESCRIPTION - DESCRIPCIÓN + DESCRIPCIÓN &OK diff --git a/lib/librd_fr.ts b/lib/librd_fr.ts index 9f4ea3c9..f0727f44 100644 --- a/lib/librd_fr.ts +++ b/lib/librd_fr.ts @@ -2602,14 +2602,6 @@ Do you want to overwrite it? Select Group - - NAME - - - - DESCRIPTION - - &OK &OK diff --git a/lib/librd_nb.ts b/lib/librd_nb.ts index 3c69d944..a4225bd3 100644 --- a/lib/librd_nb.ts +++ b/lib/librd_nb.ts @@ -3045,13 +3045,9 @@ Sjekk eksportoppsettet ditt og prøv att. Select Group - - NAME - - DESCRIPTION - SKILDRING + SKILDRING &OK diff --git a/lib/librd_nn.ts b/lib/librd_nn.ts index 3c69d944..a4225bd3 100644 --- a/lib/librd_nn.ts +++ b/lib/librd_nn.ts @@ -3045,13 +3045,9 @@ Sjekk eksportoppsettet ditt og prøv att. Select Group - - NAME - - DESCRIPTION - SKILDRING + SKILDRING &OK diff --git a/lib/librd_pt_BR.ts b/lib/librd_pt_BR.ts index e062d7e2..95de8355 100644 --- a/lib/librd_pt_BR.ts +++ b/lib/librd_pt_BR.ts @@ -3073,11 +3073,11 @@ Por Favor, cheque suas configurações e tenbte outra vez. NAME - NOME + NOME DESCRIPTION - DESCRIÇÃO + DESCRIÇÃO &OK diff --git a/lib/rdlist_groups.cpp b/lib/rdlist_groups.cpp index f9d75ebc..9f63dd75 100644 --- a/lib/rdlist_groups.cpp +++ b/lib/rdlist_groups.cpp @@ -2,7 +2,7 @@ // // A widget to select a Rivendell Group. // -// (C) Copyright 2002-2019 Fred Gleason +// (C) Copyright 2002-2021 Fred Gleason // // 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 @@ -22,7 +22,7 @@ #include "rdescape_string.h" #include "rdlist_groups.h" -RDListGroups::RDListGroups(QString *groupname,const QString &username, +RDListGroups::RDListGroups(QString *groupname,const QString &caption, QWidget *parent) : RDDialog(parent) { @@ -34,25 +34,26 @@ RDListGroups::RDListGroups(QString *groupname,const QString &username, group_name=groupname; - setWindowTitle(tr("Select Group")); + setWindowTitle(caption+" - "+tr("Select Group")); // // Cart List // - group_group_list=new Q3ListView(this,"group_group_list"); - group_group_list->setSelectionMode(Q3ListView::Single); - group_group_list->setGeometry(10,10, + group_group_view=new RDTableView(this); + group_group_view->setGeometry(10,10, sizeHint().width()-20,sizeHint().height()-80); - group_group_list->setAllColumnsShowFocus(true); - group_group_list->setItemMargin(5); - connect(group_group_list, - SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)), - this, - SLOT(doubleClickedData(Q3ListViewItem *,const QPoint &,int))); - group_group_list->addColumn(tr("NAME")); - group_group_list->setColumnAlignment(0,Qt::AlignHCenter); - group_group_list->addColumn(tr("DESCRIPTION")); - group_group_list->setColumnAlignment(1,Qt::AlignLeft); + group_group_model=new RDGroupListModel(false,false,this); + group_group_model->setFont(font()); + group_group_model->setPalette(palette()); + group_group_view->setModel(group_group_model); + for(int i=2;icolumnCount();i++) { + group_group_view->hideColumn(i); + } + connect(group_group_model,SIGNAL(modelReset()), + group_group_view,SLOT(resizeColumnsToContents())); + connect(group_group_view,SIGNAL(doubleClicked(const QModelIndex &)), + this,SLOT(doubleClickedData(const QModelIndex &))); + group_group_model->changeUser(); // // OK Button @@ -70,11 +71,6 @@ RDListGroups::RDListGroups(QString *groupname,const QString &username, button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50); button->setFont(buttonFont()); connect(button,SIGNAL(clicked()),this,SLOT(cancelData())); - - // - // Populate Data - // - BuildGroupList(username); } @@ -90,8 +86,7 @@ QSizePolicy RDListGroups::sizePolicy() const } -void RDListGroups::doubleClickedData(Q3ListViewItem *item,const QPoint &pt, - int col) +void RDListGroups::doubleClickedData(const QModelIndex &index) { okData(); } @@ -99,18 +94,20 @@ void RDListGroups::doubleClickedData(Q3ListViewItem *item,const QPoint &pt, void RDListGroups::okData() { - Q3ListViewItem *item=group_group_list->selectedItem(); - if(item==NULL) { + QModelIndexList rows=group_group_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { return; } - *group_name=item->text(0); - done(0); + *group_name=group_group_model->groupName(rows.first()); + + done(true); } void RDListGroups::cancelData() { - done(-1); + done(false); } @@ -118,34 +115,3 @@ void RDListGroups::closeEvent(QCloseEvent *e) { cancelData(); } - - -void RDListGroups::BuildGroupList(const QString &username) -{ - QString sql; - RDSqlQuery *q; - Q3ListViewItem *item=NULL; - Q3ListViewItem *cur_item=NULL; - - group_group_list->clear(); - sql=QString("select ")+ - "USER_PERMS.GROUP_NAME,"+ // 00 - "GROUPS.DESCRIPTION "+ // 01 - "from USER_PERMS left join GROUPS "+ - "on USER_PERMS.GROUP_NAME=GROUPS.NAME where "+ - "USER_NAME=\""+RDEscapeString(username)+"\""; - q=new RDSqlQuery(sql); - while(q->next()) { - item=new Q3ListViewItem(group_group_list); - item->setText(0,q->value(0).toString()); - item->setText(1,q->value(1).toString()); - if(q->value(0).toString()==*group_name) { - cur_item=item; - } - } - delete q; - if(cur_item!=NULL) { - group_group_list->setSelected(cur_item,true); - group_group_list->ensureItemVisible(item); - } -} diff --git a/lib/rdlist_groups.h b/lib/rdlist_groups.h index e9dfb8c1..5ee0d4c6 100644 --- a/lib/rdlist_groups.h +++ b/lib/rdlist_groups.h @@ -2,7 +2,7 @@ // // A widget to select a Rivendell Group. // -// (C) Copyright 2002-2019 Fred Gleason +// (C) Copyright 2002-2021 Fred Gleason // // 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 @@ -21,22 +21,22 @@ #ifndef RDLIST_GROUPS_H #define RDLIST_GROUPS_H -#include - -#include +#include #include +#include +#include class RDListGroups : public RDDialog { Q_OBJECT public: - RDListGroups(QString *groupname,const QString &username,QWidget *parent=0); + RDListGroups(QString *groupname,const QString &caption,QWidget *parent=0); QSize sizeHint() const; QSizePolicy sizePolicy() const; private slots: - void doubleClickedData(Q3ListViewItem *item,const QPoint &pt,int col); + void doubleClickedData(const QModelIndex &index); void okData(); void cancelData(); @@ -46,7 +46,8 @@ class RDListGroups : public RDDialog private: void BuildGroupList(const QString &username); QString *group_name; - Q3ListView *group_group_list; + RDTableView *group_group_view; + RDGroupListModel *group_group_model; }; diff --git a/rdlibrary/disk_ripper.cpp b/rdlibrary/disk_ripper.cpp index 72b374c2..46dc4fe9 100644 --- a/rdlibrary/disk_ripper.cpp +++ b/rdlibrary/disk_ripper.cpp @@ -568,9 +568,8 @@ void DiskRipper::setMultiButtonData() // // Get Destination Group // - RDListGroups *list_groups=new RDListGroups(rip_group_text,rda->user()->name(), - this); - if(list_groups->exec()<0) { + RDListGroups *list_groups=new RDListGroups(rip_group_text,"RDLibrary",this); + if(!list_groups->exec()) { delete list_groups; return; }