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

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

View File

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

View File

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

View File

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