Prevent drag&drop between inputs and mixers

This commit is contained in:
Damjan Adamic
2014-04-20 21:29:08 +02:00
parent 65521d96d4
commit fc92ad3a86
2 changed files with 19 additions and 10 deletions
+16 -10
View File
@@ -18,10 +18,23 @@ void MixersList::keyPressEvent(QKeyEvent *event)
emit keyWasPressed(event);
}
/**
@brief Override to give us different mime type for mixers and inputs
*/
QStringList MixersList::mimeTypes () const
{
QStringList types;
if (expo) types << "application/x-companion-expo-item";
else types << "application/x-companion-mix-item";
return types;
}
bool MixersList::dropMimeData( int index, const QMimeData * data, Qt::DropAction action )
{
// qDebug() << "MixersList::dropMimeData() index:" << index << "formats" << data->formats();
QByteArray dropData = data->data("application/x-qabstractitemmodeldatalist");
QByteArray dropData = data->data(expo ? "application/x-companion-expo-item" : "application/x-companion-mix-item");
if (dropData.isNull() ) return false;
QDataStream stream(&dropData, QIODevice::ReadOnly);
QByteArray qba;
@@ -31,24 +44,17 @@ bool MixersList::dropMimeData( int index, const QMimeData * data, Qt::DropAction
stream >> r >> c >> v;
QList<QVariant> lsVars;
lsVars = v.values();
//QString itemString = lsVars.at(0).toString();
qba.append(lsVars.at(1).toByteArray().mid(1));
// qDebug() << "MixersList::dropMimeData() added" << lsVars.count() << "items, data:" << lsVars;
//if(itemString.isEmpty()) {};
}
if(qba.length()>0) {
QMimeData *mimeData = new QMimeData;
if (expo)
mimeData->setData("application/x-companion-expo", qba);
else
mimeData->setData("application/x-companion-mix", qba);
mimeData->setData(expo ? "application/x-companion-expo" : "application/x-companion-mix", qba);
emit mimeDropped(index, mimeData, action);
delete mimeData; //is this correct? is mimeData freed elswere??
}
return true;
}
+3
View File
@@ -22,6 +22,9 @@ class MixersList : public QListWidget
public slots:
bool dropMimeData(int index, const QMimeData *data, Qt::DropAction action);
protected:
virtual QStringList mimeTypes() const;
private:
QPoint dragStartPosition;
bool expo;