diff --git a/Source/GUI/Qt/GUI_Main_xxxx_EditMenu.cpp b/Source/GUI/Qt/GUI_Main_xxxx_EditMenu.cpp index aea53d5..598b1a6 100644 --- a/Source/GUI/Qt/GUI_Main_xxxx_EditMenu.cpp +++ b/Source/GUI/Qt/GUI_Main_xxxx_EditMenu.cpp @@ -64,7 +64,7 @@ void GUI_Main_xxxx_EditMenu::updateEditMenu( QList > forI //History data ZtringList History; History.Write(Ztring().From_UTF8(C->History(FileName, Field))); - //Data data + //Date data string Date; if (Field=="OriginationDate" || Field=="OriginationTime" || Field=="ICRD") { @@ -75,6 +75,27 @@ void GUI_Main_xxxx_EditMenu::updateEditMenu( QList > forI Date.clear(); } + //FileTitle data + string FileTitle; + string FileTitle32; + string FileTitle256; + if (Field=="OriginatorReference" || Field=="Description") + { + FileTitle=FileName; + #ifdef _WIN32 + size_t SeparatorPos=FileTitle.find_last_of('\\'); + #else + size_t SeparatorPos=FileTitle.find_last_of('/'); + #endif + if (SeparatorPos!=string::npos && SeparatorPos+132?FileTitle.erase(32):FileTitle; + else + FileTitle256=FileTitle.size()>256?FileTitle.erase(256):FileTitle; + } + //Copy if (!C->Get(FileName, Field).empty()) { @@ -115,6 +136,31 @@ void GUI_Main_xxxx_EditMenu::updateEditMenu( QList > forI connect(Action, SIGNAL(triggered(bool)), this, SLOT(onActionTriggered())); } + //Handling filename display + if (!FileTitle32.empty()) + { + string Text; + Text="&Set OriginatorReference to file name ("+FileTitle32+")"; + + QAction* Action=new QAction(QString::fromUtf8(Text.c_str())); + Action->setProperty("Action", "Name"); + Main->Menu_Edit->addAction(Action); + Main->Menu_Edit->addSeparator(); + connect(Action, SIGNAL(triggered(bool)), this, SLOT(onActionTriggered())); + } + + if (!FileTitle256.empty()) + { + string Text; + Text="&Set BEXT description to file name ("+FileTitle256+")"; + + QAction* Action=new QAction(QString::fromUtf8(Text.c_str())); + Action->setProperty("Action", "Name"); + Main->Menu_Edit->addAction(Action); + Main->Menu_Edit->addSeparator(); + connect(Action, SIGNAL(triggered(bool)), this, SLOT(onActionTriggered())); + } + //Handling date display if (!Date.empty()) { @@ -147,6 +193,8 @@ void GUI_Main_xxxx_EditMenu::updateEditMenu( QList > forI else if (Items.count()>1) { //Clear data + bool ShowOriginatorReference=true; + bool ShowBextDescription=true; bool ShowOriginationDate=true; bool ShowICRDDate=true; bool ShowClear=false; @@ -161,6 +209,12 @@ void GUI_Main_xxxx_EditMenu::updateEditMenu( QList > forI if (Field!="OriginationDate" && Field!="OriginationTime") ShowOriginationDate=false; + if (Field!="OriginatorReference") + ShowOriginatorReference=false; + + if (Field!="Description") + ShowBextDescription=false; + if (Field!="ICRD") ShowICRDDate=false; @@ -192,6 +246,25 @@ void GUI_Main_xxxx_EditMenu::updateEditMenu( QList > forI connect(Action, SIGNAL(triggered(bool)), this, SLOT(onActionTriggered())); } + //Handling originator reference display + if (ShowOriginatorReference) + { + QAction* Action=new QAction("Set OriginatorReference to files names"); + Action->setProperty("Action", "Name"); + Main->Menu_Edit->addSeparator(); + Main->Menu_Edit->addAction(Action); + connect(Action, SIGNAL(triggered(bool)), this, SLOT(onActionTriggered())); + } + + //Handling BEXT description display + if (ShowBextDescription) + { + QAction* Action=new QAction("Set BEXT description to files names"); + Action->setProperty("Action", "Name"); + Main->Menu_Edit->addAction(Action); + connect(Action, SIGNAL(triggered(bool)), this, SLOT(onActionTriggered())); + } + //Handling origination date display if (ShowOriginationDate) { @@ -274,6 +347,16 @@ void GUI_Main_xxxx_EditMenu::onActionTriggered() } Q_EMIT valuesChanged(false); } + else if (Action->property("Action")=="Name") + { + for (int Pos=0; PosSet(FileName, Field, "FILENAME"); + } + Q_EMIT valuesChanged(true); + } else if (Action->property("Action")=="Date") { for (int Pos=0; PosGlobal) + { + Value=BaseFileName(Chunks->Global->File_Name.To_UTF8()); + if (Field=="originatorreference" && Value.size()>32) + Value=Value.erase(32); + else if (Field=="description" && Value.size()>256) + Value=Value.erase(256); + } + else + Value=string(); + + if (Field=="originatorreference") + Chunks->Global->OriginatorReferenceFromFileName=true; + else + Chunks->Global->BextDescriptionFromFileName=true; + } + else + { + if (Field=="originatorreference" && Chunks->Global->OriginatorReferenceFromFileName && Value!=Get_Internal(Field)) + Chunks->Global->OriginatorReferenceFromFileName=false; + else if (Field=="description" && Chunks->Global->BextDescriptionFromFileName && Value!=Get_Internal(Field)) + Chunks->Global->BextDescriptionFromFileName=false; + } + } + // EBU ISRC recommandations, link aXML ISRC and INFO ISRC string FieldToFill, ValueToFill; if (Rules.EBU_ISRC_Rec) @@ -1990,6 +2038,12 @@ bool Riff_Handler::IsValid_Internal(const string &Field_, const string &Value_, //If error if (!Message.empty()) IsValid_Errors<<"malformed input, Description "<Global && Chunks->Global->BextDescriptionFromFileName) + { + if (Value.size()Global->File_Name.To_UTF8()).size()) + IsValid_Warnings<<"full file name does not fit in Description field"; + } } //Originator @@ -2078,6 +2132,12 @@ bool Riff_Handler::IsValid_Internal(const string &Field_, const string &Value_, //If error if (!Message.empty()) IsValid_Errors<<"malformed input, OriginatorReference "<Global && Chunks->Global->OriginatorReferenceFromFileName) + { + if (Value.size()Global->File_Name.To_UTF8()).size()) + IsValid_Warnings<<"full file name does not fit in OriginatorReference field"; + } } //OriginationDate