1/* 2 * Copyright 2013, Axel D��rfler, axeld@pinc-software.de. 3 * Copyright 2009-2010, Stephan A��mus <superstippi@gmx.de> 4 * Copyright 2009, Bryce Groff, brycegroff@gmail.com. 5 * Copyright 2019, Les De Ridder, les@lesderid.net 6 * 7 * Distributed under the terms of the MIT License. 8 */ 9 10 11#include <cstdio> 12 13#include "InitializeParameterEditor.h" 14 15#include <Button.h> 16#include <Catalog.h> 17#include <ControlLook.h> 18#include <GridLayoutBuilder.h> 19#include <Partition.h> 20#include <SpaceLayoutItem.h> 21#include <TextControl.h> 22#include <Variant.h> 23#include <View.h> 24#include <Window.h> 25 26#include "btrfs.h" 27 28 29#undef B_TRANSLATION_CONTEXT 30#define B_TRANSLATION_CONTEXT "BTRFS_Initialize_Parameter" 31 32 33static uint32 MSG_NAME_CHANGED = 'nmch'; 34 35 36InitializeBTRFSEditor::InitializeBTRFSEditor() 37 : 38 BPartitionParameterEditor(), 39 fView(NULL), 40 fNameControl(NULL), 41 fParameters(NULL) 42{ 43 _CreateViewControls(); 44} 45 46 47InitializeBTRFSEditor::~InitializeBTRFSEditor() 48{ 49} 50 51 52void 53InitializeBTRFSEditor::SetTo(BPartition* partition) 54{ 55 BString name = partition->Name(); 56 if (name.IsEmpty()) 57 name = partition->RawContentName(); 58 if (!name.IsEmpty()) 59 fNameControl->SetText(name.String()); 60} 61 62 63BView* 64InitializeBTRFSEditor::View() 65{ 66 return fView; 67} 68 69 70bool 71InitializeBTRFSEditor::ValidateParameters() const 72{ 73 // The name must be set 74 return fNameControl->TextView()->TextLength() > 0; 75} 76 77 78status_t 79InitializeBTRFSEditor::ParameterChanged(const char* name, 80 const BVariant& variant) 81{ 82 if (!strcmp(name, "name")) 83 fNameControl->SetText(variant.ToString()); 84 return B_OK; 85} 86 87 88status_t 89InitializeBTRFSEditor::GetParameters(BString& parameters) 90{ 91 parameters = "name \""; 92 parameters << fNameControl->Text() << "\";\n"; 93 return B_OK; 94} 95 96 97void 98InitializeBTRFSEditor::_CreateViewControls() 99{ 100 fNameControl = new BTextControl(B_TRANSLATE("Name:"), "New Btrfs Volume", 101 NULL); 102 fNameControl->SetModificationMessage(new BMessage(MSG_NAME_CHANGED)); 103 fNameControl->TextView()->SetMaxBytes(BTRFS_LABEL_SIZE); 104 105 // TODO(lesderid): Controls for block size, sector size, uuid, etc. 106 107 float spacing = be_control_look->DefaultItemSpacing(); 108 109 fView = BGridLayoutBuilder(spacing, spacing) 110 .Add(fNameControl->CreateLabelLayoutItem(), 0, 0) 111 .Add(fNameControl->CreateTextViewLayoutItem(), 1, 0).View() 112 ; 113} 114