blob: c844bc0b2d5d23b8df150e2e2ce31053d5a288e9 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _SVX_BOX_HXX
#define _SVX_BOX_HXX
// include ---------------------------------------------------------------
#include <svl/svarray.hxx>
#include <tools/string.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/combobox.hxx>
#include <svtools/svtdllapi.h>
// forward ---------------------------------------------------------------
class SvxBoxEntry;
class SvxListBase;
SV_DECL_PTRARR( SvxEntryLst, SvxBoxEntry*, 10, 10 )
// class SvxBoxEntry -----------------------------------------------------
class SVT_DLLPUBLIC SvxBoxEntry
{
friend class SvxListBox;
friend class SvxComboBox;
public:
SvxBoxEntry( const String& aName, sal_uInt16 nId=0 );
SvxBoxEntry( const SvxBoxEntry& rOrg );
SvxBoxEntry();
String aName;
sal_uInt16 nId;
private:
sal_Bool bModified;
sal_Bool bNew;
};
// class SvxListBox ------------------------------------------------------
class SVT_DLLPUBLIC SvxListBox : public ListBox
{
using ListBox::InsertEntry;
using ListBox::RemoveEntry;
using ListBox::GetEntryPos;
using ListBox::IsEntrySelected;
using ListBox::SelectEntry;
public:
SvxListBox( Window* pParent, WinBits nBits = WB_BORDER );
SvxListBox( Window* pParent, const ResId& rId );
~SvxListBox();
void InsertNewEntry( const SvxBoxEntry& rEntry );
void InsertEntry( const SvxBoxEntry& rEntry,
sal_uInt16 nId = LISTBOX_ENTRY_NOTFOUND );
void RemoveEntry( sal_uInt16 nPos );
void RemoveEntry( const SvxBoxEntry& rEntry );
void Clear();
sal_uInt16 GetEntryPos( const SvxBoxEntry& rEntry ) const;
const SvxBoxEntry& GetSvxBoxEntry( sal_uInt16 nIdx ) const;
inline sal_Bool IsEntrySelected( const SvxBoxEntry& rEntry ) const;
const SvxBoxEntry& GetSelectSvxBoxEntry( sal_uInt16 nIdx = 0 ) const;
inline void SelectEntry( const SvxBoxEntry& rEntry,
sal_Bool bSelect = sal_True );
void ModifyEntry( sal_uInt16 nPos, const String& aName );
sal_uInt16 GetModifiedCount() const;
const SvxBoxEntry& GetModifiedEntry( sal_uInt16 nPos ) const;
sal_uInt16 GetRemovedCount() const;
const SvxBoxEntry& GetRemovedEntry( sal_uInt16 nPos ) const;
sal_uInt16 GetNewCount() const;
const SvxBoxEntry& GetNewEntry( sal_uInt16 nPos ) const;
private:
SvxEntryLst aEntryLst;
SvxEntryLst aDelEntryLst;
SvxBoxEntry aDefault;
void InitListBox();
void InsertSorted( SvxBoxEntry* pEntry );
};
// inlines ---------------------------------------------------------------
inline sal_Bool SvxListBox::IsEntrySelected( const SvxBoxEntry& aEntry ) const
{ return ListBox::IsEntrySelected( aEntry.aName ); }
inline void SvxListBox::SelectEntry( const SvxBoxEntry& aEntry, sal_Bool bSelect )
{ ListBox::SelectEntry( aEntry.aName, bSelect ); }
// enum SvxComboBoxStyle -------------------------------------------------
enum SvxComboBoxStyle
{
SVX_CBS_UPPER = 0x01,
SVX_CBS_LOWER = 0x02,
SVX_CBS_ALL = 0x04,
SVX_CBS_FILENAME = 0x08,
SVX_CBS_SW_FILENAME = SVX_CBS_FILENAME
};
// class SvxComboBox -----------------------------------------------------
class SVT_DLLPUBLIC SvxComboBox : public ComboBox
{
using ComboBox::InsertEntry;
using ComboBox::RemoveEntry;
using ComboBox::GetEntryPos;
using Window::SetStyle;
public:
SvxComboBox( Window* pParent,
WinBits nBits = WB_BORDER, sal_uInt16 nStyleBits = SVX_CBS_ALL );
SvxComboBox( Window* pParent, const ResId& rId, sal_uInt16 nStyleBits = SVX_CBS_ALL );
~SvxComboBox();
void InsertNewEntry( const SvxBoxEntry& );
void InsertEntry( const SvxBoxEntry& );
void RemoveEntry( sal_uInt16 nPos );
void RemoveEntry( const SvxBoxEntry& rEntry );
void Clear();
sal_uInt16 GetEntryPos( const SvxBoxEntry& rEntry ) const;
const SvxBoxEntry& GetEntry( sal_uInt16 nIdx ) const;
void ModifyEntry( sal_uInt16 nPos, const String& aName );
sal_uInt16 GetModifiedCount() const;
const SvxBoxEntry& GetModifiedEntry( sal_uInt16 nPos ) const;
sal_uInt16 GetRemovedCount() const;
const SvxBoxEntry& GetRemovedEntry( sal_uInt16 nPos ) const;
sal_uInt16 GetNewCount() const;
const SvxBoxEntry& GetNewEntry( sal_uInt16 nPos ) const;
sal_uInt16 GetStyle() const { return nStyle; }
void SetStyle( const sal_uInt16 nSt ) { nStyle = nSt; }
String GetText() const;
private:
SvxEntryLst aEntryLst;
SvxEntryLst aDelEntryLst;
SvxBoxEntry aDefault;
sal_uInt16 nStyle;
virtual void KeyInput( const KeyEvent& rKEvt );
void InitComboBox();
void InsertSorted( SvxBoxEntry* pEntry );
};
#endif