summaryrefslogtreecommitdiffstats
path: root/smtreeview.cpp
blob: 411857a6de0d6a9fe5c23ae63a1a32507c80118a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version
  2 of the License, or (at your option) any later version.
*/

#include <QSettings>
#include <QHeaderView>
#include <QAction>
#include <QActionGroup>

#include "smtreeview.h"

SmTreeView::SmTreeView(const QString &hSetting, QWidget *parent) : QTreeView(parent), mHeaderSetting(hSetting){
    header()->setSectionResizeMode(QHeaderView::ResizeToContents);
}

#include <QDebug>

void SmTreeView::readHeaderConfig(){
    QSettings s;
    QByteArray headerPos = s.value(mHeaderSetting).toByteArray();
    if(!headerPos.isEmpty()){
        header()->restoreState(headerPos);
    }
    QHeaderView *hv = header();
    QHash<int, QAction*> headerActions;
    foreach(QAction *a, mHeaderGroup->actions()){
        headerActions.insert(a->data().toInt(), a);
    }
    for(int i = 0; i < hv->count(); ++i){
        if(!hv->isSectionHidden(i)){
            qDebug() << mHeaderSetting << headerActions.value(i) << "checked" << headerActions.value(i)->isCheckable();
            headerActions.value(i)->setChecked(true);
        }
    }
}

void SmTreeView::writeHeaderConfig(){
    QSettings s;
    s.setValue(mHeaderSetting, header()->saveState());
}

void SmTreeView::toggleHeader(QObject *action){
    QAction *a = qobject_cast<QAction*>(action);
    int logicalIndex = a->data().toInt();
    QHeaderView *hv = header();
    hv->setSectionHidden(logicalIndex, !a->isChecked());
    qDebug() << mHeaderSetting << a->text() << "toggled" << a->isChecked();
}