diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui
index ffa1dd713..22c6276d9 100644
--- a/companion/src/apppreferencesdialog.ui
+++ b/companion/src/apppreferencesdialog.ui
@@ -6,7 +6,7 @@
0
0
- 864
+ 865
673
@@ -45,7 +45,7 @@
- 3
+ 1
@@ -936,7 +936,7 @@ Mode 4:
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
- Remove empty model slots when deleting models (only applies for radios w/out categories)
+ Remove empty model slots when deleting models (only applies for radios w/out labels)
diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp
index b5b7b667e..4c18f39a8 100644
--- a/companion/src/mdichild.cpp
+++ b/companion/src/mdichild.cpp
@@ -536,9 +536,8 @@ void MdiChild::initModelsList()
refresh();
if (firmware->getCapability(Capability::HasModelLabels)) {
- ui->modelsList->header()->resizeSection(0, ui->modelsList->header()->sectionSize(0) * 2); // pad out categories and model names
- } else if (firmware->getCapability(Capability::HasModelLabels)) {
-
+ ui->modelsList->header()->resizeSection(0, ui->modelsList->header()->sectionSize(0) * 1.5); // pad out model names
+ ui->modelsList->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents); // minimise rx #
} else {
ui->modelsList->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); // minimise Index
ui->modelsList->header()->resizeSection(1, ui->modelsList->header()->sectionSize(1) * 1.5); // pad out model names
@@ -571,9 +570,6 @@ void MdiChild::onItemActivated(const QModelIndex index)
else
openModelEditWindow(mIdx);
}
- else if (modelsListModel->isCategoryType(index)) {
- ui->modelsList->edit(index);
- }
}
void MdiChild::onItemSelected(const QModelIndex &)
@@ -733,7 +729,7 @@ bool MdiChild::insertModelRows(int atModelIdx, int count)
return true;
}
-// Finds the first empty slot and inserts the model into it. In case of category-style models, will append to end of list.
+// Finds the first empty slot and inserts the model into it.
// Return -1 if no slot was found, otherwise new array index.
// ModelsListModel::refresh() needs to be called at some point afterwards to sync the data.
int MdiChild::modelAppend(const ModelData model)
@@ -775,7 +771,6 @@ int MdiChild::newModel(int modelIndex)
}
setModified();
setSelectedModel(modelIndex);
- //qDebug() << modelIndex << categoryIndex << isNewModel;
if (isNewModel) {
if (g.newModelAction() == AppData::MODEL_ACT_WIZARD)
@@ -863,7 +858,6 @@ void MdiChild::pasteModelData(const QMimeData * mimeData, const QModelIndex row,
bool modified = false;
int modelIdx = modelsListModel->getModelIndex(row);
-// int categoryIdx = modelsListModel->getCategoryIndex(row);
unsigned inserts = 0;
QVector deletesList;
@@ -871,17 +865,16 @@ void MdiChild::pasteModelData(const QMimeData * mimeData, const QModelIndex row,
bool hasOwnData = modelsListModel->hasOwnMimeData(mimeData);
move = (move && hasOwnData);
- //qDebug().nospace() << "row: " << row << "; ins: " << insert << "; mv: " << move << "; row modelIdx: " << modelIdx << "; row categoryIdx: " << categoryIdx << "; removeSlots: " << removeModelSlotsWhenDeleting;
+ //qDebug().nospace() << "row: " << row << "; ins: " << insert << "; mv: " << move << "; row modelIdx: " << modelIdx;
// Model data
for (int i=0; i < modelsList.size(); ++i) {
- int origMdlIdx = hasOwnData ? modelsList.at(i).modelIndex : -1; // where is the modeul in *our* current array?
+ int origMdlIdx = hasOwnData ? modelsList.at(i).modelIndex : -1; // where is the model in *our* current array?
bool doMove = (origMdlIdx > -1 && origMdlIdx < (int)radioData.models.size() && (move || cutModels.contains(origMdlIdx))); // DnD-moved or clipboard cut
bool ok = true;
if (modelIdx == -1 || (!insert && modelIdx >= (int)radioData.models.size())) {
- // This handles pasting onto a category label or pasting past the end
- // of a category when pasting multiple models.
+ // This handles pasting past the end or when pasting multiple models.
modelIdx = modelAppend(modelsList[i]);
if (modelIdx < 0) {
ok = false;
@@ -895,8 +888,13 @@ void MdiChild::pasteModelData(const QMimeData * mimeData, const QModelIndex row,
++inserts;
}
}
- else { // pasting on top of a slot
- if (!radioData.models[modelIdx].isEmpty() && !deletesList.contains(modelIdx)) {
+ else if (!deletesList.contains(modelIdx)) {
+ // pasting on top of a slot
+ if (radioData.models[modelIdx].isEmpty()) {
+ radioData.models[modelIdx] = modelsList[i];
+ ok = true;
+ }
+ else {
QMessageBox msgBox;
msgBox.setWindowTitle(CPN_STR_APP_NAME);
msgBox.setIcon(QMessageBox::Warning);
diff --git a/companion/src/mdichild.h b/companion/src/mdichild.h
index bfbbd8638..221824483 100644
--- a/companion/src/mdichild.h
+++ b/companion/src/mdichild.h
@@ -53,8 +53,8 @@ class MdiChild : public QWidget
ACT_GEN_CPY,
ACT_GEN_PST,
ACT_GEN_SIM,
- ACT_ITM_EDT, // edit model/rename category
- ACT_ITM_DEL, // delete model or cat
+ ACT_ITM_EDT,
+ ACT_ITM_DEL,
ACT_LBL_ADD,
ACT_LBL_DEL,
ACT_LBL_MVU, // Move up
@@ -81,7 +81,6 @@ class MdiChild : public QWidget
QString currentFile() const;
QString userFriendlyCurrentFile() const;
- QVector getSelectedCategories() const;
QVector getSelectedModels() const;
QList getGeneralActions();
QList getEditActions();
diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp
index d9c1a65bc..f4efab9eb 100644
--- a/companion/src/modelslist.cpp
+++ b/companion/src/modelslist.cpp
@@ -23,18 +23,16 @@
ModelListItem::ModelListItem(const QVector & itemData):
itemData(itemData),
parentItem(NULL),
- categoryIndex(-1),
modelIndex(-1),
flags(0),
highlightRX(false)
{
}
-ModelListItem::ModelListItem(ModelListItem * parent, int categoryIndex, int modelIndex):
+ModelListItem::ModelListItem(ModelListItem * parent, int modelIndex):
ModelListItem(QVector(parent->columnCount()))
{
setParent(parent);
- setCategoryIndex(categoryIndex);
setModelIndex(modelIndex);
}
@@ -71,16 +69,16 @@ QVariant ModelListItem::data(int column) const
return itemData.value(column);
}
-ModelListItem *ModelListItem::insertChild(const int row, int categoryIndex, int modelIndex)
+ModelListItem *ModelListItem::insertChild(const int row, int modelIndex)
{
- ModelListItem * item = new ModelListItem(this, categoryIndex, modelIndex);
+ ModelListItem * item = new ModelListItem(this, modelIndex);
childItems.insert(row, item);
return item;
}
-ModelListItem * ModelListItem::appendChild(int categoryIndex, int modelIndex)
+ModelListItem * ModelListItem::appendChild(int modelIndex)
{
- return insertChild(childItems.size(), categoryIndex, modelIndex);
+ return insertChild(childItems.size(), modelIndex);
}
bool ModelListItem::removeChildren(int position, int count)
@@ -97,7 +95,7 @@ bool ModelListItem::removeChildren(int position, int count)
bool ModelListItem::insertChildren(int row, int count)
{
for (int i=0; i < count; ++i) {
- insertChild(row + i, -1, -1);
+ insertChild(row + i, -1);
}
return true;
}
@@ -119,11 +117,6 @@ void ModelListItem::setFlag(const quint16 & flag, const bool on)
flags &= ~flag;
}
-bool ModelListItem::isCategory() const
-{
- return (modelIndex < 0 && categoryIndex > -1);
-}
-
bool ModelListItem::isModel() const
{
return (modelIndex > -1);
@@ -443,10 +436,8 @@ void ModelsListModel::encodeModelsData(const QModelIndexList & indexes, QByteArr
{
foreach (const QModelIndex &index, indexes) {
if (index.isValid() && index.column() == 0) {
- if (!getItem(index)->isCategory()) { // TODO: encode categoreis also
- data->append('M');
- data->append((char *)&radioData->models[getModelIndex(index)], sizeof(ModelData));
- }
+ data->append('M');
+ data->append((char *)&radioData->models[getModelIndex(index)], sizeof(ModelData));
}
}
}
@@ -555,35 +546,16 @@ QModelIndex ModelsListModel::getIndexForModel(const int modelIndex, QModelIndex
return QModelIndex();
}
-QModelIndex ModelsListModel::getIndexForCategory(const int categoryIndex)
-{
- for (int i = 0; i < rowCount(); ++i) {
- if (getItem(index(i, 0))->getCategoryIndex() == categoryIndex)
- return index(i, 0);
- }
- return QModelIndex();
-}
-
int ModelsListModel::getModelIndex(const QModelIndex & index) const
{
return getItem(index)->getModelIndex();
}
-int ModelsListModel::getCategoryIndex(const QModelIndex & index) const
-{
- return getItem(index)->getCategoryIndex();
-}
-
int ModelsListModel::rowNumber(const QModelIndex & index) const
{
return getItem(index)->childNumber();
}
-bool ModelsListModel::isCategoryType(const QModelIndex & index) const
-{
- return index.isValid() && getItem(index)->isCategory();
-}
-
bool ModelsListModel::isModelType(const QModelIndex & index) const
{
return index.isValid() && getItem(index)->isModel();
@@ -642,10 +614,10 @@ void ModelsListModel::refresh()
model.modelIndex = i;
if (hasLabels) {
- current = rootItem->appendChild(0, i);
+ current = rootItem->appendChild(i);
}
else {
- current = rootItem->appendChild(0, i);
+ current = rootItem->appendChild(i);
current->setData(currentColumn++, QString().sprintf("%02d", i + 1));
}
diff --git a/companion/src/modelslist.h b/companion/src/modelslist.h
index fc9b42ead..c85d8561a 100644
--- a/companion/src/modelslist.h
+++ b/companion/src/modelslist.h
@@ -31,15 +31,15 @@ class ModelListItem
enum ModelListItemFlags { MarkedForCut = 0x01 };
explicit ModelListItem(const QVector & itemData);
- explicit ModelListItem(ModelListItem * parent, int categoryIndex, int modelIndex);
+ explicit ModelListItem(ModelListItem * parent, int modelIndex);
~ModelListItem();
ModelListItem * child(int number);
int childCount() const;
int columnCount() const;
QVariant data(int column) const;
- ModelListItem * appendChild(int categoryIndex, int modelIndex);
- ModelListItem * insertChild(const int row, int categoryIndex, int modelIndex);
+ ModelListItem * appendChild( int modelIndex);
+ ModelListItem * insertChild(const int row, int modelIndex);
bool removeChildren(int position, int count);
bool insertChildren(int row, int count);
@@ -50,8 +50,6 @@ class ModelListItem
void setParent(ModelListItem * p) { parentItem = p; }
int getModelIndex() const { return modelIndex; }
void setModelIndex(int value) { modelIndex = value; }
- int getCategoryIndex() const { return categoryIndex; }
- void setCategoryIndex(int value) { categoryIndex = value; }
void setHighlightRX(int value) { highlightRX = value; }
bool isHighlightRX() const { return highlightRX; }
@@ -59,14 +57,12 @@ class ModelListItem
void setFlags(const quint16 & value) { flags = value; }
void setFlag(const quint16 & flag, const bool on = true);
- bool isCategory() const;
bool isModel() const;
private:
QList childItems;
QVector itemData;
ModelListItem * parentItem;
- int categoryIndex;
int modelIndex;
quint16 flags;
bool highlightRX;
@@ -92,7 +88,7 @@ class ModelsListModel : public QAbstractItemModel
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
virtual QModelIndex parent(const QModelIndex &index) const Q_DECL_OVERRIDE;
- virtual Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE;
+ virtual Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE;
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
@@ -124,11 +120,8 @@ class ModelsListModel : public QAbstractItemModel
static int countModelsInMimeData(const QMimeData * mimeData);
QModelIndex getIndexForModel(const int modelIndex, QModelIndex parent = QModelIndex());
- QModelIndex getIndexForCategory(const int categoryIndex);
int getModelIndex(const QModelIndex & index) const;
- int getCategoryIndex(const QModelIndex & index) const;
int rowNumber(const QModelIndex & index = QModelIndex()) const;
- bool isCategoryType(const QModelIndex & index) const;
bool isModelType(const QModelIndex & index) const;
public slots: