feat(cpn): add filenames to model compare (#5187)
This commit is contained in:
@@ -75,14 +75,23 @@ bool CompareDialog::handleMimeData(const QMimeData * mimeData)
|
||||
{
|
||||
QVector<ModelData> mList;
|
||||
GeneralSettings gs;
|
||||
QString fdata;
|
||||
|
||||
if (!ModelsListModel::decodeMimeData(mimeData, &mList, &gs) || mList.isEmpty())
|
||||
return false;
|
||||
|
||||
if (!ModelsListModel::decodeFileData(mimeData, &fdata))
|
||||
return false;
|
||||
|
||||
for (int i=0; i < mList.size(); ++i) {
|
||||
GMData data;
|
||||
data.model = mList[i];
|
||||
data.gs = gs;
|
||||
data.fname = fdata;
|
||||
qDebug() << "filename" << data.fname;
|
||||
modelsList.append(data);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -117,6 +126,7 @@ void CompareDialog::compare()
|
||||
if (name.isEmpty())
|
||||
name = tr("Unnamed Model %1").arg(i+1);
|
||||
|
||||
name.append(QString(" (%1)").arg(modelsList[i].fname));
|
||||
QWidget * hdr = new QWidget(this);
|
||||
hdr->setLayout(new QHBoxLayout());
|
||||
hdr->layout()->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
@@ -40,6 +40,7 @@ class CompareDialog : public QDialog
|
||||
struct GMData {
|
||||
ModelData model;
|
||||
GeneralSettings gs;
|
||||
QString fname;
|
||||
};
|
||||
|
||||
MultiModelPrinter * multimodelprinter;
|
||||
|
||||
@@ -1251,6 +1251,7 @@ void MdiChild::newFile(bool createDefaults)
|
||||
isUntitled = true;
|
||||
curFile = QString("document%1.etx").arg(sequenceNumber++);
|
||||
updateTitle();
|
||||
modelsListModel->setFilename(curFile);
|
||||
radioData.addLabel(tr("Favorites"));
|
||||
labelsListModel->buildLabelsList();
|
||||
}
|
||||
@@ -1395,6 +1396,7 @@ void MdiChild::setCurrentFile(const QString & fileName)
|
||||
isUntitled = false;
|
||||
setWindowModified(false);
|
||||
updateTitle();
|
||||
modelsListModel->setFilename(curFile);
|
||||
|
||||
QStringList files = g.recentFiles();
|
||||
files.removeAll(curFile);
|
||||
|
||||
@@ -318,6 +318,7 @@ QMimeData * ModelsListModel::mimeData(const QModelIndexList & indexes) const
|
||||
getModelsMimeData(indexes, mimeData);
|
||||
getGeneralMimeData(mimeData);
|
||||
getHeaderMimeData(mimeData);
|
||||
getFileMimeData(mimeData);
|
||||
return mimeData;
|
||||
}
|
||||
|
||||
@@ -398,6 +399,16 @@ QMimeData *ModelsListModel::getHeaderMimeData(QMimeData * mimeData) const
|
||||
return mimeData;
|
||||
}
|
||||
|
||||
QMimeData *ModelsListModel::getFileMimeData(QMimeData * mimeData) const
|
||||
{
|
||||
if (!mimeData)
|
||||
mimeData = new QMimeData();
|
||||
QByteArray mData;
|
||||
encodeFileData(&mData);
|
||||
mimeData->setData("application/x-companion-filedata", mData);
|
||||
return mimeData;
|
||||
}
|
||||
|
||||
QUuid ModelsListModel::getMimeDataSourceId(const QMimeData * mimeData) const
|
||||
{
|
||||
MimeHeaderData header;
|
||||
@@ -429,6 +440,11 @@ bool ModelsListModel::hasHeaderMimeData(const QMimeData * mimeData) const
|
||||
return mimeData->hasFormat("application/x-companion-radiodata-header");
|
||||
}
|
||||
|
||||
bool ModelsListModel::hasFileMimeData(const QMimeData * mimeData) const
|
||||
{
|
||||
return mimeData->hasFormat("application/x-companion-filedata");
|
||||
}
|
||||
|
||||
// returns true if mime data origin was this data model (vs. from another file window)
|
||||
bool ModelsListModel::hasOwnMimeData(const QMimeData * mimeData) const
|
||||
{
|
||||
@@ -460,6 +476,11 @@ void ModelsListModel::encodeHeaderData(QByteArray * data) const
|
||||
stream << mimeHeaderData.instanceId;
|
||||
}
|
||||
|
||||
void ModelsListModel::encodeFileData(QByteArray * data) const
|
||||
{
|
||||
*data = filename.toLatin1();
|
||||
}
|
||||
|
||||
// static
|
||||
bool ModelsListModel::decodeHeaderData(const QMimeData * mimeData, MimeHeaderData * header)
|
||||
{
|
||||
@@ -472,6 +493,16 @@ bool ModelsListModel::decodeHeaderData(const QMimeData * mimeData, MimeHeaderDat
|
||||
return false;
|
||||
}
|
||||
|
||||
// static
|
||||
bool ModelsListModel::decodeFileData(const QMimeData * mimeData, QString * filedata)
|
||||
{
|
||||
if (filedata && mimeData->hasFormat("application/x-companion-filedata")) {
|
||||
*filedata = mimeData->data("application/x-companion-filedata").data();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// static
|
||||
bool ModelsListModel::decodeMimeData(const QMimeData * mimeData, QVector<ModelData> * models, GeneralSettings * gs, bool * hasGenSet)
|
||||
{
|
||||
@@ -682,6 +713,11 @@ bool ModelsListModel::isModelIdUnique(unsigned modelIdx, unsigned module, unsign
|
||||
return true;
|
||||
}
|
||||
|
||||
void ModelsListModel::setFilename(QString & name)
|
||||
{
|
||||
filename = name;
|
||||
}
|
||||
|
||||
/*
|
||||
ModelsListProxyModel
|
||||
*/
|
||||
|
||||
@@ -82,7 +82,7 @@ class ModelsListModel : public QAbstractItemModel
|
||||
quint16 dataVersion;
|
||||
};
|
||||
|
||||
ModelsListModel(RadioData * radioData, QObject *parent = 0);
|
||||
ModelsListModel(RadioData * radioData, QObject *parent = nullptr);
|
||||
virtual ~ModelsListModel();
|
||||
|
||||
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||
@@ -108,16 +108,20 @@ class ModelsListModel : public QAbstractItemModel
|
||||
void encodeModelsData(const QModelIndexList & indexes, QByteArray * data) const;
|
||||
void encodeGeneralData(QByteArray * data) const;
|
||||
void encodeHeaderData(QByteArray * data) const;
|
||||
void encodeFileData(QByteArray * data) const;
|
||||
QMimeData * getModelsMimeData(const QModelIndexList & indexes, QMimeData * mimeData = nullptr) const;
|
||||
QMimeData * getGeneralMimeData(QMimeData * mimeData = nullptr) const;
|
||||
QMimeData * getHeaderMimeData(QMimeData * mimeData = nullptr) const;
|
||||
QMimeData * getFileMimeData(QMimeData * mimeData = nullptr) const;
|
||||
QUuid getMimeDataSourceId(const QMimeData * mimeData) const;
|
||||
bool hasSupportedMimeData(const QMimeData * mimeData) const;
|
||||
bool hasModelsMimeData(const QMimeData * mimeData) const;
|
||||
bool hasGeneralMimeData(const QMimeData * mimeData) const;
|
||||
bool hasHeaderMimeData(const QMimeData * mimeData) const;
|
||||
bool hasOwnMimeData(const QMimeData * mimeData) const;
|
||||
bool hasFileMimeData(const QMimeData * mimeData) const;
|
||||
|
||||
static bool decodeFileData(const QMimeData * mimeData, QString * filedata);
|
||||
static bool decodeHeaderData(const QMimeData * mimeData, MimeHeaderData * header);
|
||||
static bool decodeMimeData(const QMimeData * mimeData, QVector<ModelData> * models = nullptr, GeneralSettings * gs = nullptr, bool * hasGenSet = nullptr);
|
||||
static int countModelsInMimeData(const QMimeData * mimeData);
|
||||
@@ -126,6 +130,7 @@ class ModelsListModel : public QAbstractItemModel
|
||||
int getModelIndex(const QModelIndex & index) const;
|
||||
int rowNumber(const QModelIndex & index = QModelIndex()) const;
|
||||
bool isModelType(const QModelIndex & index) const;
|
||||
void setFilename(QString & name);
|
||||
|
||||
public slots:
|
||||
void markItemForCut(const QModelIndex & index, bool on = true);
|
||||
@@ -149,6 +154,7 @@ class ModelsListModel : public QAbstractItemModel
|
||||
RadioData * radioData;
|
||||
MimeHeaderData mimeHeaderData;
|
||||
bool hasLabels;
|
||||
QString filename;
|
||||
};
|
||||
|
||||
class ModelsListProxyModel : public QSortFilterProxyModel
|
||||
|
||||
Reference in New Issue
Block a user