215 lines
6.4 KiB
C++
215 lines
6.4 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* This file is part of OpenOffice.org.
|
|
*
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
* only, as published by the Free Software Foundation.
|
|
*
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License version 3 for more details
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
* <http://www.openoffice.org/license.html>
|
|
* for a copy of the LGPLv3 License.
|
|
*
|
|
************************************************************************/
|
|
|
|
#ifndef _FILEDLG2_HXX
|
|
#define _FILEDLG2_HXX
|
|
|
|
#include <tools/debug.hxx>
|
|
#include <tools/fsys.hxx>
|
|
#include <vcl/button.hxx>
|
|
#include <vcl/unohelp.hxx>
|
|
#include <vector>
|
|
|
|
class FixedText;
|
|
class Edit;
|
|
class ListBox;
|
|
class ListBox;
|
|
class Button;
|
|
|
|
class PathDialog;
|
|
class FileDialog;
|
|
class ImpPathDialog;
|
|
|
|
struct ImpFilterItem
|
|
{
|
|
String aName;
|
|
String aMask;
|
|
|
|
ImpFilterItem( const String & rFilter, const String & rMask )
|
|
{
|
|
aName = rFilter;
|
|
aMask = rMask;
|
|
}
|
|
};
|
|
|
|
typedef ::std::vector< ImpFilterItem* > ImpFilterList;
|
|
#include <vcl/lstbox.hxx>
|
|
|
|
class KbdListBox : public ListBox
|
|
{
|
|
public:
|
|
|
|
KbdListBox( Window* pParent, WinBits nStyle = WB_BORDER )
|
|
: ListBox ( pParent, nStyle )
|
|
{};
|
|
|
|
virtual long PreNotify( NotifyEvent& rNEvt );
|
|
|
|
};
|
|
|
|
|
|
class ImpPathDialog
|
|
{
|
|
friend class ImpFileDialog;
|
|
|
|
private:
|
|
PathDialog* pSvPathDialog;
|
|
Edit* pEdit;
|
|
FixedText* pDirTitel;
|
|
KbdListBox* pDirList;
|
|
FixedText* pDirPath;
|
|
ListBox* pDriveList;
|
|
FixedText* pDriveTitle;
|
|
PushButton* pLoadBtn;
|
|
PushButton* pOkBtn;
|
|
PushButton* pCancelBtn;
|
|
PushButton* pHomeBtn;
|
|
PushButton* pNewDirBtn;
|
|
|
|
sal_uInt16 nOwnChilds;
|
|
|
|
DirEntry aPath; // aktuell angewaehlter Pfad
|
|
sal_uInt16 nDirCount; // Anzahl der Verzeichnis-
|
|
// Verschachtelungen
|
|
protected:
|
|
|
|
virtual void UpdateEntries( const sal_Bool bWithDirs );
|
|
void UpdateDirs( const DirEntry& rTmpPath );
|
|
|
|
sal_Bool IsFileOk( const DirEntry& rDirEntry );
|
|
void InitControls();
|
|
|
|
DECL_LINK( SelectHdl, ListBox * );
|
|
DECL_LINK( DblClickHdl, ListBox * );
|
|
DECL_LINK( ClickHdl, Button * );
|
|
|
|
public:
|
|
ImpPathDialog( PathDialog* pDlg, RESOURCE_TYPE nType, sal_Bool bCreateDir );
|
|
virtual ~ImpPathDialog();
|
|
|
|
virtual void SetPath( const String& rPath );
|
|
virtual void SetPath( const Edit& rEdit );
|
|
virtual String GetPath() const;
|
|
|
|
virtual void PreExecute();
|
|
virtual void PostExecute();
|
|
|
|
PathDialog* GetPathDialog() const { return pSvPathDialog; }
|
|
|
|
void SetOkButtonText( const String& rText ) { pOkBtn->SetText( rText ); }
|
|
void SetCancelButtonText( const String& rText ) { pCancelBtn->SetText( rText ); }
|
|
|
|
};
|
|
|
|
|
|
class ImpFileDialog : public ImpPathDialog
|
|
{
|
|
private:
|
|
FixedText* pFileTitel;
|
|
ListBox* pFileList;
|
|
FixedText* pTypeTitel;
|
|
ListBox* pTypeList;
|
|
|
|
WildCard aMask; // aktuelle Maske
|
|
|
|
ImpFilterList aFilterList; // Filterliste
|
|
sal_uInt16 nCurFilter; // aktueller Filter
|
|
|
|
sal_Bool bOpen; // sal_True = Open; sal_False = SAVEAS
|
|
|
|
protected:
|
|
void InitControls();
|
|
|
|
String ExtendFileName( DirEntry aEntry ) const;
|
|
|
|
DECL_LINK( SelectHdl, ListBox * );
|
|
DECL_LINK( DblClickHdl, ListBox * );
|
|
DECL_LINK( ClickHdl, Button * );
|
|
|
|
virtual void UpdateEntries( const sal_Bool bWithDirs );
|
|
sal_Bool IsFileOk( const DirEntry& rDirEntry );
|
|
|
|
public:
|
|
ImpFileDialog( PathDialog* pDlg, WinBits nStyle, RESOURCE_TYPE nType );
|
|
virtual ~ImpFileDialog();
|
|
|
|
void AddFilter( const String& rFilter, const String& rMask );
|
|
void SetCurFilter( const String& rFilter );
|
|
String GetCurFilter() const;
|
|
|
|
size_t GetFilterCount() const { return aFilterList.size(); }
|
|
inline String GetFilterName( size_t nPos ) const;
|
|
inline String GetFilterType( size_t nPos ) const;
|
|
|
|
virtual void SetPath( const String& rPath );
|
|
virtual void SetPath( const Edit& rEdit );
|
|
virtual String GetPath() const;
|
|
|
|
virtual void PreExecute();
|
|
|
|
FileDialog* GetFileDialog() const { return (FileDialog*)GetPathDialog(); }
|
|
};
|
|
|
|
inline String ImpFileDialog::GetFilterName( size_t nPos ) const
|
|
{
|
|
String aName;
|
|
if ( nPos < aFilterList.size() ) {
|
|
aName = aFilterList[ nPos ]->aName;
|
|
}
|
|
return aName;
|
|
}
|
|
|
|
inline String ImpFileDialog::GetFilterType( size_t nPos ) const
|
|
{
|
|
String aFilterMask;
|
|
if ( nPos < aFilterList.size() ) {
|
|
aFilterMask = aFilterList[ nPos ]->aMask;
|
|
}
|
|
return aFilterMask;
|
|
}
|
|
|
|
class ImpSvFileDlg
|
|
{
|
|
private:
|
|
ImpPathDialog* pDlg;
|
|
|
|
public:
|
|
ImpSvFileDlg() { pDlg = 0; }
|
|
~ImpSvFileDlg() { delete pDlg; }
|
|
|
|
ImpPathDialog* GetDialog() const { return pDlg; }
|
|
void CreateDialog( PathDialog* pCreateFrom, WinBits nStyle, RESOURCE_TYPE nType, sal_Bool bCreate );
|
|
|
|
void SetOkButtonText( const String& rText ) { pDlg->SetOkButtonText( rText ); } // ihr habts ja nicht anders gewollt
|
|
void SetCancelButtonText( const String& rText ) { pDlg->SetCancelButtonText( rText ); }
|
|
|
|
};
|
|
|
|
#endif // _FILEDLG2_HXX
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|