Qt GUI: ensure that new page size is taken into account ASAP (no need for restarting app)

This commit is contained in:
Jean-Francois Dockes 2010-02-02 08:20:35 +01:00
parent 5569b5be7c
commit 8409e6fcae
2 changed files with 32 additions and 20 deletions

View File

@ -179,6 +179,8 @@ void ResList::setDocSource()
m_sortspecs,
title));
}
// Reset the page size in case the preference was changed
m_pager->setPageSize(prefs.respagesize);
m_pager->setDocSource(m_docSource);
resultPageNext();
}
@ -382,6 +384,8 @@ void ResList::resultPageBack()
// Go to the first page
void ResList::resultPageFirst()
{
// In case the preference was changed
m_pager->setPageSize(prefs.respagesize);
m_pager->resultPageFirst();
displayPage();
}

View File

@ -15,18 +15,32 @@ class PlainToRich;
*/
class ResListPager {
public:
ResListPager(int pagesize=10) : m_pagesize(pagesize) {initall();}
ResListPager(int pagesize=10) :
m_pagesize(pagesize),
m_newpagesize(pagesize),
m_winfirst(-1),
m_hasNext(false),
m_hiliter(0)
{
}
virtual ~ResListPager() {}
void setHighLighter(PlainToRich *ptr) {m_hiliter = ptr;}
void setHighLighter(PlainToRich *ptr)
{
m_hiliter = ptr;
}
void setDocSource(RefCntr<DocSequence> src)
{
m_pagesize = m_newpagesize;
m_winfirst = -1;
m_hasNext = false;
m_respage.clear();
m_docSource = src;
m_respage.clear();
}
void setPageSize(int ps)
{
m_newpagesize = ps;
}
int pageNumber()
{
if (m_winfirst < 0 || m_pagesize <= 0)
@ -38,15 +52,16 @@ public:
bool hasNext() {return m_hasNext;}
bool hasPrev() {return m_winfirst > 0;}
bool atBot() {return m_winfirst <= 0;}
void resultPageFirst() {
m_winfirst = -1;
m_pagesize = m_newpagesize;
resultPageNext();
}
void resultPageBack() {
if (m_winfirst <= 0) return;
m_winfirst -= 2 * m_pagesize;
resultPageNext();
}
void resultPageFirst() {
m_winfirst = -1;
resultPageNext();
}
void resultPageNext();
void displayPage();
bool pageEmpty() {return m_respage.size() == 0;}
@ -70,23 +85,16 @@ public:
virtual void suggest(const vector<string>, vector<string>&sugg) {
sugg.clear();
}
private:
void initall()
{
m_winfirst = -1;
m_hasNext = false;
m_respage.clear();
m_hiliter = 0;
}
private:
int m_pagesize;
int m_newpagesize;
// First docnum (from docseq) in current page
int m_winfirst;
RefCntr<DocSequence> m_docSource;
const int m_pagesize;
bool m_hasNext;
vector<ResListEntry> m_respage;
PlainToRich *m_hiliter;
RefCntr<DocSequence> m_docSource;
vector<ResListEntry> m_respage;
};
#endif /* _reslistpager_h_included_ */