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

View File

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