#include "yacreader_sidebar.h" #include #include #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" #include "yacreader_global_gui.h" YACReaderSideBar::YACReaderSideBar(QWidget *parent) : QWidget(parent) { setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); settings = new QSettings(YACReader::getSettingsPath() + "/YACReaderLibrary.ini", QSettings::IniFormat); // TODO unificar la creación del fichero de config con el servidor settings->beginGroup("libraryConfig"); // widgets foldersView = new YACReaderFoldersView; readingListsView = new YACReaderReadingListsView; selectedLibrary = new YACReaderLibraryListWidget; #ifdef Q_OS_MAC librariesTitle = new YACReaderTitledToolBar(tr("Libraries")); foldersTitle = new YACReaderTitledToolBar(tr("Folders")); readingListsTitle = new YACReaderTitledToolBar(tr("Reading Lists")); #else librariesTitle = new YACReaderTitledToolBar(tr("LIBRARIES")); foldersTitle = new YACReaderTitledToolBar(tr("FOLDERS")); readingListsTitle = new YACReaderTitledToolBar(tr("READING LISTS")); #endif splitter = new QSplitter(this); splitter->setOrientation(Qt::Vertical); #ifndef Q_OS_MAC splitter->setStyleSheet("QSplitter::handle { " " image: none; background-color = black; " " }" "QSplitter::handle:vertical { height: 39px;}"); #else splitter->setStyleSheet("QSplitter::handle:vertical { height: 26px; background-color: transparent;}"); #endif selectedLibrary->setContextMenuPolicy(Qt::ActionsContextMenu); selectedLibrary->setAttribute(Qt::WA_MacShowFocusRect, false); selectedLibrary->setFocusPolicy(Qt::NoFocus); // layout QVBoxLayout *l = new QVBoxLayout; l->setContentsMargins(0, 0, 0, 0); // LIBRARIES------------------------------------------------------- #ifndef Q_OS_MAC l->addSpacing(5); #endif l->addWidget(librariesTitle); #ifndef Q_OS_MAC l->addSpacing(4); l->addWidget(new YACReaderSideBarSeparator(this)); l->addSpacing(3); #endif l->addWidget(selectedLibrary); #ifndef Q_OS_MAC l->addSpacing(11); #else l->addSpacing(6); #endif // END LIBRARIES--------------------------------------------------- // FOLDERS--------------------------------------------------------- QWidget *foldersContainer = new QWidget(this); QVBoxLayout *foldersLayout = new QVBoxLayout; foldersLayout->setContentsMargins(0, 0, 0, 0); foldersLayout->setSpacing(0); #ifndef Q_OS_MAC // foldersLayout->addSpacing(6); // foldersLayout->addSpacing(5); foldersLayout->addWidget(new YACReaderSideBarSeparator(this)); foldersLayout->addSpacing(4); #else // foldersLayout->addSpacing(6); #endif foldersLayout->addWidget(foldersTitle); #ifndef Q_OS_MAC foldersLayout->addSpacing(4); foldersLayout->addWidget(new YACReaderSideBarSeparator(this)); foldersLayout->addSpacing(4); #endif foldersLayout->addWidget(foldersView); foldersLayout->addSpacing(6); foldersContainer->setLayout(foldersLayout); splitter->addWidget(foldersContainer); // END FOLDERS------------------------------------------------------ // READING LISTS---------------------------------------------------- splitter->addWidget(readingListsView); QVBoxLayout *readingListsHeaderLayout = new QVBoxLayout; readingListsHeaderLayout->setContentsMargins(0, 0, 0, 0); readingListsHeaderLayout->setSpacing(0); #ifndef Q_OS_MAC // readingListsHeaderLayout->addSpacing(6); // readingListsHeaderLayout->addSpacing(5); readingListsHeaderLayout->addWidget(new YACReaderSideBarSeparator(this)); readingListsHeaderLayout->addSpacing(4); #else // readingListsHeaderLayout->addSpacing(6); #endif readingListsHeaderLayout->addWidget(readingListsTitle); #ifndef Q_OS_MAC readingListsHeaderLayout->addSpacing(4); readingListsHeaderLayout->addWidget(new YACReaderSideBarSeparator(this)); readingListsHeaderLayout->addSpacing(4); #endif // readingListsLayout->addWidget(readingListsView); readingListsHeaderLayout->addStretch(); QSplitterHandle *handle = splitter->handle(1); // handle->setCursor(QCursor(Qt::ArrowCursor)); handle->setLayout(readingListsHeaderLayout); // END READING LISTS------------------------------------------------ l->addWidget(splitter); l->setSpacing(0); setLayout(l); if (settings->contains(SIDEBAR_SPLITTER_STATUS)) splitter->restoreState(settings->value(SIDEBAR_SPLITTER_STATUS).toByteArray()); } void YACReaderSideBar::paintEvent(QPaintEvent *event) { Q_UNUSED(event) #ifdef Q_OS_MAC QPainter painter(this); painter.fillRect(0, 0, width(), height(), QColor("#F1F1F1")); #else QPainter painter(this); painter.fillRect(0, 0, width(), height(), QColor("#454545")); // QWidget::paintEvent(event); #endif // QPixmap shadow(":/images/side_bar/shadow.png"); // painter.drawPixmap(width()-shadow.width(),0,shadow.width(),height(),shadow); // painter.setRenderHint(QPainter::Antialiasing); // painter.drawLine(rect().topLeft(), rect().bottomRight()); // QWidget::paintEvent(event); } void YACReaderSideBar::closeEvent(QCloseEvent *event) { QWidget::closeEvent(event); settings->setValue(SIDEBAR_SPLITTER_STATUS, splitter->saveState()); } QSize YACReaderSideBar::sizeHint() const { return QSize(275, 200); } YACReaderSideBarSeparator::YACReaderSideBarSeparator(QWidget *parent) : QWidget(parent) { setFixedHeight(1); } void YACReaderSideBarSeparator::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this); painter.fillRect(5, 0, width() - 10, height(), QColor("#575757")); }