From a41651d0a8e3df05118c790ec0c45464cab7f03e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Tue, 28 Oct 2014 22:01:15 +0100 Subject: [PATCH] added YACReaderFoldersView and YACReaderReadingListsView classes --- YACReaderLibrary/YACReaderLibrary.pro | 8 +- YACReaderLibrary/library_window.cpp | 2 +- YACReaderLibrary/library_window.h | 4 +- YACReaderLibrary/yacreader_folders_view.cpp | 106 ++++++++++++++++++ YACReaderLibrary/yacreader_folders_view.h | 36 ++++++ .../yacreader_reading_lists_view.cpp | 6 + .../yacreader_reading_lists_view.h | 15 +++ custom_widgets/yacreader_sidebar.cpp | 10 +- custom_widgets/yacreader_sidebar.h | 6 +- custom_widgets/yacreader_treeview.cpp | 76 ------------- custom_widgets/yacreader_treeview.h | 14 --- 11 files changed, 182 insertions(+), 101 deletions(-) create mode 100644 YACReaderLibrary/yacreader_folders_view.cpp create mode 100644 YACReaderLibrary/yacreader_folders_view.h create mode 100644 YACReaderLibrary/yacreader_reading_lists_view.cpp create mode 100644 YACReaderLibrary/yacreader_reading_lists_view.h diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index bc3b3049..d501f1df 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -122,7 +122,9 @@ HEADERS += comic_flow.h \ no_search_results_widget.h \ comic_files_manager.h \ db/reading_list_model.h \ - db/reading_list_item.h + db/reading_list_item.h \ + yacreader_folders_view.h \ + yacreader_reading_lists_view.h SOURCES += comic_flow.cpp \ @@ -173,7 +175,9 @@ SOURCES += comic_flow.cpp \ no_search_results_widget.cpp \ comic_files_manager.cpp \ db/reading_list_model.cpp \ - db/reading_list_item.cpp + db/reading_list_item.cpp \ + yacreader_folders_view.cpp \ + yacreader_reading_lists_view.cpp include(./server/server.pri) diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index 150f7ca2..473b2991 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -55,7 +55,7 @@ #include "comics_remover.h" #include "yacreader_library_list_widget.h" -#include "yacreader_treeview.h" +#include "yacreader_folders_view.h" #include "comic_vine_dialog.h" #include "api_key_dialog.h" diff --git a/YACReaderLibrary/library_window.h b/YACReaderLibrary/library_window.h index 28f1b06b..ce4c39cf 100644 --- a/YACReaderLibrary/library_window.h +++ b/YACReaderLibrary/library_window.h @@ -46,7 +46,7 @@ class LibraryItem; class YACReaderTableView; class YACReaderSideBar; class YACReaderLibraryListWidget; -class YACReaderTreeView; +class YACReaderFoldersView; class YACReaderMainToolBar; class ComicVineDialog; class ComicsView; @@ -108,7 +108,7 @@ private: EmptyFolderWidget * emptyFolderWidget; NoSearchResultsWidget * noSearchResultsWidget; - YACReaderTreeView * foldersView; + YACReaderFoldersView * foldersView; YACReaderLibraryListWidget * selectedLibrary; FolderModel * foldersModel; ComicModel * comicsModel; diff --git a/YACReaderLibrary/yacreader_folders_view.cpp b/YACReaderLibrary/yacreader_folders_view.cpp new file mode 100644 index 00000000..bdb61fdb --- /dev/null +++ b/YACReaderLibrary/yacreader_folders_view.cpp @@ -0,0 +1,106 @@ +#include "yacreader_folders_view.h" + +#include "folder_item.h" +#include "folder_model.h" + +#include "comic.h" +#include "comic_files_manager.h" + +#include "QsLog.h" + + +YACReaderFoldersView::YACReaderFoldersView(QWidget * parent) + :YACReaderTreeView(parent) +{ + setItemDelegate(new YACReaderFoldersViewItemDeletegate(this)); +} + +void YACReaderFoldersView::dragEnterEvent(QDragEnterEvent *event) +{ + YACReaderTreeView::dragEnterEvent(event); + + QList urlList; + + if (event->mimeData()->hasUrls()) + { + urlList = event->mimeData()->urls(); + QString currentPath; + foreach (QUrl url, urlList) + { + //comics or folders are accepted, folders' content is validate in dropEvent (avoid any lag before droping) + currentPath = url.toLocalFile(); + if(Comic::fileIsComic(currentPath) || QFileInfo(currentPath).isDir()) + { + event->acceptProposedAction(); + return; + } + } + } +} + +void YACReaderFoldersView::dragLeaveEvent(QDragLeaveEvent *event) +{ + YACReaderTreeView::dragLeaveEvent(event); +} + +void YACReaderFoldersView::dragMoveEvent(QDragMoveEvent *event) +{ + YACReaderTreeView::dragMoveEvent(event); +} + +void YACReaderFoldersView::dropEvent(QDropEvent *event) +{ + YACReaderTreeView::dropEvent(event); + + QLOG_DEBUG() << "drop on tree" << event->dropAction(); + + bool validAction = event->dropAction() == Qt::CopyAction || event->dropAction() & Qt::MoveAction; + + if(validAction) + { + + QList > droppedFiles = ComicFilesManager::getDroppedFiles(event->mimeData()->urls()); + QModelIndex destinationIndex = indexAt(event->pos()); + + if(event->dropAction() == Qt::CopyAction) + { + QLOG_DEBUG() << "copy - tree :" << droppedFiles; + emit copyComicsToFolder(droppedFiles, destinationIndex); + } + else if(event->dropAction() & Qt::MoveAction) + { + QLOG_DEBUG() << "move - tree :" << droppedFiles; + emit moveComicsToFolder(droppedFiles, destinationIndex); + } + + event->acceptProposedAction(); + } +} + +//---------------------------------------------------------- + +YACReaderFoldersViewItemDeletegate::YACReaderFoldersViewItemDeletegate(QObject *parent) + :QStyledItemDelegate(parent) +{ + +} + +void YACReaderFoldersViewItemDeletegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + FolderItem * item = static_cast(index.internalPointer()); + + 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_folders_view.h b/YACReaderLibrary/yacreader_folders_view.h new file mode 100644 index 00000000..07d8091c --- /dev/null +++ b/YACReaderLibrary/yacreader_folders_view.h @@ -0,0 +1,36 @@ +#ifndef YACREADER_FOLDERS_VIEW_H +#define YACREADER_FOLDERS_VIEW_H + +#include "yacreader_treeview.h" + +#include + +class YACReaderFoldersView : public YACReaderTreeView +{ + Q_OBJECT +public: + explicit YACReaderFoldersView(QWidget * parent = 0); + +signals: + //Drops + void copyComicsToFolder(QList >,QModelIndex); + void moveComicsToFolder(QList >,QModelIndex); + +protected: + //Drop to import + void dragEnterEvent(QDragEnterEvent *event); + void dragLeaveEvent(QDragLeaveEvent *event); + void dragMoveEvent(QDragMoveEvent *event); + void dropEvent(QDropEvent *event); +}; + +class YACReaderFoldersViewItemDeletegate: public QStyledItemDelegate +{ + Q_OBJECT +public: + explicit YACReaderFoldersViewItemDeletegate(QObject *parent = 0); + void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; +}; + + +#endif // YACREADER_FOLDERS_VIEW_H diff --git a/YACReaderLibrary/yacreader_reading_lists_view.cpp b/YACReaderLibrary/yacreader_reading_lists_view.cpp new file mode 100644 index 00000000..ac5304af --- /dev/null +++ b/YACReaderLibrary/yacreader_reading_lists_view.cpp @@ -0,0 +1,6 @@ +#include "yacreader_reading_lists_view.h" + +YACReaderReadingListsView::YACReaderReadingListsView(QWidget *parent) + :YACReaderTreeView(parent) +{ +} diff --git a/YACReaderLibrary/yacreader_reading_lists_view.h b/YACReaderLibrary/yacreader_reading_lists_view.h new file mode 100644 index 00000000..064ebd09 --- /dev/null +++ b/YACReaderLibrary/yacreader_reading_lists_view.h @@ -0,0 +1,15 @@ +#ifndef YACREADER_READING_LISTS_VIEW_H +#define YACREADER_READING_LISTS_VIEW_H + +#include "yacreader_treeview.h" + +#include + +class YACReaderReadingListsView : public YACReaderTreeView +{ + Q_OBJECT +public: + explicit YACReaderReadingListsView(QWidget * parent = 0); +}; + +#endif // YACREADER_READING_LISTS_VIEW_H diff --git a/custom_widgets/yacreader_sidebar.cpp b/custom_widgets/yacreader_sidebar.cpp index 55c30aba..6eb659ba 100644 --- a/custom_widgets/yacreader_sidebar.cpp +++ b/custom_widgets/yacreader_sidebar.cpp @@ -3,18 +3,21 @@ #include #include -#include "yacreader_treeview.h" +#include "yacreader_folders_view.h" +#include "yacreader_reading_lists_view.h" #include "yacreader_library_list_widget.h" #include "yacreader_search_line_edit.h" #include "yacreader_titled_toolbar.h" + YACReaderSideBar::YACReaderSideBar(QWidget *parent) : QWidget(parent) { setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Minimum); //widgets - foldersView = new YACReaderTreeView; + foldersView = new YACReaderFoldersView; + readingListsView = new YACReaderReadingListsView; selectedLibrary = new YACReaderLibraryListWidget; librariesTitle = new YACReaderTitledToolBar(tr("LIBRARIES")); @@ -91,8 +94,7 @@ YACReaderSideBar::YACReaderSideBar(QWidget *parent) : //END FOLDERS------------------------------------------------------ //READING LISTS---------------------------------------------------- - QWidget * readingLists = new QWidget(this); - splitter->addWidget(readingLists); + splitter->addWidget(readingListsView); QVBoxLayout * readingListsHeaderLayout = new QVBoxLayout; readingListsHeaderLayout->setContentsMargins(0,0,0,0); diff --git a/custom_widgets/yacreader_sidebar.h b/custom_widgets/yacreader_sidebar.h index d79438a0..1a7f59cc 100644 --- a/custom_widgets/yacreader_sidebar.h +++ b/custom_widgets/yacreader_sidebar.h @@ -3,11 +3,12 @@ #include -class YACReaderTreeView; +class YACReaderFoldersView; class YACReaderLibraryListWidget; class YACReaderSearchLineEdit; class YACReaderTitledToolBar; class YACReaderTitledToolBar; +class YACReaderReadingListsView; class YACReaderSideBarSeparator : public QWidget { @@ -24,7 +25,8 @@ public: explicit YACReaderSideBar(QWidget *parent = 0); QSize sizeHint() const; - YACReaderTreeView * foldersView; + YACReaderFoldersView * foldersView; + YACReaderReadingListsView * readingListsView; YACReaderLibraryListWidget * selectedLibrary; YACReaderTitledToolBar * librariesTitle; YACReaderTitledToolBar * foldersTitle; diff --git a/custom_widgets/yacreader_treeview.cpp b/custom_widgets/yacreader_treeview.cpp index 816047ea..f0966461 100644 --- a/custom_widgets/yacreader_treeview.cpp +++ b/custom_widgets/yacreader_treeview.cpp @@ -1,11 +1,4 @@ #include "yacreader_treeview.h" -#include "folder_item.h" -#include "folder_model.h" - -#include "comic.h" -#include "comic_files_manager.h" - -#include "QsLog.h" YACReaderTreeView::YACReaderTreeView(QWidget *parent) : QTreeView(parent) @@ -25,8 +18,6 @@ YACReaderTreeView::YACReaderTreeView(QWidget *parent) : setSelectionBehavior(QAbstractItemView::SelectRows); setAttribute(Qt::WA_MacShowFocusRect,false); - setItemDelegate(new YACReaderTreeViewItemDeletegate(this)); - #ifdef Q_OS_MAC setStyleSheet("QTreeView {background-color:transparent; border: none;}" "QTreeView::item:selected {background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6BAFE4, stop: 1 #3984D2); border-top: 2px solid qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #5EA3DF, stop: 1 #73B8EA); border-left:none;border-right:none;border-bottom:1px solid #3577C2;}" @@ -72,24 +63,6 @@ void YACReaderTreeView::expandCurrent() void YACReaderTreeView::dragEnterEvent(QDragEnterEvent *event) { QTreeView::dragEnterEvent(event); - - QList urlList; - - if (event->mimeData()->hasUrls()) - { - urlList = event->mimeData()->urls(); - QString currentPath; - foreach (QUrl url, urlList) - { - //comics or folders are accepted, folders' content is validate in dropEvent (avoid any lag before droping) - currentPath = url.toLocalFile(); - if(Comic::fileIsComic(currentPath) || QFileInfo(currentPath).isDir()) - { - event->acceptProposedAction(); - return; - } - } - } } void YACReaderTreeView::dragLeaveEvent(QDragLeaveEvent *event) @@ -126,56 +99,7 @@ void YACReaderTreeView::dropEvent(QDropEvent *event) t.stop(); QTreeView::dropEvent(event); - - QLOG_DEBUG() << "drop on tree" << event->dropAction(); - - bool validAction = event->dropAction() == Qt::CopyAction || event->dropAction() & Qt::MoveAction; - - if(validAction) - { - - QList > droppedFiles = ComicFilesManager::getDroppedFiles(event->mimeData()->urls()); - QModelIndex destinationIndex = indexAt(event->pos()); - - if(event->dropAction() == Qt::CopyAction) - { - QLOG_DEBUG() << "copy - tree :" << droppedFiles; - emit copyComicsToFolder(droppedFiles, destinationIndex); - } - else if(event->dropAction() & Qt::MoveAction) - { - QLOG_DEBUG() << "move - tree :" << droppedFiles; - emit moveComicsToFolder(droppedFiles, destinationIndex); - } - - event->acceptProposedAction(); - } } -YACReaderTreeViewItemDeletegate::YACReaderTreeViewItemDeletegate(QObject *parent) - :QStyledItemDelegate(parent) -{ - -} - -void YACReaderTreeViewItemDeletegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - FolderItem * item = static_cast(index.internalPointer()); - - 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/custom_widgets/yacreader_treeview.h b/custom_widgets/yacreader_treeview.h index a70e8615..dfbe32b7 100644 --- a/custom_widgets/yacreader_treeview.h +++ b/custom_widgets/yacreader_treeview.h @@ -9,11 +9,6 @@ class YACReaderTreeView : public QTreeView public: explicit YACReaderTreeView(QWidget *parent = 0); -signals: - //Drops - void copyComicsToFolder(QList >,QModelIndex); - void moveComicsToFolder(QList >,QModelIndex); - protected slots: //fix for drop auto expand void expandCurrent(); @@ -25,19 +20,10 @@ protected: void dragMoveEvent(QDragMoveEvent *event); void dropEvent(QDropEvent *event); - //fix for drop auto expand QTimer expandTimer; QTimer t; QPoint expandPos; }; -class YACReaderTreeViewItemDeletegate: public QStyledItemDelegate -{ - Q_OBJECT -public: - explicit YACReaderTreeViewItemDeletegate(QObject *parent = 0); - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; -}; - #endif // YACREADER_TREEVIEW_H