You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
krecipes/krecipes/src/widgets/dblistviewbase.h

90 lines
2.7 KiB

/***************************************************************************
* Copyright (C) 2005 by *
* Jason Kivlighn (jkivlighn@gmail.com) *
* *
* 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 <tdelistview.h>
#define PREVLISTITEM_RTTI 1002
#define NEXTLISTITEM_RTTI 1003
class KProgressDialog;
class RecipeDB;
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 TDEListView
{
TQ_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){TDEListView::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(){TDEListView::clear();}
int total;
bool bulk_load;
TQMap<TQListViewItem*,TQListViewItem*> lastElementMap;
TQListViewItem *delete_me_later;
KProgressDialog *m_progress;
int m_totalSteps;
};
#endif //LISTVIEWHANDLER_H