Source Code (Use browser search to find items of interest.)

Class Index

kspread'AutoFillSequenceItem (./koffice/kspread/kspread_autofill.h:34)

class AutoFillSequenceItem
{
public:
    enum Type { INTEGER, FLOAT, STRING, DAY, MONTH, FORMULAR };
    
    AutoFillSequenceItem( int _i );
    AutoFillSequenceItem( double _d );
    AutoFillSequenceItem( const char *_str );

    bool getDelta( AutoFillSequenceItem *_seq, double &delta );

    QString getSuccessor( int _no, double _delta );

    Type getType() { return type; }
    int getIValue() { return ivalue; }
    double getDValue() { return dvalue; }
    const char* getString() { return string.data(); }
    
protected:
    int ivalue;
    double dvalue;
    QString string;
    
    Type type;

    static QStrList *month;
    static QStrList *day;
};


kspread'AutoFillSequenceItem::AutoFillSequenceItem() (./koffice/kspread/kspread_autofill.cc:105)

AutoFillSequenceItem::AutoFillSequenceItem( int _i )
{
    ivalue = _i;
    type = INTEGER;
}


kspread'AutoFillSequenceItem::AutoFillSequenceItem() (./koffice/kspread/kspread_autofill.cc:111)

AutoFillSequenceItem::AutoFillSequenceItem( double _d )
{
    dvalue = _d;
    type = FLOAT;
}


kspread'AutoFillSequenceItem::AutoFillSequenceItem() (./koffice/kspread/kspread_autofill.cc:117)

AutoFillSequenceItem::AutoFillSequenceItem( const char *_str )
{
    string = _str;
    type = STRING;

    if ( month == 0L )
    {
	month = new QStrList();
	month->append( i18n("January") );
	month->append( i18n("February") );
	month->append( i18n("March") );
	month->append( i18n("April") );
	month->append( i18n("May") );
	month->append( i18n("June") );
	month->append( i18n("July") );
	month->append( i18n("August") );
	month->append( i18n("September") );
	month->append( i18n("October") );
	month->append( i18n("November") );
	month->append( i18n("December") );
    }

    if ( day == 0L )
    {
	day = new QStrList();
	day->append( i18n("Monday") );
	day->append( i18n("Tuesday") );
	day->append( i18n("Wednesday") );
	day->append( i18n("Thursday") );
	day->append( i18n("Friday") );
	day->append( i18n("Saturday") );
	day->append( i18n("Sunday") );
    }

    if ( month->find( _str ) != -1 )
    {
	type = MONTH;
	return;
    }

    if ( day->find( _str ) != -1 )
    {
	type = DAY;
	return;
    }

    if ( string.data()[0] == '=' )
	type = FORMULAR;
}


kspread'AutoFillSequenceItem::getDelta() (./koffice/kspread/kspread_autofill.cc:167)

bool AutoFillSequenceItem::getDelta( AutoFillSequenceItem *seq, double &_delta )
{
    if ( seq->getType() != type )
	return FALSE;

    switch( type )
    {
    case INTEGER:
	_delta = (double)( seq->getIValue() - ivalue );
	return TRUE;
    case FLOAT:
	_delta = seq->getDValue() - dvalue;
	return TRUE;
    case FORMULAR:
    case STRING:
	if ( string == seq->getString() )
	{
	    _delta = 0.0;
	    return TRUE;
	}
	return FALSE;
    case MONTH:
	{
	    int i = month->find( string );
	    int j = month->find( seq->getString() );
	    int k = j;
	    if ( j < i )
		k += month->count();
	    if ( j + 1 == i )
		_delta = -1.0;
	    else
		_delta = ( double )( k - i );
	    return TRUE;
	}

    case DAY:
	{
	    int i = day->find( string );
	    int j = day->find( seq->getString() );
	    int k = j;
	    if ( j < i )
		k += day->count();
	    if ( j + 1 == i )
		_delta = -1.0;
	    else
		_delta = ( double )( k - i );
	    return TRUE;
	}
    default:
	return FALSE;
    }
}


kspread'AutoFillSequenceItem::getSuccessor() (./koffice/kspread/kspread_autofill.cc:220)

QString AutoFillSequenceItem::getSuccessor( int _no, double _delta )
{
    QString erg;

    switch( type )
    {
    case INTEGER:
	erg.sprintf("%i", ivalue + _no * (int)_delta );
	break;
    case FLOAT:
	erg.sprintf("%f", dvalue + (double)_no * _delta );
	break;
    case FORMULAR:
    case STRING:
	erg = string.data();
	break;
    case MONTH:
	{
	    int i = month->find( string );
	    int j = i + _no * (int) _delta;
	    int k = j % month->count();
	    erg = month->at( k );
	}
        break;
    case DAY:
	{
	    int i = day->find( string );
	    int j = i + _no * (int) _delta;
	    int k = j % day->count();
	    erg = day->at( k );
	}
    }

    return QString( erg.data() );
}

/**********************************************************************************
 *
 * AutoFillSequence
 *
 **********************************************************************************/