Merge pull request #616 from andreasb242/sidebar

Hide disabled button
presentation
andreasb242 7 years ago committed by GitHub
commit 79aa04cea2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/control/Control.cpp
  2. 23
      src/gui/sidebar/Sidebar.cpp
  3. 5
      src/gui/sidebar/Sidebar.h
  4. 10
      src/gui/sidebar/previews/base/SidebarToolbar.cpp
  5. 2
      src/gui/sidebar/previews/base/SidebarToolbar.h
  6. 80
      src/gui/sidebar/previews/layer/SidebarPreviewLayers.cpp
  7. 20
      src/gui/sidebar/previews/layer/SidebarPreviewLayers.h

@ -155,8 +155,6 @@ Control::~Control()
page->unreference();
}
delete this->layerController;
this->layerController = NULL;
delete this->clipboardHandler;
this->clipboardHandler = NULL;
delete this->recent;
@ -193,6 +191,8 @@ Control::~Control()
this->audioController = NULL;
delete this->pageBackgroundChangeController;
this->pageBackgroundChangeController = NULL;
delete this->layerController;
this->layerController = NULL;
XOJ_RELEASE_TYPE(Control);
}

@ -141,6 +141,9 @@ void Sidebar::setSelectedPage(size_t page)
i++;
}
// Hide the toolbar for all except the page preview
toolbar.setHidden(page != 1);
}
void Sidebar::updateEnableDisableButtons()
@ -207,26 +210,6 @@ void Sidebar::documentChanged(DocumentChangeType type)
}
}
void Sidebar::pageSizeChanged(size_t page)
{
}
void Sidebar::pageChanged(size_t page)
{
}
void Sidebar::pageInserted(size_t page)
{
}
void Sidebar::pageDeleted(size_t page)
{
}
void Sidebar::pageSelected(size_t page)
{
}
SidebarPageButton::SidebarPageButton(Sidebar* sidebar, int index, AbstractSidebarPage* page)
{
this->sidebar = sidebar;

@ -68,11 +68,6 @@ public:
public:
// DocumentListener interface
virtual void documentChanged(DocumentChangeType type);
virtual void pageSizeChanged(size_t page);
virtual void pageChanged(size_t page);
virtual void pageInserted(size_t page);
virtual void pageDeleted(size_t page);
virtual void pageSelected(size_t page);
private:

@ -119,6 +119,16 @@ void SidebarToolbar::btDeleteClicked(GtkToolButton* toolbutton, SidebarToolbar*
toolbar->control->deletePage();
}
void SidebarToolbar::setHidden(bool hidden)
{
XOJ_CHECK_TYPE(SidebarToolbar);
gtk_widget_set_visible(GTK_WIDGET(this->btUp), !hidden);
gtk_widget_set_visible(GTK_WIDGET(this->btDown), !hidden);
gtk_widget_set_visible(GTK_WIDGET(this->btCopy), !hidden);
gtk_widget_set_visible(GTK_WIDGET(this->btDelete), !hidden);
}
void SidebarToolbar::setButtonEnabled(bool enableUp, bool enableDown, bool enableCopy, bool enableDelete, PageRef currentPage)
{
XOJ_CHECK_TYPE(SidebarToolbar);

@ -32,6 +32,8 @@ public:
*/
void setButtonEnabled(bool enableUp, bool enableDown, bool enableCopy, bool enableDelete, PageRef currentPage);
void setHidden(bool hidden);
private:
XOJ_TYPE_ATTRIB;

@ -1,17 +1,21 @@
#include "SidebarPreviewLayers.h"
#include "SidebarPreviewLayerEntry.h"
#include "control/Control.h"
#include "control/PdfCache.h"
#include "control/layer/LayerController.h"
#include <i18n.h>
SidebarPreviewLayers::SidebarPreviewLayers(Control* control, GladeGui* gui, SidebarToolbar* toolbar)
: SidebarPreviewBase(control, gui, toolbar),
displayedPage(0)
lc(control->getLayerController())
{
XOJ_INIT_TYPE(SidebarPreviewLayers);
LayerCtrlListener::registerListener(lc);
this->toolbar->setButtonEnabled(false, false, false, false, PageRef());
}
SidebarPreviewLayers::~SidebarPreviewLayers()
@ -53,16 +57,12 @@ void SidebarPreviewLayers::updatePreviews()
}
this->previews.clear();
Document* doc = this->getControl()->getDocument();
int len = doc->getPageCount();
if (displayedPage < 0 || displayedPage >= len)
PageRef page = lc->getCurrentPage();
if (!page.isValid())
{
return;
}
PageRef page = doc->getPage(displayedPage);
int layerCount = page->getLayerCount();
size_t index = 0;
@ -79,68 +79,56 @@ void SidebarPreviewLayers::updatePreviews()
gtk_layout_put(GTK_LAYOUT(this->iconViewPreview), p->getWidget(), 0, 0);
layout();
updateSelectedLayer();
}
void SidebarPreviewLayers::pageSelected(int page)
void SidebarPreviewLayers::rebuildLayerMenu()
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
displayedPage = page;
updatePreviews();
}
void SidebarPreviewLayers::pageSizeChanged(int page)
void SidebarPreviewLayers::layerVisibilityChanged()
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
if (displayedPage == page)
{
updatePreviews();
}
updateSelectedLayer();
}
void SidebarPreviewLayers::layerSelected(size_t layerIndex)
void SidebarPreviewLayers::updateSelectedLayer()
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
size_t layerIndex = lc->getCurrentLayerId();
if (this->selectedEntry != size_t_npos && this->selectedEntry < this->previews.size())
if (this->selectedEntry == layerIndex)
{
this->previews[this->selectedEntry]->setSelected(false);
return;
}
this->selectedEntry = layerIndex;
if (this->selectedEntry != size_t_npos && this->selectedEntry < this->previews.size())
{
SidebarPreviewBaseEntry* p = this->previews[this->selectedEntry];
p->setSelected(true);
scrollToPreview(this);
// TODO This needs also be implemented seperate for layer
this->toolbar->setButtonEnabled(layerIndex != 0 && this->previews.size() != 0,
layerIndex != this->previews.size() - 1 && this->previews.size() != 0,
true, this->previews.size() > 1, PageRef());
this->previews[this->selectedEntry]->setSelected(false);
}
// if (this->selectedEntry != size_t_npos && this->selectedEntry < this->previews.size())
// {
// SidebarPreviewBaseEntry* p = this->previews[this->selectedEntry];
// p->setSelected(true);
// scrollToPreview(this);
//
// // TODO This needs also be implemented seperate for layer
// this->toolbar->setButtonEnabled(layerIndex != 0 && this->previews.size() != 0,
// layerIndex != this->previews.size() - 1 && this->previews.size() != 0,
// true, this->previews.size() > 1, PageRef());
// }
}
void SidebarPreviewLayers::pageChanged(int page)
void SidebarPreviewLayers::layerSelected(size_t layerIndex)
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
if (displayedPage == page)
{
printf("->current page\n");
// Document* doc = this->getControl()->getDocument();
// PageRef page = doc->getPage(displayedPage);
// int layerCount = page->getLayerCount();
// if (layerCount + 1 == this->previews.size())
// {
// updatePreviews();
// }
// for (SidebarPreviewBaseEntry* p : this->previews)
// {
// p->repaint();
// }
}
lc->switchToLay(layerIndex);
updateSelectedLayer();
}

@ -11,18 +11,22 @@
#pragma once
#include "control/layer/LayerCtrlListener.h"
#include "gui/sidebar/previews/base/SidebarPreviewBase.h"
#include <XournalType.h>
class SidebarPreviewLayers : public SidebarPreviewBase
class SidebarPreviewLayers : public SidebarPreviewBase, public LayerCtrlListener
{
public:
SidebarPreviewLayers(Control* control, GladeGui* gui, SidebarToolbar* toolbar);
virtual ~SidebarPreviewLayers();
public:
virtual void rebuildLayerMenu();
virtual void layerVisibilityChanged();
public:
/**
* @overwrite
*/
@ -39,19 +43,19 @@ public:
*/
virtual void updatePreviews();
/**
* Select a layer
*/
void layerSelected(size_t layerIndex);
public:
// DocumentListener interface (only the part which is not handled by SidebarPreviewBase)
virtual void pageSizeChanged(int page);
virtual void pageChanged(int page);
virtual void pageSelected(int page);
protected:
void updateSelectedLayer();
private:
XOJ_TYPE_ATTRIB;
/**
* The layers of this page are displayed
* Layer Controller
*/
int displayedPage;
LayerController* lc;
};

Loading…
Cancel
Save