selectlistdialog.h
Go to the documentation of this file.
00001 #ifndef SELECT_FROM_LIST_DIALOG_H
00002 #define SELECT_FROM_LIST_DIALOG_H
00003 
00004 #include <QDialog>
00005 #include <deque>
00006 #include "ui_selectlistdialog.h"
00007 
00008 namespace Ui {
00009 class SelectFromListDialog;
00010 }
00011 
00012 class SelectFromListDialog : public QDialog
00013 {
00014     Q_OBJECT
00015 
00016 public:
00017     explicit SelectFromListDialog(const std::deque<std::string> &fields, bool single_selection = true, QWidget *parent = 0);
00018     ~SelectFromListDialog();
00019 
00020     std::vector<int> getSelectedRowNumber() const;
00021 
00022 private slots:
00023     void on_buttonBox_accepted();
00024 
00025     void on_listFieldsWidget_currentRowChanged(int currentRow);
00026 
00027     void on_listFieldsWidget_doubleClicked(const QModelIndex &index);
00028 
00029     void on_pushButtonSelectAll_pressed();
00030 
00031     void on_listFieldsWidget_clicked(const QModelIndex &index);
00032 
00033 private:
00034     Ui::SelectXAxisDialog *ui;
00035     std::vector<int> _selected_row_number;
00036     bool _single_selection;
00037 };
00038 
00039 
00040 //-----------------------------------------------
00041 inline SelectFromListDialog::SelectFromListDialog(const std::deque<std::string>& fields, bool single_selection, QWidget *parent) :
00042     QDialog(parent),
00043     ui(new Ui::SelectXAxisDialog),
00044     _single_selection( single_selection )
00045 {
00046     auto flags = this->windowFlags();
00047     this->setWindowFlags( flags | Qt::WindowStaysOnTopHint);
00048 
00049     ui->setupUi(this);
00050 
00051     if( ! _single_selection) {
00052         ui->listFieldsWidget->setSelectionMode( QAbstractItemView::ExtendedSelection );
00053     }
00054     else{
00055         ui->pushButtonSelectAll->hide();
00056     }
00057 
00058     // if there is only one item in the list, select it by default
00059     for (int i=0; i< fields.size(); i++)
00060     {
00061       auto item = new QListWidgetItem( QString::fromStdString(fields[i]) );
00062       ui->listFieldsWidget->addItem( item );
00063 
00064       if( fields.size() == 1){
00065         item->setSelected(true);
00066       }
00067     }
00068 }
00069 
00070 inline SelectFromListDialog::~SelectFromListDialog()
00071 {
00072     delete ui;
00073 }
00074 
00075 inline std::vector<int> SelectFromListDialog::getSelectedRowNumber() const
00076 {
00077     return _selected_row_number;
00078 }
00079 
00080 inline void SelectFromListDialog::on_listFieldsWidget_clicked(const QModelIndex &index)
00081 {
00082     QModelIndexList indexes = ui->listFieldsWidget->selectionModel()->selectedIndexes();
00083     ui->buttonBox->setEnabled( indexes.empty() == false );
00084 }
00085 
00086 inline void SelectFromListDialog::on_buttonBox_accepted()
00087 {
00088     QModelIndexList indexes = ui->listFieldsWidget->selectionModel()->selectedIndexes();
00089 
00090     foreach(QModelIndex index, indexes)
00091     {
00092         _selected_row_number.push_back(index.row());
00093     }
00094 }
00095 
00096 inline void SelectFromListDialog::on_listFieldsWidget_currentRowChanged(int )
00097 {
00098     QModelIndexList indexes = ui->listFieldsWidget->selectionModel()->selectedIndexes();
00099     ui->buttonBox->setEnabled( indexes.empty() == false );
00100 }
00101 
00102 inline void SelectFromListDialog::on_listFieldsWidget_doubleClicked(const QModelIndex &)
00103 {
00104     if( _single_selection ) {
00105         _selected_row_number.push_back( ui->listFieldsWidget->currentRow() );
00106         this->accept();
00107     }
00108 }
00109 
00110 inline void SelectFromListDialog::on_pushButtonSelectAll_pressed()
00111 {
00112     for (int i=0; i< ui->listFieldsWidget->count(); i++)
00113     {
00114         _selected_row_number.push_back(i);
00115     }
00116     this->accept();
00117 }
00118 
00119 #endif // SELECTXAXISDIALOG_H


plotjuggler
Author(s): Davide Faconti
autogenerated on Wed Jul 3 2019 19:28:05