ProjectWindow::ProjectWindow(BRect frame,int WindowType, BMessage *msg) : BWindow(frame, "Lava", B_TITLED_WINDOW,B_NOT_RESIZABLE | B_NOT_ZOOMABLE, 0) { fobjLogging = new Logging(); fobjLogging->WriteAsAttribute(); fobjLogging->setLogfileDirectory(B_USER_SETTINGS_DIRECTORY); fobjLogging->setLogfileName("Lava"); float kX = frame.Width() - frame.Width(); float kY = frame.Height() - frame.Height(); float kW = frame.Width(); float kH = frame.Height(); frame.Set(kX, kY, kW, kH); const rgb_color kRGB1 = {255, 255, 255, 255}; const rgb_color kRGB2 = {195, 195, 195, 255}; FileAccess objFileAccess; switch (WindowType) { case 0: { // ProjectWindow _unarchivProjectFromAddon(msg); //MainView fMainView = new BView(frame, "", B_FOLLOW_ALL, B_WILL_DRAW); fMainView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); //ColumnView fColumnView = new BColumnListView(BRect(kX + 10, kY + 10, kW - 10, kH - 53), "", B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE, B_PLAIN_BORDER, true); fColumnView->SetColor(B_COLOR_BACKGROUND, kRGB1); fColumnView->SetColor(B_COLOR_ROW_DIVIDER, kRGB1); fColumnView->SetColor(B_COLOR_SELECTION, kRGB2); fColumnView->SetSelectionMode(B_SINGLE_SELECTION_LIST); fStatusView = new BView(Bounds(), "", B_FOLLOW_ALL, B_WILL_DRAW); fStatusView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); fStatusStringView = new BStringView(BRect(0, 0, 152, 15), "size", "Size:"); fStatusView->AddChild(fStatusStringView); fColumnView->AddStatusView(fStatusView); fIconColumnName = new BBitmapColumn("", (float)20, (float)20, (float)20, B_ALIGN_CENTER); fStringColumnName = new BStringColumn("name", 200 - 20, 30, 400, 0, B_ALIGN_LEFT); fSizeColumnSize = new BSizeColumn("size", 92 - 25, 30, 92, B_ALIGN_LEFT); fColumnView->AddColumn(fIconColumnName, 0); fColumnView->AddColumn(fStringColumnName, 1); fColumnView->AddColumn(fSizeColumnSize, 2); AddChild(fColumnView); //MenuBox fMenuType = new BMenu("Select"); //Dummy fMenuType->SetLabelFromMarked(true); fMenuFieldTypeItem = new BMenuField(BRect(10, kY + kH - 35, 250, kH - 15), "projecttype", "Type: ", fMenuType); fMenuFieldTypeItem->SetDivider(be_plain_font->StringWidth("Type: ")); fMenuItemDataCD = new BMenuItem("Data CD", new BMessage('dcd'), 0, 0); fMenuItemAudioCD = new BMenuItem("Audio CD", new BMessage('acd'), 0, 0); fMenuItemDataDVD= new BMenuItem("Data DVD", new BMessage('ddvd'), 0, 0); fMenuItemAudioDVD = new BMenuItem("Audio DVD", new BMessage('advd'), 0, 0); fMainView->AddChild(fMenuFieldTypeItem); int32 DiscType; msg->FindInt32("type", &DiscType); switch(DiscType) { case DATACD: { fMenuType->AddItem(fMenuItemDataCD); //fMenuType->AddItem(fMenuItemAudioCD); fMenuItemDataCD->SetMarked(true); break; } case AUDIOCD: { fMenuType->AddItem(fMenuItemDataCD); fMenuType->AddItem(fMenuItemAudioCD); fMenuItemAudioCD->SetMarked(true); break; } case DATADVD: { fMenuType->AddItem(fMenuItemDataDVD); //fMenuType->AddItem(fMenuItemAudioDVD); fMenuItemDataDVD->SetMarked(true); break; } case AUDIODVD: { fMenuType->AddItem(fMenuItemDataDVD); fMenuType->AddItem(fMenuItemAudioDVD); fMenuItemAudioDVD->SetMarked(true); break; } default: /*fMenuType->AddItem(fMenuItemDataCD); fMenuType->AddItem(fMenuItemAudioCD); fMenuType->AddItem(fMenuItemDataDVD); fMenuType->AddItem(fMenuItemAudioDVD);*/ break; } //BurnButton fBurnButton = new BButton(BRect(kX + kW - 100, kY + kH - 35, kW - 10, kH - 15), "BurnProject", "Burn", new BMessage('burn') , B_FOLLOW_ALL, B_WILL_DRAW); fMainView->AddChild(fBurnButton); //Selectec Files, initalisiert in Lava.cpp for(int refs = 0; msg->FindRef("refs", refs, &fFile_ref) == B_NO_ERROR; refs++) { fEntry.SetTo(&fFile_ref); fEntry.GetPath(&fPath); fEntry.GetName(fName); msg->FindInt64(fPath.Path(), &fItemSize); fRow = new BRow(20.0); BBitmap* BIcon; BIcon = objFileAccess.getIconOfFile(fPath.Path()); fIconField = new BBitmapField(BIcon); fRow->SetField(fIconField, 0); fStringField = new BStringField(fName); fRow->SetField(fStringField, 1); fSizeField = new BSizeField(fItemSize); fRow->SetField(fSizeField, 2); fColumnView->AddRow(fRow, (int32)refs); //fColumnView->SetSortColumn(fStringColumnName,true, true); //sort by name fColumnView->SetSortColumn(fSizeColumnSize, true, false); //sort by size } fFileSizeString = new BString(); msg->FindInt64("size", &fFullItemsSize); if(fFullItemsSize > 1048576) { fFullItemsSize = ((fFullItemsSize / 1024) / 1024); //Umrechnung in MB *fFileSizeString <<fColumnView->CountRows(0) <<" Items / " <<(int64)fFullItemsSize <<" " <<"MB"; } else { if(fFullItemsSize > 1024) { fFullItemsSize = fFullItemsSize/1024; *fFileSizeString <<fColumnView->CountRows(0) <<" Items / "<<(int64)fFullItemsSize <<" " <<"KB"; } else { *fFileSizeString <<fColumnView->CountRows(0) <<" Items / "<<(int64)fFullItemsSize <<" " <<"bytes"; } } fStatusStringView->SetText(fFileSizeString->String()); Lock(); AddChild(fMainView); Unlock(); break; } case 1: { // } } }