1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/***************************************************************************
* Copyright (C) 2005 by *
* Jason Kivlighn ([email protected]) *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#ifndef LISTVIEWHANDLER_H
#define LISTVIEWHANDLER_H
#include <ntqobject.h>
#include <ntqmap.h>
#include <klistview.h>
#define PREVLISTITEM_RTTI 1002
#define NEXTLISTITEM_RTTI 1003
class KProgressDialog;
class RecipeDB;
typedef enum ReloadFlags {
Load, /** Only performs the reload if the list hasn't already been loaded */
ReloadIfPopulated, /** Only performs the reload if the list has been loaded */
ForceReload /** Load/reload the list regardless of whether or not it's been loaded */
};
class DBListViewBase : public KListView
{
Q_OBJECT
public:
DBListViewBase( TQWidget *, RecipeDB *, int total );
~DBListViewBase();
void reload( ReloadFlags flag = Load );
signals:
void nextGroupLoaded();
void prevGroupLoaded();
protected:
/**
* Called when the list view is ready to be used, i.e., it has been loaded with data.
* Until the list view has been loaded, we can ignore all database signals regarding changes
* of data. Therefore, subclasses should connect to these signals during this call.
*/
virtual void init(){}
virtual void load(int limit, int offset) = 0;
virtual void keyPressEvent( TQKeyEvent *e );
bool handleElement( const TQString & );
virtual void createElement( TQListViewItem * );
void removeElement( TQListViewItem *, bool delete_item = true );
bool reloading(){ return bulk_load; }
void setSorting(int c){KListView::setSorting(c);} //don't do sorting, the database comes sorted from the database anyways
void setTotalItems(int);
RecipeDB *database;
int curr_limit;
int curr_offset;
protected slots:
void rename( TQListViewItem *, int c );
void slotDoubleClicked( TQListViewItem * );
private:
void activatePrev();
void activateNext();
//make this private because the data should always be synced with the database
void clear(){KListView::clear();}
int total;
bool bulk_load;
TQMap<TQListViewItem*,TQListViewItem*> lastElementMap;
TQListViewItem *delete_me_later;
KProgressDialog *m_progress;
int m_totalSteps;
};
#endif //LISTVIEWHANDLER_H
|