added YACReaderFoldersView and YACReaderReadingListsView classes

This commit is contained in:
Luis Ángel San Martín
2014-10-28 22:01:15 +01:00
parent 6e4506461e
commit a41651d0a8
11 changed files with 182 additions and 101 deletions

View File

@ -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)

View File

@ -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"

View File

@ -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;

View File

@ -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<QUrl> 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<QPair<QString, QString> > 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<FolderItem *>(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);
}

View File

@ -0,0 +1,36 @@
#ifndef YACREADER_FOLDERS_VIEW_H
#define YACREADER_FOLDERS_VIEW_H
#include "yacreader_treeview.h"
#include <QtWidgets>
class YACReaderFoldersView : public YACReaderTreeView
{
Q_OBJECT
public:
explicit YACReaderFoldersView(QWidget * parent = 0);
signals:
//Drops
void copyComicsToFolder(QList<QPair<QString,QString> >,QModelIndex);
void moveComicsToFolder(QList<QPair<QString,QString> >,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

View File

@ -0,0 +1,6 @@
#include "yacreader_reading_lists_view.h"
YACReaderReadingListsView::YACReaderReadingListsView(QWidget *parent)
:YACReaderTreeView(parent)
{
}

View File

@ -0,0 +1,15 @@
#ifndef YACREADER_READING_LISTS_VIEW_H
#define YACREADER_READING_LISTS_VIEW_H
#include "yacreader_treeview.h"
#include <QtWidgets>
class YACReaderReadingListsView : public YACReaderTreeView
{
Q_OBJECT
public:
explicit YACReaderReadingListsView(QWidget * parent = 0);
};
#endif // YACREADER_READING_LISTS_VIEW_H