void GMImportTask::setID3v1Encoding() { if (options.id3v1_encoding!=GMFilename::ENCODING_8859_1) { const FXTextCodec * codec = ap_get_usercodec(options.id3v1_encoding); if (codec) { GMTag::setID3v1Encoding(codec); } } }
static FXbool updateTrackFilenames(GMTrackDatabase * db,FXIntList & tracks) { FXint i=0; FXint numchanges=0; FXString url; GMTrack trackinfo; FXStringList newurls; FXStringList oldurls; if (!GMPlayerManager::instance()->getPreferences().export_format_template.contains("%T")) { FXMessageBox::error(GMPlayerManager::instance()->getMainWindow(),MBOX_OK,fxtr("Invalid Template"),fxtr("The provided template is invalid. The track title %%T needs to be specified.\nPlease fix the filename template in the preference panel.")); return false; } const FXTextCodec * const codec = ap_get_usercodec(GMPlayerManager::instance()->getPreferences().export_encoding); FXuint options=0; if (GMPlayerManager::instance()->getPreferences().export_lowercase) options|=gm::TrackFormatter::LOWERCASE; if (GMPlayerManager::instance()->getPreferences().export_lowercase_extension) options|=gm::TrackFormatter::LOWERCASE_EXTENSION; if (GMPlayerManager::instance()->getPreferences().export_underscore) options|=gm::TrackFormatter::NOSPACE; gm::TrackFormatter trackformat(GMPlayerManager::instance()->getPreferences().export_format_template, codec, GMPlayerManager::instance()->getPreferences().export_character_filter, options); try { GMLockTransaction transaction(db); /// Create New Mrls. for (i=0;i<tracks.no();i++) { if (!db->getTrack(tracks[i],trackinfo)) { FXMessageBox::error(GMPlayerManager::instance()->getMainWindow(),MBOX_OK,fxtr("Database Error"),fxtr("Oops. Database Error")); return true; } url = trackformat.getPath(trackinfo); if (!url.empty() && url!=trackinfo.url) { newurls.append(url); oldurls.append(trackinfo.url); numchanges++; } else { newurls.append(FXString::null); oldurls.append(FXString::null); } } } catch(GMDatabaseException&) { FXMessageBox::error(GMPlayerManager::instance()->getMainWindow(),MBOX_OK,fxtr("Database Error"),fxtr("Failed to retrieve track filenames")); return false; } if (numchanges==0){ FXMessageBox::information(GMPlayerManager::instance()->getMainWindow(),MBOX_OK,fxtr("No changes"),fxtr("Filenames did not require any changes")); return false; } /// Ask For Permission FXDialogBox dialog(GMPlayerManager::instance()->getMainWindow(),fxtr("Rename Audio Files?"),DECOR_TITLE|DECOR_BORDER|DECOR_RESIZE|DECOR_CLOSE,0,0,600,400,0,0,0,0,0,0); GMPlayerManager::instance()->getMainWindow()->create_dialog_header(&dialog,fxtr("Renaming Audio Files…"),fxtr("The following audio files are going to be renamed")); FXHorizontalFrame *closebox=new FXHorizontalFrame(&dialog,LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,0,0,0,0); new GMButton(closebox,fxtr("&Rename"),nullptr,&dialog,FXDialogBox::ID_ACCEPT,BUTTON_INITIAL|BUTTON_DEFAULT|LAYOUT_RIGHT|FRAME_RAISED|FRAME_THICK,0,0,0,0, 15,15); new GMButton(closebox,fxtr("&Cancel"),nullptr,&dialog,FXDialogBox::ID_CANCEL,BUTTON_DEFAULT|LAYOUT_RIGHT|FRAME_RAISED|FRAME_THICK,0,0,0,0, 15,15); FXVerticalFrame * main = new FXVerticalFrame(&dialog,LAYOUT_FILL_X|LAYOUT_FILL_Y); GMScrollFrame * sunken = new GMScrollFrame(main); GMList * list = new GMList(sunken,nullptr,0,LAYOUT_FILL_X|LAYOUT_FILL_Y); for (i=0;i<tracks.no();i++) { if (!newurls[i].empty()) { if (codec && codec->mibEnum()!=106) { // Not UTF8 or Ascii // Translate back to UTF-8 list->appendItem(codec->mb2utf(newurls[i])); } else { list->appendItem(newurls[i]); } } } if (dialog.execute()) { GMRenameTask * task = new GMRenameTask(db,tracks,newurls,oldurls); GMPlayerManager::instance()->runTask(task); return true; } return false; }