Kaydet (Commit) c09a301d authored tarafından Krisztian Pinter's avatar Krisztian Pinter

startcenter: Improve file type filtering in RecentDocsView

Change-Id: Iac53a50e4c66963279016bd0178de9f43bd146e3
üst b24e3a60
...@@ -24,17 +24,19 @@ struct LoadRecentFile ...@@ -24,17 +24,19 @@ struct LoadRecentFile
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > xDispatch; ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > xDispatch;
}; };
enum APPLICATION_FILTER enum ApplicationType
{ {
FILTER_NONE, TYPE_NONE = 0,
FILTER_WRITER, TYPE_WRITER = 1 << 0,
FILTER_CALC, TYPE_CALC = 1 << 1,
FILTER_IMPRESS, TYPE_IMPRESS = 1 << 2,
FILTER_DRAW, TYPE_DRAW = 1 << 3,
FILTER_DATABASE, TYPE_DATABASE = 1 << 4,
FILTER_MATH, TYPE_MATH = 1 << 5,
TYPE_OTHER = 1 << 6
}; };
class SFX2_DLLPUBLIC RecentDocsView : protected ::comphelper::OBaseMutex, class SFX2_DLLPUBLIC RecentDocsView : protected ::comphelper::OBaseMutex,
public ThumbnailView public ThumbnailView
{ {
...@@ -47,19 +49,18 @@ public: ...@@ -47,19 +49,18 @@ public:
void SetThumbnailSize(long thumbnailSize); void SetThumbnailSize(long thumbnailSize);
long GetThumbnailSize() const; long GetThumbnailSize() const;
void SetFilter(APPLICATION_FILTER filter);
static bool isFilteredExtension(APPLICATION_FILTER filter, const OUString &rExt); static bool typeMatchesExtension(ApplicationType type, const OUString &rExt);
static BitmapEx getDefaultThumbnail(const OUString &rURL); static BitmapEx getDefaultThumbnail(const OUString &rURL);
int mnFileTypes;
DECL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, LoadRecentFile* ); DECL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, LoadRecentFile* );
protected: protected:
virtual void OnItemDblClicked(ThumbnailViewItem *pItem); virtual void OnItemDblClicked(ThumbnailViewItem *pItem);
bool isUnfilteredFile(const OUString &rURL) const; bool isAcceptedFile(const OUString &rURL) const;
APPLICATION_FILTER mFilter;
long mnItemMaxSize; long mnItemMaxSize;
long mnTextHeight; long mnTextHeight;
......
...@@ -41,6 +41,7 @@ static const char SFX_REFERER_USER[] = "private:user"; ...@@ -41,6 +41,7 @@ static const char SFX_REFERER_USER[] = "private:user";
RecentDocsView::RecentDocsView( Window* pParent ) RecentDocsView::RecentDocsView( Window* pParent )
: ThumbnailView(pParent) : ThumbnailView(pParent)
, mnFileTypes(TYPE_NONE)
, mnItemMaxSize(100) , mnItemMaxSize(100)
, mnTextHeight(30) , mnTextHeight(30)
, mnItemPadding(5) , mnItemPadding(5)
...@@ -60,44 +61,55 @@ RecentDocsView::~RecentDocsView() ...@@ -60,44 +61,55 @@ RecentDocsView::~RecentDocsView()
{ {
} }
bool RecentDocsView::isFilteredExtension(APPLICATION_FILTER filter, const OUString &rExt) bool RecentDocsView::typeMatchesExtension(ApplicationType type, const OUString &rExt)
{ {
bool bRet = true; bool bRet = false;
if (filter == FILTER_WRITER) if (rExt == "odt" || rExt == "doc" || rExt == "docx" ||
rExt == "rtf" || rExt == "txt")
{ {
bRet = rExt == "odt" || rExt == "doc" || rExt == "docx" || bRet = type & TYPE_WRITER;
rExt == "rtf" || rExt == "txt";
} }
else if (filter == FILTER_CALC) else if (rExt == "ods" || rExt == "xls" || rExt == "xlsx")
{ {
bRet = rExt == "ods" || rExt == "xls" || rExt == "xlsx"; bRet = type & TYPE_CALC;
} }
else if (filter == FILTER_IMPRESS) else if (rExt == "odp" || rExt == "pps" || rExt == "ppt" ||
rExt == "pptx")
{ {
bRet = rExt == "odp" || rExt == "pps" || rExt == "ppt" || bRet = type & TYPE_IMPRESS;
rExt == "pptx";
} }
else if (filter == FILTER_DRAW) else if (rExt == "odg")
{ {
bRet = rExt == "odg"; bRet = type & TYPE_DRAW;
} }
else if (filter == FILTER_DATABASE) else if (rExt == "odb")
{ {
bRet = rExt == "odb"; bRet = type & TYPE_DATABASE;
} }
else if (filter == FILTER_MATH) else if (rExt == "odf")
{ {
bRet = rExt == "odf"; bRet = type & TYPE_MATH;
}
else
{
bRet = type & TYPE_OTHER;
} }
return bRet; return bRet;
} }
bool RecentDocsView::isUnfilteredFile(const OUString &rURL) const bool RecentDocsView::isAcceptedFile(const OUString &rURL) const
{ {
INetURLObject aUrl(rURL); INetURLObject aUrl(rURL);
return isFilteredExtension(mFilter, aUrl.getExtension()); OUString aExt = aUrl.getExtension();
return (mnFileTypes & TYPE_WRITER && typeMatchesExtension(TYPE_WRITER, aExt)) ||
(mnFileTypes & TYPE_CALC && typeMatchesExtension(TYPE_CALC, aExt)) ||
(mnFileTypes & TYPE_IMPRESS && typeMatchesExtension(TYPE_IMPRESS, aExt)) ||
(mnFileTypes & TYPE_DRAW && typeMatchesExtension(TYPE_DRAW, aExt)) ||
(mnFileTypes & TYPE_DATABASE && typeMatchesExtension(TYPE_DATABASE,aExt)) ||
(mnFileTypes & TYPE_MATH && typeMatchesExtension(TYPE_MATH, aExt)) ||
(mnFileTypes & TYPE_OTHER && typeMatchesExtension(TYPE_OTHER, aExt));
} }
BitmapEx RecentDocsView::getDefaultThumbnail(const OUString &rURL) BitmapEx RecentDocsView::getDefaultThumbnail(const OUString &rURL)
...@@ -106,17 +118,17 @@ BitmapEx RecentDocsView::getDefaultThumbnail(const OUString &rURL) ...@@ -106,17 +118,17 @@ BitmapEx RecentDocsView::getDefaultThumbnail(const OUString &rURL)
INetURLObject aUrl(rURL); INetURLObject aUrl(rURL);
OUString aExt = aUrl.getExtension(); OUString aExt = aUrl.getExtension();
if ( isFilteredExtension( FILTER_WRITER, aExt) ) if ( typeMatchesExtension( TYPE_WRITER, aExt) )
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_TEXT ) ); aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_TEXT ) );
else if ( isFilteredExtension( FILTER_CALC, aExt) ) else if ( typeMatchesExtension( TYPE_CALC, aExt) )
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_SHEET ) ); aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_SHEET ) );
else if ( isFilteredExtension( FILTER_IMPRESS, aExt) ) else if ( typeMatchesExtension( TYPE_IMPRESS, aExt) )
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_PRESENTATION ) ); aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_PRESENTATION ) );
else if ( isFilteredExtension( FILTER_DRAW, aExt) ) else if ( typeMatchesExtension( TYPE_DRAW, aExt) )
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_DRAWING ) ); aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_DRAWING ) );
else if ( isFilteredExtension( FILTER_DATABASE, aExt) ) else if ( typeMatchesExtension( TYPE_DATABASE, aExt) )
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_DATABASE ) ); aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_DATABASE ) );
else if ( isFilteredExtension( FILTER_MATH, aExt) ) else if ( typeMatchesExtension( TYPE_MATH, aExt) )
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_MATH ) ); aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_MATH ) );
else else
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_DEFAULT ) ); aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_DEFAULT ) );
...@@ -153,7 +165,7 @@ void RecentDocsView::loadRecentDocs() ...@@ -153,7 +165,7 @@ void RecentDocsView::loadRecentDocs()
a >>= aTitle; a >>= aTitle;
} }
if( isUnfilteredFile(aURL) ) if( isAcceptedFile(aURL) )
{ {
insertItem(aURL, aTitle); insertItem(aURL, aTitle);
} }
...@@ -221,11 +233,6 @@ long RecentDocsView::GetThumbnailSize() const ...@@ -221,11 +233,6 @@ long RecentDocsView::GetThumbnailSize() const
return mnItemMaxSize; return mnItemMaxSize;
} }
void RecentDocsView::SetFilter(APPLICATION_FILTER filter)
{
mFilter = filter;
}
IMPL_STATIC_LINK_NOINSTANCE( RecentDocsView, ExecuteHdl_Impl, LoadRecentFile*, pLoadRecentFile ) IMPL_STATIC_LINK_NOINSTANCE( RecentDocsView, ExecuteHdl_Impl, LoadRecentFile*, pLoadRecentFile )
{ {
try try
......
...@@ -93,12 +93,14 @@ BackingWindow::BackingWindow( Window* i_pParent ) : ...@@ -93,12 +93,14 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
get( mpDatabaseRecentThumbnails, "database_recent"); get( mpDatabaseRecentThumbnails, "database_recent");
get( mpMathRecentThumbnails, "math_recent"); get( mpMathRecentThumbnails, "math_recent");
mpWriterRecentThumbnails ->SetFilter(FILTER_WRITER); mpAllRecentThumbnails ->addFileType(TYPE_WRITER | TYPE_CALC |
mpCalcRecentThumbnails ->SetFilter(FILTER_CALC); TYPE_IMPRESS | TYPE_DRAW | TYPE_DATABASE | TYPE_MATH | TYPE_OTHER);
mpImpressRecentThumbnails ->SetFilter(FILTER_IMPRESS); mpWriterRecentThumbnails ->addFileType(TYPE_WRITER);
mpDrawRecentThumbnails ->SetFilter(FILTER_DRAW); mpCalcRecentThumbnails ->addFileType(TYPE_CALC);
mpDatabaseRecentThumbnails ->SetFilter(FILTER_DATABASE); mpImpressRecentThumbnails ->addFileType(TYPE_IMPRESS);
mpMathRecentThumbnails ->SetFilter(FILTER_MATH); mpDrawRecentThumbnails ->addFileType(TYPE_DRAW);
mpDatabaseRecentThumbnails ->addFileType(TYPE_DATABASE);
mpMathRecentThumbnails ->addFileType(TYPE_MATH);
mpAllRecentThumbnails ->loadRecentDocs(); mpAllRecentThumbnails ->loadRecentDocs();
mpWriterRecentThumbnails ->loadRecentDocs(); mpWriterRecentThumbnails ->loadRecentDocs();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment