summaryrefslogtreecommitdiff
path: root/sfx2/source/control
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-10-15 15:24:26 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-10-22 17:26:08 +0200
commit5a342bde16fb46c895eec302af73d7836226eccf (patch)
tree32363a701b9530b1e9961163edcc1359563ce0a2 /sfx2/source/control
parentf4a5893eceabc1f6d541164a0e858456f0ce0905 (diff)
weld backing window
Change-Id: I250e46d3f1d558567bddbd4f0330470222e8fd4b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104442 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sfx2/source/control')
-rw-r--r--sfx2/source/control/recentdocsview.cxx83
-rw-r--r--sfx2/source/control/recentdocsviewitem.cxx2
-rw-r--r--sfx2/source/control/templatedefaultview.cxx40
-rw-r--r--sfx2/source/control/templatelocalview.cxx8
-rw-r--r--sfx2/source/control/thumbnailview.cxx9
5 files changed, 74 insertions, 68 deletions
diff --git a/sfx2/source/control/recentdocsview.cxx b/sfx2/source/control/recentdocsview.cxx
index 063051642fa0..83b0cb2fed82 100644
--- a/sfx2/source/control/recentdocsview.cxx
+++ b/sfx2/source/control/recentdocsview.cxx
@@ -23,7 +23,6 @@
#include <sfx2/sfxresid.hxx>
#include <tools/diagnose_ex.h>
#include <unotools/historyoptions.hxx>
-#include <vcl/builderfactory.hxx>
#include <vcl/event.hxx>
#include <vcl/pngread.hxx>
#include <vcl/ptrstyle.hxx>
@@ -43,6 +42,8 @@
#include <officecfg/Office/Common.hxx>
+#include <map>
+
using namespace ::com::sun::star;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
@@ -121,18 +122,18 @@ static std::map<ApplicationType,OUString> EncryptedBitmapForExtension =
constexpr tools::Long gnTextHeight = 30;
constexpr tools::Long gnItemPadding = 5;
-RecentDocsView::RecentDocsView( vcl::Window* pParent )
- : ThumbnailView(pParent)
+RecentDocsView::RecentDocsView(std::unique_ptr<weld::ScrolledWindow> xWindow, std::unique_ptr<weld::Menu> xMenu)
+ : SfxThumbnailView(std::move(xWindow), std::move(xMenu))
, mnFileTypes(ApplicationType::TYPE_NONE)
, mnLastMouseDownItem(THUMBNAILVIEW_ITEM_NOTFOUND)
, maWelcomeImage()
, maWelcomeLine1(SfxResId(STR_WELCOME_LINE1))
, maWelcomeLine2(SfxResId(STR_WELCOME_LINE2))
+ , mpLoadRecentFile(nullptr)
{
tools::Rectangle aScreen = Application::GetScreenPosSizePixel(Application::GetDisplayBuiltInScreen());
mnItemMaxSize = std::min(aScreen.GetWidth(),aScreen.GetHeight()) > 800 ? 256 : 192;
- SetStyle(GetStyle() | WB_VSCROLL);
setItemMaxTextLength( 30 );
setItemDimensions( mnItemMaxSize, mnItemMaxSize, gnTextHeight, gnItemPadding );
@@ -141,9 +142,18 @@ RecentDocsView::RecentDocsView( vcl::Window* pParent )
maHighlightColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightColor::get());
maHighlightTextColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightTextColor::get());
mfHighlightTransparence = 0.25;
+
+ UpdateColors();
}
-VCL_BUILDER_FACTORY(RecentDocsView)
+RecentDocsView::~RecentDocsView()
+{
+ if (mpLoadRecentFile)
+ {
+ mpLoadRecentFile->pView = nullptr;
+ mpLoadRecentFile = nullptr;
+ }
+}
bool RecentDocsView::typeMatchesExtension(ApplicationType type, const OUString &rExt)
{
@@ -288,25 +298,25 @@ void RecentDocsView::Reload()
Invalidate();
}
-void RecentDocsView::MouseButtonDown( const MouseEvent& rMEvt )
+bool RecentDocsView::MouseButtonDown( const MouseEvent& rMEvt )
{
if (rMEvt.IsLeft())
{
mnLastMouseDownItem = ImplGetItem(rMEvt.GetPosPixel());
- // ignore to avoid stuff done in ThumbnailView; we don't do selections etc.
- return;
+ // ignore to avoid stuff done in SfxThumbnailView; we don't do selections etc.
+ return true;
}
- ThumbnailView::MouseButtonDown(rMEvt);
+ return SfxThumbnailView::MouseButtonDown(rMEvt);
}
-void RecentDocsView::MouseButtonUp(const MouseEvent& rMEvt)
+bool RecentDocsView::MouseButtonUp(const MouseEvent& rMEvt)
{
if (rMEvt.IsLeft())
{
if( rMEvt.GetClicks() > 1 )
- return;
+ return true;
size_t nPos = ImplGetItem(rMEvt.GetPosPixel());
ThumbnailViewItem* pItem = ImplGetItem(nPos);
@@ -323,9 +333,9 @@ void RecentDocsView::MouseButtonUp(const MouseEvent& rMEvt)
mnLastMouseDownItem = THUMBNAILVIEW_ITEM_NOTFOUND;
if (pItem)
- return;
+ return true;
}
- ThumbnailView::MouseButtonUp(rMEvt);
+ return SfxThumbnailView::MouseButtonUp(rMEvt);
}
void RecentDocsView::OnItemDblClicked(ThumbnailViewItem *pItem)
@@ -337,19 +347,7 @@ void RecentDocsView::OnItemDblClicked(ThumbnailViewItem *pItem)
void RecentDocsView::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle &aRect)
{
- // Set preferred width
- if (mFilteredItemList.empty())
- {
- rRenderContext.Push(PushFlags::FONT);
- SetMessageFont(rRenderContext);
- set_width_request(std::max(rRenderContext.GetTextWidth(maWelcomeLine1),
- rRenderContext.GetTextWidth(maWelcomeLine2)));
- rRenderContext.Pop();
- }
- else
- {
- set_width_request(gnTextHeight + mnItemMaxSize + 2 * gnItemPadding);
- }
+ SfxThumbnailView::Paint(rRenderContext, aRect);
if (mItemList.empty())
{
@@ -362,12 +360,12 @@ void RecentDocsView::Paint(vcl::RenderContext& rRenderContext, const tools::Rect
// No recent files to be shown yet. Show a welcome screen.
rRenderContext.Push(PushFlags::FONT | PushFlags::TEXTCOLOR);
SetMessageFont(rRenderContext);
- SetTextColor(maTextColor);
+ rRenderContext.SetTextColor(maTextColor);
tools::Long nTextHeight = rRenderContext.GetTextHeight();
const Size& rImgSize = maWelcomeImage.GetSizePixel();
- const Size& rSize = GetSizePixel();
+ const Size& rSize = GetOutputSizePixel();
const int nX = (rSize.Width() - rImgSize.Width())/2;
int nY = (rSize.Height() - 3 * nTextHeight - rImgSize.Height())/2;
@@ -384,28 +382,36 @@ void RecentDocsView::Paint(vcl::RenderContext& rRenderContext, const tools::Rect
rRenderContext.Pop();
}
- else
- {
- ThumbnailView::Paint(rRenderContext, aRect);
- }
}
void RecentDocsView::LoseFocus()
{
deselectItems();
- ThumbnailView::LoseFocus();
+ SfxThumbnailView::LoseFocus();
}
void RecentDocsView::Clear()
{
Invalidate();
- ThumbnailView::Clear();
+ SfxThumbnailView::Clear();
+}
+
+void RecentDocsView::PostLoadRecentUsedFile(LoadRecentFile* pLoadRecentFile)
+{
+ assert(!mpLoadRecentFile);
+ mpLoadRecentFile = pLoadRecentFile;
+ Application::PostUserEvent(LINK(nullptr, RecentDocsView, ExecuteHdl_Impl), pLoadRecentFile);
+}
+
+void RecentDocsView::DispatchedLoadRecentUsedFile()
+{
+ mpLoadRecentFile = nullptr;
}
IMPL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, void*, p, void )
{
- LoadRecentFile* pLoadRecentFile = static_cast< LoadRecentFile*>(p);
+ LoadRecentFile* pLoadRecentFile = static_cast<LoadRecentFile*>(p);
try
{
// Asynchronous execution as this can lead to our own destruction!
@@ -417,8 +423,11 @@ IMPL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, void*, p, void )
{
}
- if ( !pLoadRecentFile->pView->IsDisposed() )
- pLoadRecentFile->pView->SetPointer( PointerStyle::Arrow );
+ if (pLoadRecentFile->pView)
+ {
+ pLoadRecentFile->pView->DispatchedLoadRecentUsedFile();
+ pLoadRecentFile->pView->SetPointer(PointerStyle::Arrow);
+ }
delete pLoadRecentFile;
}
diff --git a/sfx2/source/control/recentdocsviewitem.cxx b/sfx2/source/control/recentdocsviewitem.cxx
index e7676f1ac74b..8a047b20ee8d 100644
--- a/sfx2/source/control/recentdocsviewitem.cxx
+++ b/sfx2/source/control/recentdocsviewitem.cxx
@@ -211,7 +211,7 @@ void RecentDocsViewItem::OpenDocument()
pLoadRecentFile->aArgSeq = aArgsList;
pLoadRecentFile->pView = &mrParentView;
- Application::PostUserEvent(LINK(nullptr, sfx2::RecentDocsView, ExecuteHdl_Impl), pLoadRecentFile, true);
+ mrParentView.PostLoadRecentUsedFile(pLoadRecentFile);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/control/templatedefaultview.cxx b/sfx2/source/control/templatedefaultview.cxx
index 5b4a4ccd429a..6c4fd3d241eb 100644
--- a/sfx2/source/control/templatedefaultview.cxx
+++ b/sfx2/source/control/templatedefaultview.cxx
@@ -11,28 +11,23 @@
#include <sfx2/thumbnailview.hxx>
#include <templateviewitem.hxx>
#include <sfx2/sfxresid.hxx>
-#include <vcl/builderfactory.hxx>
#include <vcl/event.hxx>
#include <vcl/svapp.hxx>
#include <sfx2/strings.hrc>
-#define MNI_OPEN 1
-#define MNI_EDIT 2
-
#include <officecfg/Office/Common.hxx>
-VCL_BUILDER_FACTORY(TemplateDefaultView)
-
constexpr int gnItemPadding(5); //TODO:: Change padding to 10. It looks really crowded and occupied.
constexpr tools::Long gnTextHeight = 30;
-TemplateDefaultView::TemplateDefaultView( Window* pParent)
- : TemplateLocalView(pParent)
+TemplateDefaultView::TemplateDefaultView(std::unique_ptr<weld::ScrolledWindow> xWindow,
+ std::unique_ptr<weld::Menu> xMenu)
+ : SfxTemplateLocalView(std::move(xWindow), std::move(xMenu))
{
tools::Rectangle aScreen = Application::GetScreenPosSizePixel(Application::GetDisplayBuiltInScreen());
mnItemMaxSize = std::min(aScreen.GetWidth(),aScreen.GetHeight()) > 800 ? 256 : 192;
- ThumbnailView::setItemDimensions( mnItemMaxSize, mnItemMaxSize, gnTextHeight, gnItemPadding );
+ SfxThumbnailView::setItemDimensions( mnItemMaxSize, mnItemMaxSize, gnTextHeight, gnItemPadding );
updateThumbnailDimensions(mnItemMaxSize);
// startcenter specific settings
@@ -41,13 +36,8 @@ TemplateDefaultView::TemplateDefaultView( Window* pParent)
maHighlightColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightColor::get());
maHighlightTextColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightTextColor::get());
mfHighlightTransparence = 0.25;
-}
-void TemplateDefaultView::reload()
-{
- TemplateLocalView::reload();
- // Set preferred width
- set_width_request(gnTextHeight + mnItemMaxSize + 2*gnItemPadding);
+ UpdateColors();
}
void TemplateDefaultView::showAllTemplates()
@@ -57,12 +47,12 @@ void TemplateDefaultView::showAllTemplates()
insertItems(maAllTemplates, false);
}
-void TemplateDefaultView::KeyInput( const KeyEvent& rKEvt )
+bool TemplateDefaultView::KeyInput( const KeyEvent& rKEvt )
{
- ThumbnailView::KeyInput(rKEvt);
+ return SfxThumbnailView::KeyInput(rKEvt);
}
-void TemplateDefaultView::MouseButtonDown( const MouseEvent& rMEvt )
+bool TemplateDefaultView::MouseButtonDown( const MouseEvent& rMEvt )
{
if( rMEvt.IsLeft() && rMEvt.GetClicks() == 1 )
{
@@ -71,21 +61,21 @@ void TemplateDefaultView::MouseButtonDown( const MouseEvent& rMEvt )
TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem);
if(pViewItem)
maOpenTemplateHdl.Call(pViewItem);
- return;
+ return true;
}
- TemplateLocalView::MouseButtonDown(rMEvt);
+ return SfxTemplateLocalView::MouseButtonDown(rMEvt);
}
void TemplateDefaultView::createContextMenu()
{
- ScopedVclPtrInstance<PopupMenu> pItemMenu;
- pItemMenu->InsertItem(MNI_OPEN,SfxResId(STR_OPEN));
- pItemMenu->InsertItem(MNI_EDIT,SfxResId(STR_EDIT_TEMPLATE));
+ mxContextMenu->clear();
+ mxContextMenu->append("open",SfxResId(STR_OPEN));
+ mxContextMenu->append("edit",SfxResId(STR_EDIT_TEMPLATE));
deselectItems();
maSelectedItem->setSelection(true);
- pItemMenu->SetSelectHdl(LINK(this, TemplateLocalView, ContextMenuSelectHdl));
- pItemMenu->Execute(this, tools::Rectangle(maPosition,Size(1,1)), PopupMenuFlags::ExecuteDown);
+ maItemStateHdl.Call(maSelectedItem);
+ ContextMenuSelectHdl(mxContextMenu->popup_at_rect(GetDrawingArea(), tools::Rectangle(maPosition, Size(1,1))));
Invalidate();
}
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index c043102e73ae..1657a3bae43c 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -289,7 +289,7 @@ void TemplateLocalView::insertItems(const std::vector<TemplateItemProperties> &r
updateItems(std::move(aItems));
}
-void TemplateLocalView::updateThumbnailDimensions(tools::Long itemMaxSize)
+void SfxTemplateLocalView::updateThumbnailDimensions(tools::Long itemMaxSize)
{
mnThumbnailWidth = itemMaxSize;
mnThumbnailHeight = itemMaxSize;
@@ -471,6 +471,8 @@ SfxTemplateLocalView::SfxTemplateLocalView(std::unique_ptr<weld::ScrolledWindow>
: SfxThumbnailView(std::move(xWindow), std::move(xMenu))
, mnCurRegionId(0)
, maSelectedItem(nullptr)
+ , mnThumbnailWidth(TEMPLATE_THUMBNAIL_MAX_WIDTH)
+ , mnThumbnailHeight(TEMPLATE_THUMBNAIL_MAX_HEIGHT)
, maPosition(0,0)
, mpDocTemplates(new SfxDocumentTemplates)
{
@@ -509,8 +511,8 @@ void SfxTemplateLocalView::Populate()
aProperties.aPath = aURL;
aProperties.aRegionName = aRegionName;
aProperties.aThumbnail = TemplateLocalView::fetchThumbnail(aURL,
- TEMPLATE_THUMBNAIL_MAX_WIDTH,
- TEMPLATE_THUMBNAIL_MAX_HEIGHT);
+ mnThumbnailWidth,
+ mnThumbnailHeight);
pItem->maTemplates.push_back(aProperties);
maAllTemplates.push_back(aProperties);
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index b0827d4922cc..de2415c8640e 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -1327,6 +1327,13 @@ void SfxThumbnailView::ImplInit()
mpStartSelRange = mFilteredItemList.end();
+ UpdateColors();
+
+ mpItemAttrs->nMaxTextLength = 0;
+}
+
+void SfxThumbnailView::UpdateColors()
+{
mpItemAttrs->aFillColor = maFillColor.getBColor();
mpItemAttrs->aTextColor = maTextColor.getBColor();
mpItemAttrs->aHighlightColor = maHighlightColor.getBColor();
@@ -1334,8 +1341,6 @@ void SfxThumbnailView::ImplInit()
mpItemAttrs->aSelectHighlightColor = maSelectHighlightColor.getBColor();
mpItemAttrs->aSelectHighlightTextColor = maSelectHighlightTextColor.getBColor();
mpItemAttrs->fHighlightTransparence = mfHighlightTransparence;
-
- mpItemAttrs->nMaxTextLength = 0;
}
void SfxThumbnailView::ImplDeleteItems()