Author: alg
Date: Wed Apr  3 15:11:54 2013
New Revision: 1464066

URL: http://svn.apache.org/r1464066
Log:
i121791 Simplified LineStartEnd ListBox preparation, fixed handling of pState 
in NotifyItemUpdate

Modified:
    
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.cxx
    
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.hxx
    
openoffice/branches/sidebar/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx

Modified: 
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.cxx?rev=1464066&r1=1464065&r2=1464066&view=diff
==============================================================================
--- 
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.cxx 
(original)
+++ 
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.cxx 
Wed Apr  3 15:11:54 2013
@@ -93,95 +93,52 @@ namespace {
         return COL_TRANSPARENT;
     }
 
-} // end of anonymous namespace
-
-
-class LineEndLB_LPP : public ListBox
-{
-
-public:
-                LineEndLB_LPP( Window* pParent, ResId Id ) : ListBox( pParent, 
Id ) {}
-                LineEndLB_LPP( Window* pParent, WinBits aWB ) : ListBox( 
pParent, aWB ) {}
-
-       void Fill( const XLineEndList* pList, bool bStart = true );
-
-       void    Append( XLineEndEntry* pEntry, Bitmap* pBmp = NULL,
-                                       bool bStart = true );
-       void    Modify( XLineEndEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp = 
NULL,
-                                       bool bStart = true );
-};
-
-void LineEndLB_LPP::Fill( const XLineEndList* pList, bool bStart )
-{
-       long nCount = pList->Count();
-       XLineEndEntry* pEntry;
-       VirtualDevice aVD;
-       SetUpdateMode( false );
-
-       for( long i = 0; i < nCount; i++ )
-       {
-        pEntry = pList->GetLineEnd( i );
-               Bitmap* pBitmap = 
const_cast<XLineEndList*>(pList)->CreateBitmapForUI( i );
-               if( pBitmap )
-               {
-                       Size aBmpSize( pBitmap->GetSizePixel() );
-                       aVD.SetOutputSizePixel( aBmpSize, false );
-                       aVD.DrawBitmap( Point(), *pBitmap );
-                       InsertEntry( pEntry->GetName(),
-                               aVD.GetBitmap( bStart ? Point() : Point( 
aBmpSize.Width() / 2, 0 ),
-                                       Size( aBmpSize.Width() / 2, 
aBmpSize.Height() ) ) );
-
-                       delete pBitmap;
-               }
-               else
-                       InsertEntry( pEntry->GetName() );
-       }
-       SetUpdateMode( true );
-}
-
-void LineEndLB_LPP::Append( XLineEndEntry* pEntry, Bitmap* pBmp, bool bStart )
-{
-       if( pBmp )
-       {
-               VirtualDevice aVD;
-               Size aBmpSize( pBmp->GetSizePixel() );
-
-               aVD.SetOutputSizePixel( aBmpSize, false );
-               aVD.DrawBitmap( Point(), *pBmp );
-               InsertEntry( pEntry->GetName(),
-                       aVD.GetBitmap( bStart ? Point() : Point( 
aBmpSize.Width() / 2, 0 ),
-                               Size( aBmpSize.Width() / 2, aBmpSize.Height() ) 
) );
-       }
-       else
-               InsertEntry( pEntry->GetName() );
-}
-
-void LineEndLB_LPP::Modify( XLineEndEntry* pEntry, sal_uInt16 nPos, Bitmap* 
pBmp, bool bStart )
-{
-       RemoveEntry( nPos );
+    void FillLineEndListBox(ListBox& rListBoxStart, ListBox& rListBoxEnd, 
const XLineEndList& rList)
+    {
+        const sal_uInt32 nCount(rList.Count());
+        rListBoxStart.SetUpdateMode(false);
+        rListBoxEnd.SetUpdateMode(false);
 
-       if( pBmp )
-       {
-               VirtualDevice aVD;
-               Size aBmpSize( pBmp->GetSizePixel() );
+        for(sal_uInt32 i(0); i < nCount; i++)
+        {
+            XLineEndEntry* pEntry = rList.GetLineEnd(i);
+            const Bitmap* pBitmap = const_cast< XLineEndList& 
>(rList).CreateBitmapForUI(i);
 
-               aVD.SetOutputSizePixel( aBmpSize, false );
-               aVD.DrawBitmap( Point(), *pBmp );
-               InsertEntry( pEntry->GetName(),
-                       aVD.GetBitmap( bStart ? Point() : Point( 
aBmpSize.Width() / 2, 0 ),
-                               Size( aBmpSize.Width() / 2, aBmpSize.Height() ) 
), nPos );
-       }
-       else
-               InsertEntry( pEntry->GetName(), nPos );
-}
+            if(pBitmap)
+            {
+                Bitmap aCopyStart(*pBitmap);
+                Bitmap aCopyEnd(*pBitmap);
+                delete pBitmap;
+                const Size aBmpSize(aCopyStart.GetSizePixel());
+                const Rectangle aCropRectStart(Point(), Size(aBmpSize.Width() 
/ 2, aBmpSize.Height()));
+                const Rectangle aCropRectEnd(Point(aBmpSize.Width() / 2, 0), 
Size(aBmpSize.Width() / 2, aBmpSize.Height()));
+
+                aCopyStart.Crop(aCropRectStart);
+                rListBoxStart.InsertEntry(
+                    pEntry->GetName(),
+                    aCopyStart);
+
+                aCopyEnd.Crop(aCropRectEnd);
+                rListBoxEnd.InsertEntry(
+                    pEntry->GetName(),
+                    aCopyEnd);
+            }
+            else
+            {
+                rListBoxStart.InsertEntry(pEntry->GetName());
+                rListBoxEnd.InsertEntry(pEntry->GetName());
+            }
+        }
 
+        rListBoxStart.SetUpdateMode(true);
+        rListBoxEnd.SetUpdateMode(true);
+    }
+} // end of anonymous namespace
 
 // namespace open
 
 namespace svx { namespace sidebar {
 
-
-
 LinePropertyPanel::LinePropertyPanel(
     Window* pParent,
     const cssu::Reference<css::frame::XFrame>& rxFrame,
@@ -201,22 +158,22 @@ LinePropertyPanel::LinePropertyPanel(
     mpFTTrancparency(new FixedText(this, SVX_RES(FT_TRANSPARENT))),
     mpMFTransparent(new MetricField(this, SVX_RES(MF_TRANSPARENT))),
     mpFTArrow(new FixedText(this, SVX_RES(FT_ARROW))),
-    mpLBStart(new LineEndLB_LPP(this, SVX_RES(LB_START))),
-    mpLBEnd(new LineEndLB_LPP(this, SVX_RES(LB_END))),
+    mpLBStart(new ListBox /*LineEndLB_LPP*/(this, SVX_RES(LB_START))),
+    mpLBEnd(new ListBox /*LineEndLB_LPP*/(this, SVX_RES(LB_END))),
     mpFTEdgeStyle(new FixedText(this, SVX_RES(FT_EDGESTYLE))),
     mpLBEdgeStyle(new ListBox(this, SVX_RES(LB_EDGESTYLE))),
     mpFTCapStyle(new FixedText(this, SVX_RES(FT_CAPSTYLE))),
     mpLBCapStyle(new ListBox(this, SVX_RES(LB_CAPSTYLE))),
-    maStyleControl(SID_ATTR_LINE_STYLE, *pBindings, *this),             // ( 
SID_SVX_START + 169 )
-    maDashControl (SID_ATTR_LINE_DASH, *pBindings, *this),              // ( 
SID_SVX_START + 170 )
-    maWidthControl(SID_ATTR_LINE_WIDTH, *pBindings, *this),             // ( 
SID_SVX_START + 171 )
-    maColorControl(SID_ATTR_LINE_COLOR, *pBindings, *this),             // ( 
SID_SVX_START + 172 )
-    maStartControl(SID_ATTR_LINE_START, *pBindings, *this),             // ( 
SID_SVX_START + 173 )
-    maEndControl(SID_ATTR_LINE_END, *pBindings, *this),                 // ( 
SID_SVX_START + 174 )
-    maLineEndListControl(SID_LINEEND_LIST, *pBindings, *this),          // ( 
SID_SVX_START + 184 )
-    maTransControl(SID_ATTR_LINE_TRANSPARENCE, *pBindings, *this),      // 
(SID_SVX_START+1107)
-    maEdgeStyle(SID_ATTR_LINE_JOINT, *pBindings, *this),                // 
(SID_SVX_START+1110)
-    maCapStyle(SID_ATTR_LINE_CAP, *pBindings, *this),                   // 
(SID_SVX_START+1111)
+    maStyleControl(SID_ATTR_LINE_STYLE, *pBindings, *this),
+    maDashControl (SID_ATTR_LINE_DASH, *pBindings, *this),
+    maWidthControl(SID_ATTR_LINE_WIDTH, *pBindings, *this),
+    maColorControl(SID_ATTR_LINE_COLOR, *pBindings, *this),
+    maStartControl(SID_ATTR_LINE_START, *pBindings, *this),
+    maEndControl(SID_ATTR_LINE_END, *pBindings, *this),
+    maLineEndListControl(SID_LINEEND_LIST, *pBindings, *this),
+    maTransControl(SID_ATTR_LINE_TRANSPARENCE, *pBindings, *this),
+    maEdgeStyle(SID_ATTR_LINE_JOINT, *pBindings, *this),
+    maCapStyle(SID_ATTR_LINE_CAP, *pBindings, *this),
     maColor(COL_BLACK),
     mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_LINE_COLOR, 
