mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
added YACReaderFoldersView and YACReaderReadingListsView classes
This commit is contained in:
parent
6e4506461e
commit
a41651d0a8
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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;
|
||||
|
106
YACReaderLibrary/yacreader_folders_view.cpp
Normal file
106
YACReaderLibrary/yacreader_folders_view.cpp
Normal 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);
|
||||
}
|
36
YACReaderLibrary/yacreader_folders_view.h
Normal file
36
YACReaderLibrary/yacreader_folders_view.h
Normal 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
|
6
YACReaderLibrary/yacreader_reading_lists_view.cpp
Normal file
6
YACReaderLibrary/yacreader_reading_lists_view.cpp
Normal file
@ -0,0 +1,6 @@
|
||||
#include "yacreader_reading_lists_view.h"
|
||||
|
||||
YACReaderReadingListsView::YACReaderReadingListsView(QWidget *parent)
|
||||
:YACReaderTreeView(parent)
|
||||
{
|
||||
}
|
15
YACReaderLibrary/yacreader_reading_lists_view.h
Normal file
15
YACReaderLibrary/yacreader_reading_lists_view.h
Normal 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
|
@ -3,18 +3,21 @@
|
||||
#include <QPainter>
|
||||
#include <QLayout>
|
||||
|
||||
#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);
|
||||
|
@ -3,11 +3,12 @@
|
||||
|
||||
#include <QtWidgets>
|
||||
|
||||
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;
|
||||
|
@ -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<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 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<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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
YACReaderTreeViewItemDeletegate::YACReaderTreeViewItemDeletegate(QObject *parent)
|
||||
:QStyledItemDelegate(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void YACReaderTreeViewItemDeletegate::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);
|
||||
}
|
||||
|
||||
|
@ -9,11 +9,6 @@ class YACReaderTreeView : public QTreeView
|
||||
public:
|
||||
explicit YACReaderTreeView(QWidget *parent = 0);
|
||||
|
||||
signals:
|
||||
//Drops
|
||||
void copyComicsToFolder(QList<QPair<QString,QString> >,QModelIndex);
|
||||
void moveComicsToFolder(QList<QPair<QString,QString> >,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
|
||||
|
Loading…
x
Reference in New Issue
Block a user