void CMIPSTags::Unserialize(const char* sPath) { try { Framework::CStdStream Stream(fopen(sPath, "rb")); RemoveTags(); uint32 nCount = Stream.Read32(); for(uint32 i = 0; i < nCount; i++) { char sTag[256]; uint32 nKey = Stream.Read32(); uint8 nLength = Stream.Read8(); Stream.Read(sTag, nLength); sTag[nLength] = 0; InsertTag(nKey, sTag); } } catch(...) { } }
OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget* parent) : QDialog(parent), ui_(new Ui_OrganiseDialog), task_manager_(task_manager), total_size_(0), resized_by_user_(false) { ui_->setupUi(this); connect(ui_->button_box->button(QDialogButtonBox::Reset), SIGNAL(clicked()), SLOT(Reset())); ui_->aftercopying->setItemIcon(1, IconLoader::Load("edit-delete")); // Valid tags QMap<QString, QString> tags; tags[tr("Title")] = "title"; tags[tr("Album")] = "album"; tags[tr("Artist")] = "artist"; tags[tr("Artist's initial")] = "artistinitial"; tags[tr("Album artist")] = "albumartist"; tags[tr("Composer")] = "composer"; tags[tr("Performer")] = "performer"; tags[tr("Grouping")] = "grouping"; tags[tr("Lyrics")] = "lyrics"; tags[tr("Track")] = "track"; tags[tr("Disc")] = "disc"; tags[tr("BPM")] = "bpm"; tags[tr("Year")] = "year"; tags[tr("Genre")] = "genre"; tags[tr("Comment")] = "comment"; tags[tr("Length")] = "length"; tags[tr("Bitrate", "Refers to bitrate in file organise dialog.")] = "bitrate"; tags[tr("Samplerate")] = "samplerate"; tags[tr("File extension")] = "extension"; // Naming scheme input field new OrganiseFormat::SyntaxHighlighter(ui_->naming); connect(ui_->destination, SIGNAL(currentIndexChanged(int)), SLOT(UpdatePreviews())); connect(ui_->naming, SIGNAL(textChanged()), SLOT(UpdatePreviews())); connect(ui_->replace_ascii, SIGNAL(toggled(bool)), SLOT(UpdatePreviews())); connect(ui_->replace_the, SIGNAL(toggled(bool)), SLOT(UpdatePreviews())); connect(ui_->replace_spaces, SIGNAL(toggled(bool)), SLOT(UpdatePreviews())); // Get the titles of the tags to put in the insert menu QStringList tag_titles = tags.keys(); qStableSort(tag_titles); // Build the insert menu QMenu* tag_menu = new QMenu(this); QSignalMapper* tag_mapper = new QSignalMapper(this); for (const QString& title : tag_titles) { QAction* action = tag_menu->addAction(title, tag_mapper, SLOT(map())); tag_mapper->setMapping(action, tags[title]); } connect(tag_mapper, SIGNAL(mapped(QString)), SLOT(InsertTag(QString))); ui_->insert->setMenu(tag_menu); }
void CMIPSTags::Unserialize(Framework::Xml::CNode* parentNode) { for(Framework::Xml::CFilteringNodeIterator nodeIterator(parentNode, TAG_ELEMENT_NAME); !nodeIterator.IsEnd(); nodeIterator++) { auto node = *nodeIterator; auto addressText = node->GetAttribute(TAG_ELEMENT_ATTRIBUTE_ADDRESS); auto valueText = node->GetAttribute(TAG_ELEMENT_ATTRIBUTE_VALUE); if(!addressText || !valueText) continue; uint32 address = lexical_cast_hex<std::string>(addressText); InsertTag(address, valueText); } }
void PopulateTags(HTREEITEM htiRoot, TCHAR *szActiveTag) { LIST<TCHAR> tagSet(5, _tcscmp); for (int i = 0; i < m_proto->m_notes.getCount(); i++) { TCHAR *tags = m_proto->m_notes[i].GetTags(); for (TCHAR *tag = tags; tag && *tag; tag = tag + lstrlen(tag) + 1) if (!tagSet.find(tag)) tagSet.insert(tag); } bool selected = false; for (int j = 0; j < tagSet.getCount(); ++j) { bool select = !lstrcmp(szActiveTag, tagSet[j]); selected |= select; InsertTag(htiRoot, tagSet[j], select); } if (!selected) m_tvFilter.SelectItem(htiRoot); }