@@ -179,6 +179,11 @@ PTZControls::PTZControls(QWidget *parent) : QFrame(parent), ui(new Ui::PTZContro
179179 connect (selectionModel, &QItemSelectionModel::currentChanged, this , &PTZControls::currentChanged);
180180 connect (&accel_timer, &QTimer::timeout, this , &PTZControls::accelTimerHandler);
181181
182+ ui->presetListView ->setModel (&ptzDeviceList);
183+ ui->presetListView ->setRootIndex (ptzDeviceList.index (0 , 0 ));
184+ selectionModel = ui->presetListView ->selectionModel ();
185+ connect (selectionModel, &QItemSelectionModel::currentChanged, this , &PTZControls::presetUpdateActions);
186+
182187 connect (ui->panTiltTouch , &TouchControl::positionChanged, [this ](double p, double t) { setPanTilt (p, t); });
183188
184189 /* Right-click on the dock's Home button → "Save current position as
@@ -942,16 +947,7 @@ void PTZControls::currentChanged(QModelIndex current, QModelIndex previous)
942947 zoom_speed = zoom_accel = 0.0 ;
943948 focus_speed = focus_accel = 0.0 ;
944949
945- auto ptz = ptzDeviceList.getDevice (current);
946- if (ptz) {
947- ui->presetListView ->setModel (ptz->presetModel ());
948- presetUpdateActions ();
949- auto *selectionModel = ui->presetListView ->selectionModel ();
950- if (selectionModel)
951- connect (selectionModel, &QItemSelectionModel::currentChanged, this ,
952- &PTZControls::presetUpdateActions);
953- }
954-
950+ ui->presetListView ->setRootIndex (current);
955951 updateMoveControls ();
956952}
957953
@@ -988,9 +984,8 @@ int PTZControls::presetIndexToId(QModelIndex index)
988984void PTZControls::presetUpdateActions ()
989985{
990986 auto index = ui->presetListView ->currentIndex ();
991- auto model = ui->presetListView ->model ();
992- int count = model ? model->rowCount () : 0 ;
993- ui->actionPresetAdd ->setEnabled (model != nullptr );
987+ int count = ptzDeviceList.rowCount (ptzDeviceList.parent (index));
988+ ui->actionPresetAdd ->setEnabled (ui->cameraList ->currentIndex ().isValid ());
994989 ui->actionPresetRemove ->setEnabled (index.isValid ());
995990 ui->actionPresetMoveUp ->setEnabled (index.isValid () && count > 1 && index.row () > 0 );
996991 ui->actionPresetMoveDown ->setEnabled (index.isValid () && count > 1 && index.row () < count - 1 );
@@ -1095,12 +1090,10 @@ void PTZControls::on_actionProperties_triggered()
10951090
10961091void PTZControls::on_actionPresetAdd_triggered ()
10971092{
1098- auto model = ui->presetListView ->model ();
1099- if (!model)
1100- return ;
1101- auto row = model->rowCount ();
1102- model->insertRows (row, 1 );
1103- QModelIndex index = model->index (row, 0 );
1093+ auto parent = ui->cameraList ->currentIndex ();
1094+ auto row = ptzDeviceList.rowCount (parent);
1095+ ptzDeviceList.insertRows (row, 1 , parent);
1096+ QModelIndex index = ptzDeviceList.index (row, 0 , parent);
11041097 if (index.isValid ()) {
11051098 ui->presetListView ->setCurrentIndex (index);
11061099 ui->presetListView ->edit (index);
@@ -1110,60 +1103,56 @@ void PTZControls::on_actionPresetAdd_triggered()
11101103
11111104void PTZControls::on_actionPresetRemove_triggered ()
11121105{
1113- auto model = ui->presetListView ->model ();
11141106 auto index = ui->presetListView ->currentIndex ();
1115- if (!model || ! index.isValid ())
1107+ if (!index.isValid ())
11161108 return ;
1117- model-> removeRows (index.row (), 1 );
1109+ ptzDeviceList. removeRows (index.row (), 1 , ui-> cameraList -> currentIndex () );
11181110 presetUpdateActions ();
11191111}
11201112
11211113void PTZControls::on_actionPresetMoveUp_triggered ()
11221114{
1123- auto model = ui->presetListView ->model ();
11241115 auto index = ui->presetListView ->currentIndex ();
1125- if (!model || !index.isValid ())
1116+ auto parent = ui->cameraList ->currentIndex ();
1117+ if (!index.isValid ())
11261118 return ;
1127- model-> moveRow (QModelIndex () , index.row (), QModelIndex () , index.row () - 1 );
1119+ ptzDeviceList. moveRow (parent , index.row (), parent , index.row () - 1 );
11281120 presetUpdateActions ();
11291121}
11301122
11311123void PTZControls::on_actionPresetMoveDown_triggered ()
11321124{
1133- auto model = ui->presetListView ->model ();
11341125 auto index = ui->presetListView ->currentIndex ();
1135- if (!model || !index.isValid ())
1126+ auto parent = ui->cameraList ->currentIndex ();
1127+ if (!index.isValid ())
11361128 return ;
1137- model-> moveRow (QModelIndex () , index.row (), QModelIndex () , index.row () + 2 );
1129+ ptzDeviceList. moveRow (parent , index.row (), parent , index.row () + 2 );
11381130 presetUpdateActions ();
11391131}
11401132
11411133void PTZControls::on_actionPresetRename_triggered ()
11421134{
1143- auto model = ui->presetListView ->model ();
11441135 auto index = ui->presetListView ->currentIndex ();
1145- if (!model || ! index.isValid ())
1136+ if (!index.isValid ())
11461137 return ;
11471138 ui->presetListView ->edit (index);
11481139}
11491140
11501141void PTZControls::on_actionPresetSave_triggered ()
11511142{
1152- auto model = ui->presetListView ->model ();
11531143 auto index = ui->presetListView ->currentIndex ();
1154- if (!model || ! index.isValid ())
1144+ if (!index.isValid ())
11551145 return ;
11561146 presetSet (presetIndexToId (index));
11571147}
11581148
11591149void PTZControls::on_actionPresetClear_triggered ()
11601150{
1161- auto model = ui->presetListView ->model ();
11621151 auto index = ui->presetListView ->currentIndex ();
1163- if (!model || ! index.isValid ())
1152+ if (!index.isValid ())
11641153 return ;
11651154 presetReset (presetIndexToId (index));
1166- ui-> presetListView -> model ()-> setData (index, " " );
1155+ ptzDeviceList. setData (index, " " );
11671156}
11681157
11691158PTZDeviceListDelegate::PTZDeviceListDelegate (QObject *parent) : QStyledItemDelegate(parent)
0 commit comments