diff --git a/YACReaderLibrary/db/reading_list_model.cpp b/YACReaderLibrary/db/reading_list_model.cpp index dbf542b5..02333ec1 100644 --- a/YACReaderLibrary/db/reading_list_model.cpp +++ b/YACReaderLibrary/db/reading_list_model.cpp @@ -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(); diff --git a/YACReaderLibrary/db/reading_list_model.h b/YACReaderLibrary/db/reading_list_model.h index c1411a29..80471031 100644 --- a/YACReaderLibrary/db/reading_list_model.h +++ b/YACReaderLibrary/db/reading_list_model.h @@ -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); diff --git a/YACReaderLibrary/yacreader_reading_lists_view.cpp b/YACReaderLibrary/yacreader_reading_lists_view.cpp index c8bfa0df..7e32fb43 100644 --- a/YACReaderLibrary/yacreader_reading_lists_view.cpp +++ b/YACReaderLibrary/yacreader_reading_lists_view.cpp @@ -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); } diff --git a/YACReaderLibrary/yacreader_reading_lists_view.h b/YACReaderLibrary/yacreader_reading_lists_view.h index a13456b5..8c6a3ae9 100644 --- a/YACReaderLibrary/yacreader_reading_lists_view.h +++ b/YACReaderLibrary/yacreader_reading_lists_view.h @@ -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 diff --git a/custom_widgets/yacreader_table_view.cpp b/custom_widgets/yacreader_table_view.cpp index 34654ced..c65c36b7 100644 --- a/custom_widgets/yacreader_table_view.cpp +++ b/custom_widgets/yacreader_table_view.cpp @@ -9,6 +9,8 @@ #include #include +#include "QsLog.h" + #include "comic_item.h" YACReaderTableView::YACReaderTableView(QWidget *parent) : @@ -70,12 +72,14 @@ YACReaderTableView::YACReaderTableView(QWidget *parent) : showDeletingProgressAnimation = new QPropertyAnimation(deletingProgress,"pos"); showDeletingProgressAnimation->setDuration(150);*/ - //drag - setDragEnabled(true); + //drag: if the default drag is enabled there is no way for setting a custom image + //TODO report bug/suggestion + //setDragEnabled(true); } void YACReaderTableView::mouseMoveEvent(QMouseEvent *event) { + QModelIndex mi = indexAt(event->pos()); if(mi.isValid()) { @@ -110,7 +114,7 @@ void YACReaderTableView::mouseMoveEvent(QMouseEvent *event) performDrag(); } - QTableView::mouseMoveEvent(event); + } void YACReaderTableView::mousePressEvent(QMouseEvent * event) { @@ -149,6 +153,7 @@ void YACReaderTableView::leaveEvent(QEvent * event) void YACReaderTableView::performDrag() { + QLOG_DEBUG() << "performDrag"; QDrag *drag = new QDrag(this); drag->setMimeData(model()->mimeData(selectionModel()->selectedRows())); drag->setPixmap(QPixmap(":/images/openInYACReader.png")); //TODO add better image