Ticket #7991: DriveSetup-SizeTextControl-20110918.diff

File DriveSetup-SizeTextControl-20110918.diff, 3.5 KB (added by jwlh172, 13 years ago)
  • Support.cpp

     
    9999    BSlider(name, label, message, minValue, maxValue,
    100100    B_HORIZONTAL, B_TRIANGLE_THUMB),
    101101    fStartOffset(minValue),
    102     fEndOffset(maxValue)
     102    fEndOffset(maxValue),
     103    fMaxPartitionSize(maxValue)
    103104{
    104105    SetBarColor((rgb_color){ 0, 80, 255, 255 });
    105106    char minString[64];
     
    143144    // headed slider is implemented.
    144145    return fStartOffset;
    145146}
     147
     148int32
     149SizeSlider::MaxPartitionSize()
     150{
     151    return fMaxPartitionSize;
     152}
  • Support.h

     
    5151    virtual const char*         UpdateText() const;
    5252            int32               Size();
    5353            int32               Offset();
     54            int32               MaxPartitionSize();
    5455
    5556private:
    5657            off_t               fStartOffset;
    5758            off_t               fEndOffset;
     59            off_t               fMaxPartitionSize;
    5860    mutable char                fStatusLabel[64];
    5961};
    6062
  • CreateParamsPanel.cpp

     
    7777enum {
    7878    MSG_OK                      = 'okok',
    7979    MSG_CANCEL                  = 'cncl',
    80     MSG_PARTITION_TYPE          = 'type'
     80    MSG_PARTITION_TYPE          = 'type',
     81    MSG_SIZE_SLIDER             = 'ssld',
     82    MSG_SIZE_TEXTCONTROL        = 'stct'
    8183};
    8284
    8385
     
    138140                fEditor->PartitionTypeChanged(type);
    139141            }
    140142            break;
     143       
     144        case MSG_SIZE_SLIDER:
     145        {
     146            BString sizeString;
     147            sizeString << fSizeSlider->Value();
     148            fSizeTextControl->SetText(sizeString.String());
     149            break;
     150        }
     151           
     152        case MSG_SIZE_TEXTCONTROL:
     153        {
     154            BString sizeString;
     155            sizeString = fSizeTextControl->Text();
     156            int32 sizeInt = atoi(sizeString.String());
     157            if (sizeInt >= 0 && sizeInt <= fSizeSlider->MaxPartitionSize())
     158                fSizeSlider->SetValue(sizeInt);
     159            else {
     160                int32 sizeTextControlLength = fSizeTextControl->TextView()->TextLength();
     161                fSizeTextControl->TextView()->Delete(sizeTextControlLength - 1, sizeTextControlLength);
     162            }
     163            break;
     164        }
    141165
    142166        default:
    143167            BWindow::MessageReceived(message);
     
    225249    fSizeSlider = new SizeSlider("Slider", B_TRANSLATE("Partition size"), NULL,
    226250        offset, offset + size);
    227251    fSizeSlider->SetPosition(1.0);
     252    fSizeSlider->SetModificationMessage(new BMessage(MSG_SIZE_SLIDER));
     253   
     254    BString sizeText;
     255    sizeText << fSizeSlider->Value();
     256    fSizeTextControl = new BTextControl("Size Control",
     257        "", sizeText.String(), NULL);
     258    for(int32 i = 0; i < 256; i++)
     259        fSizeTextControl->TextView()->DisallowChar(i);
     260    for(int32 i = '0'; i <= '9'; i++)
     261        fSizeTextControl->TextView()->AllowChar(i);
     262    fSizeTextControl->SetModificationMessage(new BMessage(MSG_SIZE_TEXTCONTROL));
    228263
    229264    fNameTextControl = new BTextControl("Name Control",
    230265        B_TRANSLATE("Partition name:"), "", NULL);
     
    257292
    258293    AddChild(BGroupLayoutBuilder(B_VERTICAL, spacing)
    259294        .Add(fSizeSlider)
     295        .Add(fSizeTextControl)
    260296        .Add(BGridLayoutBuilder(0.0, 5.0)
    261297            .Add(fNameTextControl->CreateLabelLayoutItem(), 0, 0)
    262298            .Add(fNameTextControl->CreateTextViewLayoutItem(), 1, 0)
  • CreateParamsPanel.h

     
    5050            BMenuField*         fTypeMenuField;
    5151            BTextControl*       fNameTextControl;
    5252            SizeSlider*         fSizeSlider;
     53            BTextControl*       fSizeTextControl;
    5354};
    5455
    5556#endif // CREATE_PARAMS_PANEL_H