summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dbaccess/source/ui/app/AppDetailView.cxx24
-rw-r--r--dbaccess/source/ui/app/AppDetailView.hxx4
2 files changed, 20 insertions, 8 deletions
diff --git a/dbaccess/source/ui/app/AppDetailView.cxx b/dbaccess/source/ui/app/AppDetailView.cxx
index 2f77244699d3..e6e318c661d4 100644
--- a/dbaccess/source/ui/app/AppDetailView.cxx
+++ b/dbaccess/source/ui/app/AppDetailView.cxx
@@ -51,10 +51,11 @@ using namespace ::com::sun::star::beans;
using ::com::sun::star::util::URL;
using ::com::sun::star::sdb::application::NamedDatabaseObject;
-TaskEntry::TaskEntry( const char* _pAsciiUNOCommand, const char* _pHelpID, const char* pTitleResourceID )
+TaskEntry::TaskEntry( const char* _pAsciiUNOCommand, const char* _pHelpID, const char* pTitleResourceID, bool _bHideWhenDisabled )
:sUNOCommand( OUString::createFromAscii( _pAsciiUNOCommand ) )
,pHelpID( _pHelpID )
,sTitle( DBA_RES(pTitleResourceID) )
+ ,bHideWhenDisabled( _bHideWhenDisabled )
{
}
@@ -341,9 +342,7 @@ void OApplicationDetailView::impl_createPage( ElementType _eType, const Referenc
Resize();
}
-namespace {
-
-void impl_fillTaskPaneData(ElementType _eType, TaskPaneData& _rData)
+void OApplicationDetailView::impl_fillTaskPaneData(ElementType _eType, TaskPaneData& _rData) const
{
TaskEntryList& rList( _rData.aTasks );
rList.clear(); rList.reserve( 4 );
@@ -353,7 +352,7 @@ void impl_fillTaskPaneData(ElementType _eType, TaskPaneData& _rData)
case E_TABLE:
rList.emplace_back( ".uno:DBNewTable", RID_STR_TABLES_HELP_TEXT_DESIGN, RID_STR_NEW_TABLE );
rList.emplace_back( ".uno:DBNewTableAutoPilot", RID_STR_TABLES_HELP_TEXT_WIZARD, RID_STR_NEW_TABLE_AUTO );
- rList.emplace_back( ".uno:DBNewView", RID_STR_VIEWS_HELP_TEXT_DESIGN, RID_STR_NEW_VIEW );
+ rList.emplace_back( ".uno:DBNewView", RID_STR_VIEWS_HELP_TEXT_DESIGN, RID_STR_NEW_VIEW, true );
_rData.pTitleId = RID_STR_TABLES_CONTAINER;
break;
@@ -364,7 +363,7 @@ void impl_fillTaskPaneData(ElementType _eType, TaskPaneData& _rData)
break;
case E_REPORT:
- rList.emplace_back( ".uno:DBNewReport", RID_STR_REPORT_HELP_TEXT, RID_STR_NEW_REPORT );
+ rList.emplace_back( ".uno:DBNewReport", RID_STR_REPORT_HELP_TEXT, RID_STR_NEW_REPORT, true );
rList.emplace_back( ".uno:DBNewReportAutoPilot", RID_STR_REPORTS_HELP_TEXT_WIZARD, RID_STR_NEW_REPORT_AUTO );
_rData.pTitleId = RID_STR_REPORTS_CONTAINER;
break;
@@ -379,8 +378,19 @@ void impl_fillTaskPaneData(ElementType _eType, TaskPaneData& _rData)
default:
OSL_FAIL( "OApplicationDetailView::impl_fillTaskPaneData: illegal element type!" );
}
-}
+ // remove the entries which are not enabled currently
+ for (TaskEntryList::iterator pTask = rList.begin(); pTask != rList.end();)
+ {
+ if ( pTask->bHideWhenDisabled
+ && !getBorderWin().getView()->getCommandController().isCommandEnabled( pTask->sUNOCommand )
+ )
+ pTask = rList.erase( pTask );
+ else
+ {
+ ++pTask;
+ }
+ }
}
const TaskPaneData& OApplicationDetailView::impl_getTaskPaneData( ElementType _eType )
diff --git a/dbaccess/source/ui/app/AppDetailView.hxx b/dbaccess/source/ui/app/AppDetailView.hxx
index bca1145f2010..a00e7f4ba642 100644
--- a/dbaccess/source/ui/app/AppDetailView.hxx
+++ b/dbaccess/source/ui/app/AppDetailView.hxx
@@ -47,11 +47,12 @@ namespace dbaui
OUString sUNOCommand;
const char* pHelpID;
OUString sTitle;
+ bool bHideWhenDisabled;
// TODO: we should be consistent in the task pane and the menus/toolbars:
// If an entry is disabled in the latter, it should also be disabled in the former.
// If an entry is *hidden* in the former, it should also be hidden in the latter.
- TaskEntry( const char* _pAsciiUNOCommand, const char* pHelpID, const char* pTitleResourceID );
+ TaskEntry( const char* _pAsciiUNOCommand, const char* pHelpID, const char* pTitleResourceID, bool _bHideWhenDisabled = false );
};
typedef std::vector< TaskEntry > TaskEntryList;
@@ -313,6 +314,7 @@ namespace dbaui
);
const TaskPaneData& impl_getTaskPaneData( ElementType _eType );
+ void impl_fillTaskPaneData( ElementType _eType, TaskPaneData& _rData ) const;
};
}
#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILVIEW_HXX