Beispiel #1
0
QStandardItemModel* Importer::ImportData()
{
    QString current_path = QDir::currentPath() +  "//" + datafilename();
    QFile file(QDir::toNativeSeparators(current_path));
    if(!file.open(QIODevice::ReadOnly)) {
        QMessageBox::information(0, tr("Ошибка"), file.errorString());
        qDebug() << "Error in open file: " + file.errorString();
    }

    QTextStream in(&file);
    in.setCodec(QTextCodec::codecForName("IBM 866"));

    QString line = in.readLine();
    QStringList fields = line.split(separator());

    QStandardItemModel *model = new QStandardItemModel(0, fields.count()+1);
    model->setHorizontalHeaderLabels(fields);

    // Заменяем заголовки столбцов
    for (int i = 0; i < model->columnCount() - 1; i++)
    {
        QStandardItem *item = model->horizontalHeaderItem(i);
        QString item_text = item->text();

        if (item_text.compare(tr("ФИОТБН")) == 0) {
            item->setText(tr("Отправитель"));
        } else if (item_text.compare(tr("Кому")) == 0) {
            item->setText(tr("Получатель"));
        }
    }
    int last_col_idx = model->columnCount() - 1;
    model->setHorizontalHeaderItem(last_col_idx, new QStandardItem(tr("Состояние")));

    model->horizontalHeaderItem(last_col_idx)->setText(tr("Состояние"));

//    model->setHorizontalHeaderItem(0, new QStandardItem(tr("ТБН")));
//    model->setHorizontalHeaderItem(1, new QStandardItem(tr("Отправитель")));
//    model->setHorizontalHeaderItem(4, new QStandardItem(tr("Получатель")));
//    model->setHorizontalHeaderItem(12, new QStandardItem(tr("Состояние")));

    while(!in.atEnd())
    {
        QString line = in.readLine();
        QStringList fields = line.split(separator());

        QStringListIterator it(fields);
        QList<QStandardItem *> data;
        while (it.hasNext())
        {
            data << new QStandardItem(it.next());
        }

        model->appendRow(data);
    }

    file.close();

    return model;
}
void MainWindow::loadPlaylists()
{
    QTreeView *playlists = (QTreeView*)ui->tvPlaylists;

    QStandardItemModel *model = new QStandardItemModel(3,1);
    QStandardItem *item = new QStandardItem(QString(tr("Search")));
    item->setData(DATA_SEARCH, DATA_KEY_PLAYLIST);
    item->setEditable(false);
    model->setItem(0, 0, item);
    item = new QStandardItem(QString(tr("History")));
    item->setData(DATA_HISTORY, DATA_KEY_PLAYLIST);
    item->setEditable(false);
    model->setItem(1, 0, item);
    item = new QStandardItem(QString(tr("Playlists")));
    item->setData(DATA_EMPTY, DATA_KEY_PLAYLIST);
    item->setEditable(false);
    QList<Playlist> pls = dp->getPlaylists();
    int n = pls.count();
    for( int i=0; i<n; i++ )
    {
      QStandardItem *child = new QStandardItem(pls[i].title);
      child->setData(pls[i].id, DATA_KEY_PLAYLIST);
      child->setEditable(false);
      item->appendRow(child);
    }
    model->setItem(2, 0, item);
    model->setHorizontalHeaderItem( 0, new QStandardItem(tr("Library")));
    model->horizontalHeaderItem(0)->setEditable(false);
    model->horizontalHeaderItem(0)->setEnabled(false);

    playlists->setModel(model);
    playlists->setContextMenuPolicy(Qt::CustomContextMenu);

    QModelIndexList indexes = model->match(model->index(2,0), Qt::DisplayRole, "*", -1, Qt::MatchWildcard|Qt::MatchRecursive);
    playlists->expand(indexes[0]);

    connect(playlists->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(loadPlaylist()));
}