TBI_COLOR, mpTBColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
     mpStyleItem(),
@@ -589,38 +546,46 @@ void LinePropertyPanel::NotifyItemUpdate
         }
        case SID_ATTR_LINE_START:
         {
-            const XLineStartItem* pItem = dynamic_cast< const XLineStartItem* 
>(pState);
+                   mpFTArrow->Enable();
+                   mpLBStart->Enable();
 
-                   if(eState != SFX_ITEM_DONTCARE && pItem)
+                   if(eState != SFX_ITEM_DONTCARE)
                    {
-                           mbStartAvailable = true;    //add 
-                           mpStartItem.reset(pItem ? 
(XLineStartItem*)pItem->Clone() : 0);
-                           SelectEndStyle(true);
-                   }
-                   else
-                   {
-                           mpLBStart->SetNoSelection();
-                           mbStartAvailable = false;   //add 
+                const XLineStartItem* pItem = dynamic_cast< const 
XLineStartItem* >(pState);
+
+                if(pItem)
+                {
+                               mbStartAvailable = true;        //add 
+                               mpStartItem.reset(pItem ? 
(XLineStartItem*)pItem->Clone() : 0);
+                               SelectEndStyle(true);
+                    break;
+                }
                    }
+
+            mpLBStart->SetNoSelection();
+                       mbStartAvailable = false;       //add 
                    break;
         }
        case SID_ATTR_LINE_END:
         {
                    mpFTArrow->Enable();
                    mpLBEnd->Enable();
-            const XLineEndItem* pItem = dynamic_cast< const XLineEndItem* 
>(pState);
 
-                   if(eState != SFX_ITEM_DONTCARE && pItem)
+                   if(eState != SFX_ITEM_DONTCARE)
                    {
-                           mbEndAvailable = true;              //add 
-                           mpEndItem.reset(pItem ? 
(XLineEndItem*)pItem->Clone() : 0);
-                           SelectEndStyle(false);              
+                const XLineEndItem* pItem = dynamic_cast< const XLineEndItem* 
>(pState);
+
+                if(pItem)
+                {
+                               mbEndAvailable = true;          //add 
+                               mpEndItem.reset(pItem ? 
(XLineEndItem*)pItem->Clone() : 0);
+                               SelectEndStyle(false);          
+                    break;
+                }
                    }
-                   else
-                   {
-                           mpLBEnd->SetNoSelection();
-                           mbEndAvailable = false;             //add 
-                   }   
+
+            mpLBEnd->SetNoSelection();
+                       mbEndAvailable = false;         //add 
                    break;
         }
        case SID_LINEEND_LIST:
