added custom drag to comic table view, drops are accepted in lists view

This commit is contained in:
Luis Ángel San Martín
2014-12-03 12:28:22 +01:00
parent 4531e31d05
commit e2e908302e
5 changed files with 33 additions and 16 deletions

View File

@ -186,6 +186,17 @@ QModelIndex ReadingListModel::parent(const QModelIndex &index) const
return QModelIndex();
}
bool ReadingListModel::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
{
return data->formats().contains("application/yacreaderlibrary-comics-ids");
}
bool ReadingListModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
{
QLOG_DEBUG() << "drop mimedata into row = " << row << "column column = " << column << "parent" << parent;
return true;
}
void ReadingListModel::setupReadingListsData(QString path)
{
beginResetModel();

View File

@ -38,6 +38,8 @@ public:
QModelIndex index(int row, int column,
const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &index) const;
bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const;
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
//Convenience methods
void setupReadingListsData(QString path);

View File

@ -10,6 +10,14 @@ YACReaderReadingListsView::YACReaderReadingListsView(QWidget *parent)
setUniformRowHeights(false);
}
void YACReaderReadingListsView::dragEnterEvent(QDragEnterEvent *event)
{
YACReaderTreeView::dragEnterEvent(event);
QModelIndex destinationIndex = indexAt(event->pos());
if(model()->canDropMimeData(event->mimeData(), event->proposedAction(), destinationIndex.row(), destinationIndex.column(), destinationIndex.parent()))
event->acceptProposedAction();
}
//----------------------------------------------------------------------
@ -28,19 +36,6 @@ void YACReaderReadingListsViewItemDeletegate::paint(QPainter *painter, const QSt
return;
}
/*if(!item->data(FolderModel::Completed).toBool())
{
painter->save();
#ifdef Q_OS_MAC
painter->setBrush(QBrush(QColor(85,95,127)));
#else
painter->setBrush(QBrush(QColor(237,197,24)));
#endif
painter->setPen(QPen(QBrush(),0));
painter->drawRect(0,option.rect.y(),2,option.rect.height());
painter->restore();
}*/
QStyledItemDelegate::paint(painter, option, index);
}

View File

@ -10,6 +10,10 @@ class YACReaderReadingListsView : public YACReaderTreeView
Q_OBJECT
public:
explicit YACReaderReadingListsView(QWidget * parent = 0);
protected:
//Drop to import
void dragEnterEvent(QDragEnterEvent *event);
};
class YACReaderReadingListsViewItemDeletegate: public QStyledItemDelegate