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/propertylistview.h

204 lines
4.5 KiB

/***************************************************************************
* Copyright (C) 2004 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 PROPERTYLISTVIEW_H
#define PROPERTYLISTVIEW_H
#include <tdelistview.h>
#include "datablocks/element.h"
#include "datablocks/ingredientproperty.h"
#include "datablocks/constraintlist.h"
class RecipeDB;
class TDEPopupMenu;
class PropertyCheckListItem : public TQCheckListItem
{
public:
PropertyCheckListItem( TQListView* klv, const IngredientProperty &property );
PropertyCheckListItem( TQListViewItem* it, const IngredientProperty &property );
~PropertyCheckListItem( void )
{}
virtual TQString text( int column ) const;
IngredientProperty property() const
{
return m_property;
}
protected:
IngredientProperty m_property;
};
class HidePropertyCheckListItem : public PropertyCheckListItem
{
public:
HidePropertyCheckListItem( TQListView* klv, const IngredientProperty &property, bool enable = false );
HidePropertyCheckListItem( TQListViewItem* it, const IngredientProperty &property, bool enable = false );
protected:
virtual void stateChange( bool on );
private:
bool m_holdSettings;
};
class ConstraintsListItem: public TQCheckListItem
{
public:
ConstraintsListItem( TQListView* klv, const IngredientProperty &pty ) : TQCheckListItem( klv, TQString::null, TQCheckListItem::CheckBox )
{
// Initialize the constraint data with the the property data
ctStored = new Constraint();
ctStored->id = pty.id;
ctStored->name = pty.name;
ctStored->perUnit = pty.perUnit;
ctStored->units = pty.units;
ctStored->max = 0;
ctStored->min = 0;
}
~ConstraintsListItem( void )
{
delete ctStored;
}
private:
Constraint *ctStored;
public:
void setConstraint( const Constraint &constraint )
{
delete ctStored;
ctStored = new Constraint( constraint );
setOn( ctStored->enabled );
}
double maxVal()
{
return ctStored->max;
}
double minVal()
{
return ctStored->min;
}
int propertyId()
{
return ctStored->id;
}
void setMax( double maxValue )
{
ctStored->max = maxValue;
setText( 3, TQString::number( maxValue ) );
}
void setMin( double minValue )
{
ctStored->min = minValue;
setText( 2, TQString::number( minValue ) );
}
virtual TQString text( int column ) const
{
switch ( column ) {
case 1:
return ( ctStored->name );
case 2:
return ( TQString::number( ctStored->min ) );
case 3:
return ( TQString::number( ctStored->max ) );
case 4:
return ( TQString::number( ctStored->id ) );
default:
return ( TQString::null );
}
}
};
class PropertyListView : public TDEListView
{
TQ_OBJECT
public:
PropertyListView( TQWidget *parent, RecipeDB * );
public slots:
void reload( void );
protected:
RecipeDB *database;
bool m_loading;
protected slots:
virtual void removeProperty( int id ) = 0;
virtual void createProperty( const IngredientProperty &property ) = 0;
};
class StdPropertyListView : public PropertyListView
{
TQ_OBJECT
public:
StdPropertyListView( TQWidget *parent, RecipeDB *, bool editable = false );
protected:
virtual void removeProperty( int id );
virtual void createProperty( const IngredientProperty &property );
private slots:
void showPopup( TDEListView *, TQListViewItem *, const TQPoint & );
void createNew();
void remove
();
void rename();
void modProperty( TQListViewItem* i );
void saveProperty( TQListViewItem* i );
private:
bool checkBounds( const TQString &name );
TDEPopupMenu *kpop;
};
class PropertyConstraintListView : public PropertyListView
{
public:
PropertyConstraintListView( TQWidget *parent, RecipeDB * );
protected:
virtual void removeProperty( int id );
virtual void createProperty( const IngredientProperty &property );
};
class CheckPropertyListView : public StdPropertyListView
{
TQ_OBJECT
public:
CheckPropertyListView( TQWidget *parent, RecipeDB *, bool editable = false );
protected:
virtual void createProperty( const IngredientProperty &property );
private:
bool checkBounds( const TQString &name );
};
#endif //PROPERTYLISTVIEW_H