void ResView::UpdateRow(BRow *row) { TypeCodeField *typeField = (TypeCodeField*) row->GetField(1); ResourceData *resData = typeField->GetResourceData(); BStringField *strField = (BStringField *)row->GetField(0); if (strcmp("(attr)", strField->String()) != 0) strField->SetString(resData->GetIDString()); strField = (BStringField *)row->GetField(2); if (strField) strField->SetString(resData->GetName()); PreviewField *preField = (PreviewField*)row->GetField(3); if (preField) preField->SetData(resData->GetData(), resData->GetLength()); BSizeField *sizeField = (BSizeField*)row->GetField(4); if (sizeField) sizeField->SetSize(resData->GetLength()); }
void ResView::SaveFile(void) { if (fSaveStatus == FILE_CLEAN || !fRef) return; BFile file(fRef,B_READ_WRITE); BResources res(&file,true); file.Unset(); for (int32 i = 0; i < fListView->CountRows(); i++) { ResDataRow *row = (ResDataRow*)fListView->RowAt(i); ResourceData *data = row->GetData(); res.AddResource(data->GetType(), data->GetID(), data->GetData(), data->GetLength(), data->GetName()); } res.Sync(); if (fSaveStatus == FILE_QUIT_AFTER_SAVE && Window()) Window()->PostMessage(B_QUIT_REQUESTED); SetSaveStatus(FILE_CLEAN); }