summaryrefslogtreecommitdiff
path: root/cui/source/options/dbregister.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/options/dbregister.cxx')
-rw-r--r--cui/source/options/dbregister.cxx147
1 files changed, 81 insertions, 66 deletions
diff --git a/cui/source/options/dbregister.cxx b/cui/source/options/dbregister.cxx
index 23e8bf865626..91635d80f5f1 100644
--- a/cui/source/options/dbregister.cxx
+++ b/cui/source/options/dbregister.cxx
@@ -190,7 +190,7 @@ DbRegistrationOptionsPage::~DbRegistrationOptionsPage()
pHeaderBar->Hide();
for ( USHORT i = 0; i < pPathBox->GetEntryCount(); ++i )
- delete static_cast<String*>(pPathBox->GetEntry(i)->GetUserData());
+ delete static_cast< DatabaseRegistration* >( pPathBox->GetEntry(i)->GetUserData() );
delete pPathBox;
delete pHeaderBar;
}
@@ -209,21 +209,22 @@ BOOL DbRegistrationOptionsPage::FillItemSet( SfxItemSet& rCoreSet )
{
// the settings for the single drivers
sal_Bool bModified = sal_False;
- TNameLocationMap aMap;
+ DatabaseRegistrations aRegistrations;
ULONG nCount = pPathBox->GetEntryCount();
for ( ULONG i = 0; i < nCount; ++i )
{
SvLBoxEntry* pEntry = pPathBox->GetEntry(i);
- String* pPath = static_cast<String*>(pEntry->GetUserData());
- if ( pPath && pPath->Len() )
+ DatabaseRegistration* pRegistration = static_cast< DatabaseRegistration* >( pEntry->GetUserData() );
+ if ( pRegistration && pRegistration->sLocation.getLength() )
{
- OFileNotation aTransformer(*pPath);
- aMap.insert(TNameLocationMap::value_type(::rtl::OUString(pPathBox->GetEntryText(pEntry,0)),aTransformer.get(OFileNotation::N_URL)));
+ ::rtl::OUString sName( pPathBox->GetEntryText( pEntry, 0 ) );
+ OFileNotation aTransformer( pRegistration->sLocation );
+ aRegistrations[ sName ] = DatabaseRegistration( aTransformer.get( OFileNotation::N_URL ), pRegistration->bReadOnly );
}
}
- if ( m_nOldCount != aMap.size() || m_bModified )
+ if ( m_nOldCount != aRegistrations.size() || m_bModified )
{
- rCoreSet.Put(DatabaseMapItem(SID_SB_DB_REGISTER, aMap), SID_SB_DB_REGISTER);
+ rCoreSet.Put(DatabaseMapItem( SID_SB_DB_REGISTER, aRegistrations ), SID_SB_DB_REGISTER);
bModified = sal_True;
}
@@ -235,47 +236,44 @@ BOOL DbRegistrationOptionsPage::FillItemSet( SfxItemSet& rCoreSet )
void DbRegistrationOptionsPage::Reset( const SfxItemSet& rSet )
{
// the settings for the single drivers
- SFX_ITEMSET_GET( rSet, pSettings, DatabaseMapItem, SID_SB_DB_REGISTER, sal_True );
+ SFX_ITEMSET_GET( rSet, pRegistrations, DatabaseMapItem, SID_SB_DB_REGISTER, sal_True );
+ if ( !pRegistrations )
+ return;
- if ( pSettings )
+ pPathBox->Clear();
+
+ const DatabaseRegistrations& rRegistrations = pRegistrations->getRegistrations();
+ m_nOldCount = rRegistrations.size();
+ DatabaseRegistrations::const_iterator aIter = rRegistrations.begin();
+ DatabaseRegistrations::const_iterator aEnd = rRegistrations.end();
+ for ( ; aIter != aEnd; ++aIter )
+ {
+ OFileNotation aTransformer( aIter->second.sLocation );
+ insertNewEntry( aIter->first, aTransformer.get( OFileNotation::N_SYSTEM ), aIter->second.bReadOnly );
+ }
+
+ String aUserData = GetUserData();
+ if ( aUserData.Len() )
{
- // TabListBox f"ullen
- pPathBox->Clear();
-
- const TNameLocationMap& rMap = pSettings->getSettings();
- m_nOldCount = rMap.size();
- TNameLocationMap::const_iterator aIter = rMap.begin();
- TNameLocationMap::const_iterator aEnd = rMap.end();
- for (; aIter != aEnd; ++aIter)
+ // Spaltenbreite restaurieren
+ pHeaderBar->SetItemSize( ITEMID_TYPE, aUserData.GetToken(0).ToInt32() );
+ HeaderEndDrag_Impl( NULL );
+ // Sortierrichtung restaurieren
+ BOOL bUp = (BOOL)(USHORT)aUserData.GetToken(1).ToInt32();
+ HeaderBarItemBits nBits = pHeaderBar->GetItemBits(ITEMID_TYPE);
+
+ if ( bUp )
{
- OFileNotation aTransformer(aIter->second);
- insertNewEntry(aIter->first,aTransformer.get(OFileNotation::N_SYSTEM));
+ nBits &= ~HIB_UPARROW;
+ nBits |= HIB_DOWNARROW;
}
-
- String aUserData = GetUserData();
-
- if ( aUserData.Len() )
+ else
{
- // Spaltenbreite restaurieren
- pHeaderBar->SetItemSize( ITEMID_TYPE, aUserData.GetToken(0).ToInt32() );
- HeaderEndDrag_Impl( NULL );
- // Sortierrichtung restaurieren
- BOOL bUp = (BOOL)(USHORT)aUserData.GetToken(1).ToInt32();
- HeaderBarItemBits nBits = pHeaderBar->GetItemBits(ITEMID_TYPE);
-
- if ( bUp )
- {
- nBits &= ~HIB_UPARROW;
- nBits |= HIB_DOWNARROW;
- }
- else
- {
- nBits &= ~HIB_DOWNARROW;
- nBits |= HIB_UPARROW;
- }
- pHeaderBar->SetItemBits( ITEMID_TYPE, nBits );
- HeaderSelect_Impl( NULL );
+ nBits &= ~HIB_DOWNARROW;
+ nBits |= HIB_UPARROW;
}
+ pHeaderBar->SetItemBits( ITEMID_TYPE, nBits );
+ HeaderSelect_Impl( NULL );
}
}
@@ -316,16 +314,19 @@ IMPL_LINK( DbRegistrationOptionsPage, NewHdl, void *, EMPTYARG )
IMPL_LINK( DbRegistrationOptionsPage, EditHdl, void *, EMPTYARG )
{
SvLBoxEntry* pEntry = pPathBox->GetCurEntry();
- if ( pEntry )
- {
- String* pOldLocation = static_cast<String*>(pEntry->GetUserData());
- String sOldName = pPathBox->GetEntryText(pEntry,0);
- m_pCurEntry = pEntry;
- openLinkDialog(sOldName,*pOldLocation,pEntry);
- m_pCurEntry = NULL;
- }
+ if ( !pEntry )
+ return 0L;
- return 0;
+ DatabaseRegistration* pOldRegistration = static_cast< DatabaseRegistration* >( pEntry->GetUserData() );
+ if ( !pOldRegistration || pOldRegistration->bReadOnly )
+ return 0L;
+
+ String sOldName = pPathBox->GetEntryText(pEntry,0);
+ m_pCurEntry = pEntry;
+ openLinkDialog( sOldName, pOldRegistration->sLocation, pEntry );
+ m_pCurEntry = NULL;
+
+ return 1L;
}
// -----------------------------------------------------------------------
@@ -390,28 +391,42 @@ IMPL_LINK( DbRegistrationOptionsPage, HeaderEndDrag_Impl, HeaderBar*, pBar )
// -----------------------------------------------------------------------
IMPL_LINK( DbRegistrationOptionsPage, PathSelect_Impl, SvTabListBox *, EMPTYARG )
-
-/* [Beschreibung]
-
-*/
-
{
SvLBoxEntry* pEntry = pPathBox->FirstSelected();
- m_aEdit.Enable( pEntry != NULL);
- m_aDelete.Enable( pEntry != NULL);
+ bool bReadOnly = true;
+ if ( pEntry )
+ {
+ DatabaseRegistration* pRegistration = static_cast< DatabaseRegistration* >( pEntry->GetUserData() );
+ bReadOnly = pRegistration->bReadOnly;
+ }
+
+ m_aEdit.Enable( !bReadOnly );
+ m_aDelete.Enable( !bReadOnly );
return 0;
}
// -----------------------------------------------------------------------------
-void DbRegistrationOptionsPage::insertNewEntry(const ::rtl::OUString& _sName,const ::rtl::OUString& _sLocation)
+void DbRegistrationOptionsPage::insertNewEntry( const ::rtl::OUString& _sName,const ::rtl::OUString& _sLocation, const bool _bReadOnly )
{
String aStr( _sName );
aStr += '\t';
aStr += String(_sLocation);
- SvLBoxEntry* pEntry = pPathBox->InsertEntry( aStr );
- String* pLocation = new String( _sLocation );
- pEntry->SetUserData( pLocation );
+
+ SvLBoxEntry* pEntry = NULL;
+ if ( _bReadOnly )
+ {
+ sal_Bool bHighContrast = pPathBox->GetDisplayBackground().GetColor().IsDark();
+ Image aLocked( CUI_RES( bHighContrast ? RID_SVXBMP_LOCK_HC : RID_SVXBMP_LOCK ) );
+ pEntry = pPathBox->InsertEntry( aStr, aLocked, aLocked );
+ }
+ else
+ {
+ pEntry = pPathBox->InsertEntry( aStr );
+ }
+
+ pEntry->SetUserData( new DatabaseRegistration( _sLocation, _bReadOnly ) );
}
+
// -----------------------------------------------------------------------------
String DbRegistrationOptionsPage::getFileLocation(const String& _sLocation)
{
@@ -482,10 +497,10 @@ void DbRegistrationOptionsPage::openLinkDialog(const String& _sOldName,const Str
{
if ( _pEntry )
{
- delete static_cast<String*>(_pEntry->GetUserData());
- pPathBox->GetModel()->Remove(_pEntry);
+ delete static_cast< DatabaseRegistration* >( _pEntry->GetUserData() );
+ pPathBox->GetModel()->Remove( _pEntry );
}
- insertNewEntry(sNewName,sNewLocation);
+ insertNewEntry( sNewName, sNewLocation, false );
m_bModified = sal_True;
}
}