@@ -1096,20 +1061,18 @@ void  LinePropertyPanel::FillLineEndList
                SvxLineEndListItem aItem( *(const 
SvxLineEndListItem*)(pSh->GetItem( SID_LINEEND_LIST ) ) );            
                mpLineEndList = aItem.GetLineEndList();
                String sNone( SVX_RES( RID_SVXSTR_NONE ) );
-               //
                mpLBStart->Clear();
                mpLBEnd->Clear();
-               
+               mpLBStart->InsertEntry( sNone );
+               mpLBEnd->InsertEntry( sNone );
+
         if(mpLineEndList)
                {
-                       mpLBStart->InsertEntry( sNone );
-                       mpLBStart->Fill( mpLineEndList );
-                       mpLBStart->SelectEntryPos(0);
-
-                       mpLBEnd->InsertEntry( sNone );
-                       mpLBEnd->Fill( mpLineEndList, false);
-                       mpLBEnd->SelectEntryPos(0);
+            FillLineEndListBox(*mpLBStart, *mpLBEnd, *mpLineEndList);
                }
+
+               mpLBStart->SelectEntryPos(0);
+               mpLBEnd->SelectEntryPos(0);
        }
        else
        {

Modified: 
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.hxx?rev=1464066&r1=1464065&r2=1464066&view=diff
==============================================================================
--- 
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.hxx 
(original)
+++ 
openoffice/branches/sidebar/main/svx/source/sidebar/line/LinePropertyPanel.hxx 
Wed Apr  3 15:11:54 2013
@@ -44,7 +44,6 @@ class XLineStyleItem;
 class XLineDashItem;
 class XLineStartItem;
 class XLineEndItem;
-class LineEndLB_LPP;
 class XLineEndList;
 class ListBox;
 class ToolBox;
@@ -146,8 +145,8 @@ private:
     ::boost::scoped_ptr< FixedText >                        mpFTTrancparency;
     ::boost::scoped_ptr< MetricField >                      mpMFTransparent;
     ::boost::scoped_ptr< FixedText >                        mpFTArrow;
-    ::boost::scoped_ptr< LineEndLB_LPP >                    mpLBStart;
-    ::boost::scoped_ptr< LineEndLB_LPP >                    mpLBEnd;
+    ::boost::scoped_ptr< ListBox >                          mpLBStart;
+    ::boost::scoped_ptr< ListBox >                          mpLBEnd;
     ::boost::scoped_ptr< FixedText >                        mpFTEdgeStyle;
     ::boost::scoped_ptr< ListBox >                          mpLBEdgeStyle;
     ::boost::scoped_ptr< FixedText >                        mpFTCapStyle;

Modified: 
openoffice/branches/sidebar/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx?rev=1464066&r1=1464065&r2=1464066&view=diff
==============================================================================
--- 
openoffice/branches/sidebar/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
 (original)
+++ 
openoffice/branches/sidebar/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
 Wed Apr  3 15:11:54 2013
@@ -1090,7 +1090,9 @@ FieldUnit PosSizePropertyPanel::GetCurre
        FieldUnit eUnit = FUNIT_NONE;
 
        if ( pState && eState >= SFX_ITEM_DEFAULT )
+    {
                eUnit = (FieldUnit)( (const SfxUInt16Item*)pState )->GetValue();
+    }
        else
        {
                SfxViewFrame* pFrame = SfxViewFrame::Current();


Reply via email to