Как правильно обрабатывать данные из стека MTP в Treewidget для отображения файла

Я пишу приложение для создания файлового браузера из FS устройства MTP. Я сделал первую версию, но думаю, что смогу сделать ее лучше.

В настоящее время у меня есть mtp_wrapper.cpp, который предоставляет класс mtp с другим методом для получения файлов, папок, удаления файлов …

Например, мой класс mainwindow содержит:

void MainWindow::DisplayTree(uint32_t index, uint32_t parent)
{
LIBMTP_file_t *files;
LIBMTP_file_t *file;

MyTree->clear();

//  files = m_device.GetFileAndFolder(index);
if(files == NULL)
return;

file = files;
while(file != NULL && file->parent_id == parent) {
LIBMTP_file_t *oldfile;

QTreeWidgetItem* item = new QTreeWidgetItem();
if(strcmp(file->filename,"Android") == 0)
item->setText(0,"AneedA");
else
item->setText(0,file->filename);

if (file->filetype == LIBMTP_FILETYPE_FOLDER) {
item->setText(1, "--");
item->setText(2, "--");
DisplaySubTree(item, file->item_id);
}
else {
const QDateTime dt = QDateTime::fromTime_t(file->modificationdate);
const QString textdate = dt.toString( Qt::TextDate );
item->setText(1,textdate);
item->setText(2, QString::number(file->filesize));
}
MyTree->addTopLevelItem(item);
oldfile = file;
file = file->next;
#if 0
m_device.DestroyFile(oldfile);
#endif
}
}

Первый вызов этого — использование (0,0) в качестве аргумента для отображения всего дерева. но я думаю, что это не достаточно умно. Метод DisplayTree должен вызывать только список, и нет необходимости вызывать mtp_api.

Я знаю, что у gtk есть какой-то метод для store_list, set_list и его повторного использования, но я сейчас нахожусь под Qt и C ++

Любая идея, я могу отключить главное окно от mtp? Лучше всего, чтобы список / модель был заполнен частью mtp. Я создал метод, используемый для сканирования устройства mtp, и основные окна через метод дерева будут использовать этот список / модель для отображения данных.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]