예제 #1
0
// ---------------------------------------------------------
// CMsgHeader::SetAndGetSizeL
//
// Calculates and sets the size for the header and returns new size as reference
// aSize. If aInit == ETrue, sets also size for the controls by calling their
// SetAndGetSizeL functions.
// ---------------------------------------------------------
//
void CMsgHeader::SetAndGetSizeL( TSize& aSize, TBool aInit )
    {
    aSize = MsgEditorCommons::MsgHeaderPane().Size();

    TInt numberOfControls( iControls->Count() );
    iMargins.iTop = 0;
    iMargins.iBottom = numberOfControls ? MsgEditorCommons::MsgBaseLineDelta() : 
                                          0;
                                          
    TInt marginsDeltaHeight = iMargins.iTop + iMargins.iBottom;
    TInt marginsDeltaWidth = iMargins.iLeft + iMargins.iRight;
    TSize headerSize( aSize.iWidth, marginsDeltaHeight );
    TSize controlSize( 0, 0 );

    controlSize.iWidth = aSize.iWidth - marginsDeltaWidth;
    CMsgBaseControl* control = NULL;
    TInt minimumHeigth = marginsDeltaHeight;

    for ( TInt cc = 0; cc < numberOfControls; cc++ )
        {
        controlSize.iHeight = aSize.iHeight;
        control = (*iControls)[cc];

        if ( aInit )
            {
            control->SetAndGetSizeL( controlSize );
            }
        else
            {
            controlSize = control->Size();
            }

        headerSize.iHeight += control->DistanceFromComponentAbove() + controlSize.iHeight /* + 1 */;
        minimumHeigth += control->DistanceFromComponentAbove() + control->MinimumSize().iHeight /* + 1 */;

        //MEBLOGGER_WRITEF(_L("MEB: CMsgHeader::SetAndGetSizeL: headerSize.iHeight %d "), headerSize.iHeight);
        }

    if ( minimumHeigth < marginsDeltaHeight )
        // make top margin higher if there is no space for the icon
        {
        TInt additionalTopMargin = marginsDeltaHeight - minimumHeigth;
        headerSize.iHeight += additionalTopMargin;
        iMargins.iTop += additionalTopMargin;
        }

    SetSizeWithoutNotification( headerSize );
    aSize = headerSize;
    }
예제 #2
0
//-----------------------------------------------------------------------------------------------
// generates a description for driver file
//-----------------------------------------------------------------------------------------------
QString InjectionWell::description() const
{
    QString str("START WELL\n");
    str.append(" NAME " + name() + "\n");
    str.append(" TYPE I \n");
    str.append(" GROUP " + group() + "\n");
    str.append(" BHPLIMIT " + QString::number(bhpLimit()) + "\n");
    str.append(" BHPINJ ");
    if(bhpInj() == WellControl::QWAT) str.append("WATER\n");
    else if(bhpInj() == WellControl::QOIL) str.append("OIL\n");
    else if(bhpInj() == WellControl::QGAS) str.append("GAS\n");


    if(hasInstallTime())
    {
        str.append(" INSTALLTIME " + QString::number(installTime()->value()) + " " + QString::number(installTime()->max()) + " " + QString::number(installTime()->min()) + "\n");
    }

    if(hasCost())
    {
        str.append(" COST " + QString::number(cost()->constantCost()) + " " + QString::number(cost()->fractionCost()) + " " + QString::number(cost()->capacityCost()) + "\n");
    }

    if(numberOfConstantConnections() > 0)
    {
        str.append(" START CONNECTIONS\n");
        for(int i = 0; i < numberOfConnections(); ++i)
        {
            WellConnection *wc = constantConnection(i);
            if(wc->cell() >= 0) str.append("  " + QString::number(wc->cell()) + " " + QString::number(wc->wellIndex()) + "\n");
            else str.append("  " + QString::number(wc->i()) + " " +
                            QString::number(wc->j()) + " " +
                            QString::number(wc->k1()) + " " +
                            QString::number(wc->k2()) + " " +
                            QString::number(wc->wellIndex()) + "\n");

        }

        str.append(" END CONNECTIONS\n\n");

    }

    if(numberOfVariableConnections() > 0)
    {
        str.append(" START VARCONNECTIONS\n");

        for(int i = 0; i < numberOfVariableConnections(); ++i)
        {
            WellConnectionVariable *wcv = variableConnection(i);

            str.append("  " + QString::number(wcv->iVariable()->value()) + " " +
                       QString::number(wcv->iVariable()->max()) + " " +
                       QString::number(wcv->iVariable()->min()) + " " +
                       QString::number(wcv->jVariable()->value()) + " " +
                       QString::number(wcv->jVariable()->max()) + " " +
                       QString::number(wcv->jVariable()->min()) + " " +
                       QString::number(wcv->wellConnection()->k1()) + " " +
                       QString::number(wcv->wellConnection()->k2()) + " " +
                       QString::number(wcv->wellConnection()->wellIndex()) + "\n");
        }

        str.append(" END VARCONNECTIONS\n");
    }


    str.append(" START SCHEDULE\n");

    for(int i = 0; i < numberOfControls(); ++i) str.append(control(i)->description());

    str.append(" END SCHEDULE\n\n");

    str.append("END WELL\n\n");
    return str;

}