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
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > xDispatch;
};
enum APPLICATION_FILTER
enum ApplicationType
{
FILTER_NONE,
FILTER_WRITER,
FILTER_CALC,
FILTER_IMPRESS,
FILTER_DRAW,
FILTER_DATABASE,
FILTER_MATH,
TYPE_NONE = 0,
TYPE_WRITER = 1 << 0,
TYPE_CALC = 1 << 1,
TYPE_IMPRESS = 1 << 2,
TYPE_DRAW = 1 << 3,
TYPE_DATABASE = 1 << 4,
TYPE_MATH = 1 << 5,
TYPE_OTHER = 1 << 6
};
class SFX2_DLLPUBLIC RecentDocsView : protected ::comphelper::OBaseMutex,
public ThumbnailView
{
......@@ -47,19 +49,18 @@ public:
void SetThumbnailSize(long thumbnailSize);
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);
int mnFileTypes;
DECL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, LoadRecentFile* );
protected:
virtual void OnItemDblClicked(ThumbnailViewItem *pItem);
bool isUnfilteredFile(const OUString &rURL) const;
APPLICATION_FILTER mFilter;
bool isAcceptedFile(const OUString &rURL) const;
long mnItemMaxSize;
long mnTextHeight;
......
......@@ -41,6 +41,7 @@ static const char SFX_REFERER_USER[] = "private:user";
RecentDocsView::RecentDocsView( Window* pParent )
: ThumbnailView(pParent)
, mnFileTypes(TYPE_NONE)
, mnItemMaxSize(100)
, mnTextHeight(30)
, mnItemPadding(5)
......@@ -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" ||
rExt == "rtf" || rExt == "txt";
bRet = type & TYPE_WRITER;
}
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" ||
rExt == "pptx";
bRet = type & TYPE_IMPRESS;
}
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;
}
bool RecentDocsView::isUnfilteredFile(const OUString &rURL) const
bool RecentDocsView::isAcceptedFile(const OUString &rURL) const
{
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)
......@@ -106,17 +118,17 @@ BitmapEx RecentDocsView::getDefaultThumbnail(const OUString &rURL)
INetURLObject aUrl(rURL);
OUString aExt = aUrl.getExtension();
if ( isFilteredExtension( FILTER_WRITER, aExt) )
if ( typeMatchesExtension( TYPE_WRITER, aExt) )
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 ) );
else if ( isFilteredExtension( FILTER_IMPRESS, aExt) )
else if ( typeMatchesExtension( TYPE_IMPRESS, aExt) )
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 ) );
else if ( isFilteredExtension( FILTER_DATABASE, aExt) )
else if ( typeMatchesExtension( TYPE_DATABASE, aExt) )
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 ) );
else
aImg = BitmapEx ( SfxResId( SFX_FILE_THUMBNAIL_DEFAULT ) );
......@@ -153,7 +165,7 @@ void RecentDocsView::loadRecentDocs()
a >>= aTitle;
}
if( isUnfilteredFile(aURL) )
if( isAcceptedFile(aURL) )
{
insertItem(aURL, aTitle);
}
......@@ -221,11 +233,6 @@ long RecentDocsView::GetThumbnailSize() const
return mnItemMaxSize;
}
void RecentDocsView::SetFilter(APPLICATION_FILTER filter)
{
mFilter = filter;
}
IMPL_STATIC_LINK_NOINSTANCE( RecentDocsView, ExecuteHdl_Impl, LoadRecentFile*, pLoadRecentFile )
{
try
......
......@@ -93,12 +93,14 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
get( mpDatabaseRecentThumbnails, "database_recent");
get( mpMathRecentThumbnails, "math_recent");
mpWriterRecentThumbnails ->SetFilter(FILTER_WRITER);
mpCalcRecentThumbnails ->SetFilter(FILTER_CALC);
mpImpressRecentThumbnails ->SetFilter(FILTER_IMPRESS);
mpDrawRecentThumbnails ->SetFilter(FILTER_DRAW);
mpDatabaseRecentThumbnails ->SetFilter(FILTER_DATABASE);
mpMathRecentThumbnails ->SetFilter(FILTER_MATH);
mpAllRecentThumbnails ->addFileType(TYPE_WRITER | TYPE_CALC |
TYPE_IMPRESS | TYPE_DRAW | TYPE_DATABASE | TYPE_MATH | TYPE_OTHER);
mpWriterRecentThumbnails ->addFileType(TYPE_WRITER);
mpCalcRecentThumbnails ->addFileType(TYPE_CALC);
mpImpressRecentThumbnails ->addFileType(TYPE_IMPRESS);
mpDrawRecentThumbnails ->addFileType(TYPE_DRAW);
mpDatabaseRecentThumbnails ->addFileType(TYPE_DATABASE);
mpMathRecentThumbnails ->addFileType(TYPE_MATH);
mpAllRecentThumbnails ->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