[Libreoffice-commits] .: Branch 'feature/template-dialog' - 8 commits - sfx2/inc sfx2/source
Rafael Dominguez
rdominguez at kemper.freedesktop.org
Sat Jun 16 15:10:33 PDT 2012
sfx2/inc/sfx2/thumbnailview.hxx | 27 +--------
sfx2/inc/sfx2/thumbnailviewitem.hxx | 26 ++++++++-
sfx2/inc/templatedlg.hxx | 5 +
sfx2/source/control/thumbnailview.cxx | 86 +++++++++++++-----------------
sfx2/source/control/thumbnailviewacc.cxx | 4 -
sfx2/source/control/thumbnailviewitem.cxx | 46 +++++++++++++++-
sfx2/source/doc/templatedlg.cxx | 10 +++
sfx2/source/doc/templatedlg.hrc | 3 -
sfx2/source/doc/templatedlg.src | 12 ++++
9 files changed, 143 insertions(+), 76 deletions(-)
New commits:
commit 7fdb04011c1cc4c078af6b20dadd88bfa09ed3e0
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 17:40:04 2012 -0430
Redraw item if we (un)select an item when clicking the selection box.
Change-Id: Ide3c116500e315db7280ad25029ae68180036618
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 356f0e4..8b32122 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -295,6 +295,8 @@ private:
DECL_DLLPRIVATE_LINK( ImplScrollHdl, ScrollBar* );
DECL_DLLPRIVATE_LINK( ImplTimerHdl, void* );
+ DECL_LINK(OnFolderSelected, ThumbnailViewItem*);
+
protected:
Timer maTimer;
diff --git a/sfx2/inc/sfx2/thumbnailviewitem.hxx b/sfx2/inc/sfx2/thumbnailviewitem.hxx
index f122ec5..30eb42e 100644
--- a/sfx2/inc/sfx2/thumbnailviewitem.hxx
+++ b/sfx2/inc/sfx2/thumbnailviewitem.hxx
@@ -69,12 +69,15 @@ struct ThumbnailViewItem
void setSelectionBoxPos (const Point &pos);
+ void setSelectClickHdl (const Link &link);
+
private:
DECL_LINK (OnClick, CheckBox *);
private:
+ Link maClickHdl;
CheckBox *mpSelectBox;
};
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 33578a1..05386f3 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -587,6 +587,12 @@ void ThumbnailView::ImplEndTracking( const Point& rPos, bool bCancel )
{
}
+IMPL_LINK (ThumbnailView, OnFolderSelected, ThumbnailViewItem*, pItem)
+{
+ DrawItem(pItem,GetItemRect(pItem->mnId));
+ return 0;
+}
+
void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
{
if ( rMEvt.IsLeft() )
@@ -1156,6 +1162,7 @@ void ThumbnailView::Populate ()
ThumbnailViewItem* pItem = new ThumbnailViewItem( *this, this );
pItem->mnId = i+1;
pItem->maText = aRegionName;
+ pItem->setSelectClickHdl(LINK(this,ThumbnailView,OnFolderSelected));
/// Preview first 2 thumbnails for folder
pItem->maPreview1 = lcl_fetchThumbnail(pTemplates->GetPath(i,0),128,128);
@@ -1178,6 +1185,7 @@ void ThumbnailView::InsertItem( sal_uInt16 nItemId, const BitmapEx& rImage,
pItem->mnId = nItemId;
pItem->maPreview1 = rImage;
pItem->maText = rText;
+ pItem->setSelectClickHdl(LINK(this,ThumbnailView,OnFolderSelected));
ImplInsertItem( pItem, nPos );
}
diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx
index 4a6ad84..bb47118 100644
--- a/sfx2/source/control/thumbnailviewitem.cxx
+++ b/sfx2/source/control/thumbnailviewitem.cxx
@@ -89,9 +89,16 @@ void ThumbnailViewItem::setSelectionBoxPos (const Point &pos)
mpSelectBox->SetPosPixel(pos);
}
+void ThumbnailViewItem::setSelectClickHdl (const Link &link)
+{
+ maClickHdl = link;
+}
+
IMPL_LINK (ThumbnailViewItem, OnClick, CheckBox*, )
{
mbSelected = mpSelectBox->GetState() == STATE_CHECK;
+ mpSelectBox->Invalidate();
+ maClickHdl.Call(this);
return 0;
}
commit 71702696eba6053f37798c33e608bdd97bdf116d
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 12:33:34 2012 -0430
Add button to activate/deactivate template view selection mode.
Change-Id: Ib58503e30d589eb5c02a29c1fec4be3a8011ba31
diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index b1b7598..d475ef8 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -31,11 +31,16 @@ public:
private:
+ DECL_LINK(OnClickSelectionMode, ImageButton*);
+
+private:
+
PushButton aButtonAll;
PushButton aButtonDocs;
PushButton aButtonPresents;
PushButton aButtonSheets;
PushButton aButtonDraws;
+ ImageButton maButtonSelMode;
ThumbnailView *maView;
};
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index b9a2918..48600d5 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -25,14 +25,18 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
aButtonPresents(this,SfxResId(BTN_SELECT_PRESENTATIONS)),
aButtonSheets(this,SfxResId(BTN_SELECT_SHEETS)),
aButtonDraws(this,SfxResId(BTN_SELECT_DRAWS)),
+ maButtonSelMode(this,SfxResId(BTN_SELECTION_MODE)),
maView(new ThumbnailView(this,SfxResId(TEMPLATE_VIEW)))
{
+ maButtonSelMode.SetStyle(maButtonSelMode.GetStyle() | WB_TOGGLE);
+
maView->SetStyle(WB_TABSTOP | WB_VSCROLL);
maView->SetColCount(MAX_COLUMN_COUNT);
maView->SetLineCount(MAX_LINE_COUNT);
aButtonAll.SetClickHdl(LINK(this,SfxTemplateManagerDlg,ViewAllHdl));
aButtonDocs.SetClickHdl(LINK(this,SfxTemplateManagerDlg,ViewDocsHdl));
+ maButtonSelMode.SetClickHdl(LINK(this,SfxTemplateManagerDlg,OnClickSelectionMode));
maView->Populate();
maView->Show();
@@ -65,4 +69,10 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg,ViewDrawsHdl)
return 0;
}
+IMPL_LINK (SfxTemplateManagerDlg, OnClickSelectionMode, ImageButton*, pButton)
+{
+ maView->setSelectionMode(pButton->GetState() == STATE_CHECK);
+ return 0;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc
index cd48687..d596a41 100644
--- a/sfx2/source/doc/templatedlg.hrc
+++ b/sfx2/source/doc/templatedlg.hrc
@@ -11,7 +11,8 @@
#define BTN_SELECT_PRESENTATIONS 3
#define BTN_SELECT_SHEETS 4
#define BTN_SELECT_DRAWS 5
+#define BTN_SELECTION_MODE 6
-#define TEMPLATE_VIEW 6
+#define TEMPLATE_VIEW 7
#define IMG_ONLINE_REPOSITORY 100
diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src
index 1fb3e73..fa23895 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -62,6 +62,18 @@ ModalDialog DLG_TEMPLATE_MANAGER
Text [en-US] = "Drawings";
};
+ ImageButton BTN_SELECTION_MODE
+ {
+ Pos = MAP_APPFONT(265,5);
+ Size = MAP_APPFONT(14,14);
+ TabStop = TRUE;
+
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "signet.png" ; };
+ };
+ };
+
Control TEMPLATE_VIEW
{
Pos = MAP_APPFONT(5,30);
commit e3200a761e896ccdb1a052f1a9911f3674844f91
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 10:53:10 2012 -0430
Add support for selection modes.
While selection mode is disabled, to select a template using a mouse,
click within the checkbox that appears on hover. Clicking the checkbox
of another template causes it to be added to the selection. To unselect
a template, click its checkbox again.
Alternatively, under selection mode, the user can simply click a
template's thumbnail or title to select it.
Change-Id: I456936fb713dd43200d9b468a0fb8d82944625d4
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 266d42d..356f0e4 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -229,6 +229,8 @@ public:
long GetScrollWidth() const;
+ void setSelectionMode (bool mode);
+
protected:
virtual void MouseButtonDown( const MouseEvent& rMEvt );
@@ -324,6 +326,7 @@ protected:
bool mbScroll : 1;
bool mbIsTransientChildrenDisabled : 1;
bool mbHasVisibleItems : 1;
+ bool mbSelectionMode;
Color maColor;
};
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index dea3d42..33578a1 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -244,6 +244,7 @@ void ThumbnailView::ImplInit()
mbDoubleSel = false;
mbScroll = false;
mbHasVisibleItems = false;
+ mbSelectionMode = false;
ImplInitSettings( true, true, true );
}
@@ -598,12 +599,17 @@ void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
{
if ( rMEvt.GetClicks() == 1 )
{
- pItem->setSelection(!pItem->isSelected());
-
- if (!pItem->isHighlighted())
- DrawItem(pItem,GetItemRect(pItem->mnId));
+ if (mbSelectionMode)
+ {
+ pItem->setSelection(!pItem->isSelected());
- //StartTracking( STARTTRACK_SCROLLREPEAT );
+ if (!pItem->isHighlighted())
+ DrawItem(pItem,GetItemRect(pItem->mnId));
+ }
+ else
+ {
+ //StartTracking( STARTTRACK_SCROLLREPEAT );
+ }
}
else if ( rMEvt.GetClicks() == 2 )
;
@@ -1601,6 +1607,11 @@ long ThumbnailView::GetScrollWidth() const
return 0;
}
+void ThumbnailView::setSelectionMode (bool mode)
+{
+ mbSelectionMode = mode;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit c473daadabc57200a68fe6a4ebd430250be7e217
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 10:25:52 2012 -0430
Remove NoSelection related functions and attributes.
Change-Id: Ieab1bd81986663e0ff6f2074b59b863ebe9be4a8
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 31e664c..266d42d 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -205,11 +205,7 @@ public:
sal_uInt16 GetSelectItemId() const { return mnSelItemId; }
bool IsItemSelected( sal_uInt16 nItemId ) const
- { return !mbNoSelection && (nItemId == mnSelItemId); }
-
- void SetNoSelection();
-
- bool IsNoSelection() const { return mbNoSelection; }
+ { return nItemId == mnSelItemId; }
void SetItemText( sal_uInt16 nItemId, const rtl::OUString &rStr );
@@ -322,7 +318,6 @@ protected:
sal_uInt16 mnFrameStyle;
bool mbHighlight : 1;
bool mbSelection : 1;
- bool mbNoSelection : 1;
bool mbDrawSelection : 1;
bool mbBlackSel : 1;
bool mbDoubleSel : 1;
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 5d1f3cc..dea3d42 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -239,7 +239,6 @@ void ThumbnailView::ImplInit()
mnFrameStyle = 0;
mbHighlight = false;
mbSelection = false;
- mbNoSelection = true;
mbDrawSelection = true;
mbBlackSel = false;
mbDoubleSel = false;
@@ -1233,7 +1232,6 @@ void ThumbnailView::RemoveItem( sal_uInt16 nItemId )
mnCurCol = 0;
mnHighItemId = 0;
mnSelItemId = 0;
- mbNoSelection = true;
}
if ( IsReallyVisible() && IsUpdateMode() )
@@ -1249,7 +1247,6 @@ void ThumbnailView::Clear()
mnCurCol = 0;
mnHighItemId = 0;
mnSelItemId = 0;
- mbNoSelection = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
@@ -1345,11 +1342,10 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId )
return;
}
- if ( (mnSelItemId != nItemId) || mbNoSelection )
+ if ( mnSelItemId != nItemId)
{
sal_uInt16 nOldItem = mnSelItemId ? mnSelItemId : 1;
mnSelItemId = nItemId;
- mbNoSelection = false;
bool bNewOut = IsReallyVisible() && IsUpdateMode();
bool bNewLine = false;
@@ -1440,16 +1436,6 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId )
}
}
-void ThumbnailView::SetNoSelection()
-{
- mbNoSelection = true;
- mbHighlight = false;
- mbSelection = false;
-
- if ( IsReallyVisible() && IsUpdateMode() )
- Invalidate();
-}
-
void ThumbnailView::SetItemText( sal_uInt16 nItemId, const rtl::OUString& rText )
{
size_t nPos = GetItemPos( nItemId );
diff --git a/sfx2/source/control/thumbnailviewacc.cxx b/sfx2/source/control/thumbnailviewacc.cxx
index e738a54..8534b5e 100644
--- a/sfx2/source/control/thumbnailviewacc.cxx
+++ b/sfx2/source/control/thumbnailviewacc.cxx
@@ -491,7 +491,6 @@ void SAL_CALL ThumbnailViewAcc::clearAccessibleSelection()
{
ThrowIfDisposed();
const SolarMutexGuard aSolarGuard;
- mpParent->SetNoSelection();
}
void SAL_CALL ThumbnailViewAcc::selectAllAccessibleChildren()
@@ -545,7 +544,7 @@ void SAL_CALL ThumbnailViewAcc::deselectAccessibleChild( sal_Int32 nChildIndex )
// Because of the single selection we can reset the whole selection when
// the specified child is currently selected.
if (isAccessibleChildSelected(nChildIndex))
- mpParent->SetNoSelection();
+ ;
}
sal_Int64 SAL_CALL ThumbnailViewAcc::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw( uno::RuntimeException )
commit c0e293eb466e11e6be09b73e36f417bf4fe669ab
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 10:20:15 2012 -0430
Remove doubleclick, highlight and select handlers.
Change-Id: I6eef0d9eb4bfe3dc0e1cd9b212f3be4c286f017f
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index bd8b3c0..31e664c 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -161,10 +161,6 @@ public:
virtual ~ThumbnailView ();
- virtual void Select();
-
- virtual void DoubleClick();
-
// Fill view with template thumbnails
void Populate ();
@@ -237,16 +233,6 @@ public:
long GetScrollWidth() const;
- void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
-
- const Link& GetSelectHdl() const { return maSelectHdl; }
-
- void SetDoubleClickHdl( const Link& rLink ) { maDoubleClickHdl = rLink; }
-
- const Link& GetDoubleClickHdl() const { return maDoubleClickHdl; }
-
- void SetHighlightHdl( const Link& rLink );
-
protected:
virtual void MouseButtonDown( const MouseEvent& rMEvt );
@@ -344,9 +330,6 @@ protected:
bool mbIsTransientChildrenDisabled : 1;
bool mbHasVisibleItems : 1;
Color maColor;
- Link maDoubleClickHdl;
- Link maSelectHdl;
- Link maHighlightHdl;
};
#endif // THUMBNAILVIEW_HXX
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 88a807f..5d1f3cc 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -607,7 +607,7 @@ void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
//StartTracking( STARTTRACK_SCROLLREPEAT );
}
else if ( rMEvt.GetClicks() == 2 )
- DoubleClick();
+ ;
}
return;
@@ -803,7 +803,6 @@ void ThumbnailView::KeyInput( const KeyEvent& rKEvt )
if ( nItemId != mnSelItemId )
{
SelectItem( nItemId );
- Select();
}
}
}
@@ -1136,16 +1135,6 @@ void ThumbnailView::DataChanged( const DataChangedEvent& rDCEvt )
}
}
-void ThumbnailView::Select()
-{
- maSelectHdl.Call( this );
-}
-
-void ThumbnailView::DoubleClick()
-{
- maDoubleClickHdl.Call( this );
-}
-
void ThumbnailView::Populate ()
{
const SfxDocumentTemplates* pTemplates = mpMgr->GetTemplates();
@@ -1448,7 +1437,6 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId )
::com::sun::star::uno::Any aOldAny, aNewAny;
ImplFireAccessibleEvent( ::com::sun::star::accessibility::AccessibleEventId::SELECTION_CHANGED, aOldAny, aNewAny );
}
- maHighlightHdl.Call(this);
}
}
@@ -1563,7 +1551,6 @@ bool ThumbnailView::StartDrag( const CommandEvent& rCEvt, Region& rRegion )
{
SelectItem( nSelId );
Update();
- Select();
}
Region aRegion;
@@ -1628,11 +1615,6 @@ long ThumbnailView::GetScrollWidth() const
return 0;
}
-void ThumbnailView::SetHighlightHdl( const Link& rLink )
-{
- maHighlightHdl = rLink;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/control/thumbnailviewacc.cxx b/sfx2/source/control/thumbnailviewacc.cxx
index cb03405..e738a54 100644
--- a/sfx2/source/control/thumbnailviewacc.cxx
+++ b/sfx2/source/control/thumbnailviewacc.cxx
@@ -465,7 +465,6 @@ void SAL_CALL ThumbnailViewAcc::selectAccessibleChild( sal_Int32 nChildIndex )
if(pItem != NULL)
{
mpParent->SelectItem( pItem->mnId );
- mpParent->Select ();
}
else
throw lang::IndexOutOfBoundsException();
commit 410828289f2bffa9cd9cc8d35ca426d815d79382
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 09:28:25 2012 -0430
Sync item state when clicking directly on the checkbox.
Change-Id: I35e3ff973fe3a48bc9c0ffd105d22b40d660af7a
diff --git a/sfx2/inc/sfx2/thumbnailviewitem.hxx b/sfx2/inc/sfx2/thumbnailviewitem.hxx
index 625e5c4..f122ec5 100644
--- a/sfx2/inc/sfx2/thumbnailviewitem.hxx
+++ b/sfx2/inc/sfx2/thumbnailviewitem.hxx
@@ -71,6 +71,10 @@ struct ThumbnailViewItem
private:
+ DECL_LINK (OnClick, CheckBox *);
+
+private:
+
CheckBox *mpSelectBox;
};
diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx
index cd9ec8e..4a6ad84 100644
--- a/sfx2/source/control/thumbnailviewitem.cxx
+++ b/sfx2/source/control/thumbnailviewitem.cxx
@@ -41,10 +41,11 @@ ThumbnailViewItem::ThumbnailViewItem(ThumbnailView &rView, Window *pParent)
, mbSelected(false)
, mbHover(false)
, mpxAcc(NULL)
- , mpSelectBox(new CheckBox(pParent,WB_HIDE))
+ , mpSelectBox(new CheckBox(pParent,WB_HIDE | WB_NOPOINTERFOCUS))
{
mpSelectBox->SetPosPixel(Point(0,0));
mpSelectBox->SetSizePixel(Size(20,20));
+ mpSelectBox->SetClickHdl(LINK(this,ThumbnailViewItem,OnClick));
}
ThumbnailViewItem::~ThumbnailViewItem()
@@ -88,6 +89,12 @@ void ThumbnailViewItem::setSelectionBoxPos (const Point &pos)
mpSelectBox->SetPosPixel(pos);
}
+IMPL_LINK (ThumbnailViewItem, OnClick, CheckBox*, )
+{
+ mbSelected = mpSelectBox->GetState() == STATE_CHECK;
+ return 0;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 05c74f9e6aada15f398c666dd7d5ede3fa23288b
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 08:14:42 2012 -0430
Add a checkbox to display selected items.
Change-Id: I2072efabdbd45ede10160e481dde27584b15e867
diff --git a/sfx2/inc/sfx2/thumbnailviewitem.hxx b/sfx2/inc/sfx2/thumbnailviewitem.hxx
index f90ac58..625e5c4 100644
--- a/sfx2/inc/sfx2/thumbnailviewitem.hxx
+++ b/sfx2/inc/sfx2/thumbnailviewitem.hxx
@@ -36,6 +36,8 @@
#define THUMBNAILVIEW_ITEM_NONEITEM 0xFFFE
+class CheckBox;
+class Window;
class ThumbnailView;
struct ThumbnailViewItem
@@ -50,7 +52,8 @@ struct ThumbnailViewItem
rtl::OUString maText;
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >* mpxAcc;
- ThumbnailViewItem ( ThumbnailView& rParent );
+ ThumbnailViewItem (ThumbnailView &rView, Window *pParent);
+
~ThumbnailViewItem ();
bool isSelected () const { return mbSelected; }
@@ -63,6 +66,12 @@ struct ThumbnailViewItem
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
GetAccessible( bool bIsTransientChildrenDisabled );
+
+ void setSelectionBoxPos (const Point &pos);
+
+private:
+
+ CheckBox *mpSelectBox;
};
#endif // THUMBNAILVIEWITEM_HXX
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index bcd28c5..88a807f 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -409,6 +409,11 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect)
*this, aNewViewInfos );
pProcessor->process(aSeq);
+
+ aPos.Y() -= GetTextHeight();
+ aPos.X() = aRect.Left() + 15;
+
+ pItem->setSelectionBoxPos(aPos);
}
}
@@ -1154,7 +1159,7 @@ void ThumbnailView::Populate ()
if (nEntries)
{
- ThumbnailViewItem* pItem = new ThumbnailViewItem( *this );
+ ThumbnailViewItem* pItem = new ThumbnailViewItem( *this, this );
pItem->mnId = i+1;
pItem->maText = aRegionName;
@@ -1175,7 +1180,7 @@ void ThumbnailView::Populate ()
void ThumbnailView::InsertItem( sal_uInt16 nItemId, const BitmapEx& rImage,
const rtl::OUString& rText, size_t nPos )
{
- ThumbnailViewItem* pItem = new ThumbnailViewItem( *this );
+ ThumbnailViewItem* pItem = new ThumbnailViewItem( *this, this );
pItem->mnId = nItemId;
pItem->maPreview1 = rImage;
pItem->maText = rText;
diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx
index d7d9643..cd9ec8e 100644
--- a/sfx2/source/control/thumbnailviewitem.cxx
+++ b/sfx2/source/control/thumbnailviewitem.cxx
@@ -29,18 +29,22 @@
#include "thumbnailviewacc.hxx"
#include <sfx2/thumbnailviewitem.hxx>
+#include <vcl/button.hxx>
#include <vcl/svapp.hxx>
using namespace ::com::sun::star;
-ThumbnailViewItem::ThumbnailViewItem( ThumbnailView& rParent )
- : mrParent(rParent)
+ThumbnailViewItem::ThumbnailViewItem(ThumbnailView &rView, Window *pParent)
+ : mrParent(rView)
, mnId(0)
, mbVisible(true)
, mbSelected(false)
, mbHover(false)
, mpxAcc(NULL)
+ , mpSelectBox(new CheckBox(pParent,WB_HIDE))
{
+ mpSelectBox->SetPosPixel(Point(0,0));
+ mpSelectBox->SetSizePixel(Size(20,20));
}
ThumbnailViewItem::~ThumbnailViewItem()
@@ -50,16 +54,25 @@ ThumbnailViewItem::~ThumbnailViewItem()
static_cast< ThumbnailViewItemAcc* >( mpxAcc->get() )->ParentDestroyed();
delete mpxAcc;
}
+
+ delete mpSelectBox;
}
void ThumbnailViewItem::setSelection (bool state)
{
mbSelected = state;
+ mpSelectBox->SetState(state ? STATE_CHECK : STATE_NOCHECK);
+
+ if (!isHighlighted())
+ mpSelectBox->Show(state);
}
void ThumbnailViewItem::setHighlight (bool state)
{
mbHover = state;
+
+ if (!isSelected())
+ mpSelectBox->Show(state);
}
uno::Reference< accessibility::XAccessible > ThumbnailViewItem::GetAccessible( bool bIsTransientChildrenDisabled )
@@ -70,6 +83,11 @@ uno::Reference< accessibility::XAccessible > ThumbnailViewItem::GetAccessible( b
return *mpxAcc;
}
+void ThumbnailViewItem::setSelectionBoxPos (const Point &pos)
+{
+ mpSelectBox->SetPosPixel(pos);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 86f6fd0c4e9a2f63d60cba9622eecc3ab4cd00ca
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Jun 16 07:35:57 2012 -0430
Add isSelected, setSelection, isHighlighted, setHighlight methods.
- These functions are to control the state of the thumbnailviewitem
state.
Change-Id: Id1f645832e7bd63df326db2da6f28c5b3c935c14
diff --git a/sfx2/inc/sfx2/thumbnailviewitem.hxx b/sfx2/inc/sfx2/thumbnailviewitem.hxx
index 1cedb9e..f90ac58 100644
--- a/sfx2/inc/sfx2/thumbnailviewitem.hxx
+++ b/sfx2/inc/sfx2/thumbnailviewitem.hxx
@@ -53,6 +53,14 @@ struct ThumbnailViewItem
ThumbnailViewItem ( ThumbnailView& rParent );
~ThumbnailViewItem ();
+ bool isSelected () const { return mbSelected; }
+
+ void setSelection (bool state);
+
+ bool isHighlighted () const { return mbHover; }
+
+ void setHighlight (bool state);
+
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
GetAccessible( bool bIsTransientChildrenDisabled );
};
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 6430e86..bcd28c5 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -340,7 +340,7 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect)
// Draw item background
BColor aFillColor = maColor.getBColor();
- if ( pItem->mbSelected || pItem->mbHover )
+ if ( pItem->isSelected() || pItem->isHighlighted() )
aFillColor = rStyleSettings.GetHighlightColor().getBColor();
aSeq[nCount++] = Primitive2DReference( new PolyPolygonColorPrimitive2D(
@@ -594,9 +594,9 @@ void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
{
if ( rMEvt.GetClicks() == 1 )
{
- pItem->mbSelected = !pItem->mbSelected;
+ pItem->setSelection(!pItem->isSelected());
- if (!pItem->mbHover)
+ if (!pItem->isHighlighted())
DrawItem(pItem,GetItemRect(pItem->mnId));
//StartTracking( STARTTRACK_SCROLLREPEAT );
@@ -631,16 +631,16 @@ void ThumbnailView::MouseMove( const MouseEvent& rMEvt )
{
ThumbnailViewItem *pOld = mItemList[nPos];
- pOld->mbHover = false;
+ pOld->setHighlight(false);
- if (!pOld->mbSelected)
+ if (!pOld->isSelected())
DrawItem(pOld,GetItemRect(pOld->mnId));
}
mnHighItemId = pItem->mnId;
- pItem->mbHover = true;
+ pItem->setHighlight(true);
- if (!pItem->mbSelected)
+ if (!pItem->isSelected())
DrawItem(pItem,GetItemRect(pItem->mnId));
}
}
@@ -654,9 +654,9 @@ void ThumbnailView::MouseMove( const MouseEvent& rMEvt )
{
ThumbnailViewItem *pOld = mItemList[nPos];
- pOld->mbHover = false;
+ pOld->setHighlight(false);
- if (!pOld->mbSelected)
+ if (!pOld->isSelected())
DrawItem(pOld,GetItemRect(pOld->mnId));
}
@@ -1052,9 +1052,9 @@ void ThumbnailView::LoseFocus()
{
ThumbnailViewItem *pOld = mItemList[nPos];
- pOld->mbHover = false;
+ pOld->setHighlight(false);
- if (!pOld->mbSelected)
+ if (!pOld->isSelected())
DrawItem(pOld,GetItemRect(pOld->mnId));
}
diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx
index 915ee5a..d7d9643 100644
--- a/sfx2/source/control/thumbnailviewitem.cxx
+++ b/sfx2/source/control/thumbnailviewitem.cxx
@@ -52,6 +52,16 @@ ThumbnailViewItem::~ThumbnailViewItem()
}
}
+void ThumbnailViewItem::setSelection (bool state)
+{
+ mbSelected = state;
+}
+
+void ThumbnailViewItem::setHighlight (bool state)
+{
+ mbHover = state;
+}
+
uno::Reference< accessibility::XAccessible > ThumbnailViewItem::GetAccessible( bool bIsTransientChildrenDisabled )
{
if( !mpxAcc )
More information about the Libreoffice-commits
mailing list