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

Я пишу приложение для создания файлового обозревателя из ФС устройства 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, и основные окна через метод дерева будут использовать этот список / модель для отображения данных.

0 ответов

Другие вопросы по тегам