1#include "DockFolderBrowser.h"
2#include "ui_DockFolderBrowser.h"
4#include "RabbitCommonDir.h"
6#include <QFileSystemModel>
11CDockFolderBrowser::CDockFolderBrowser(
const QString &title,
13 Qt::WindowFlags flags)
14 : QDockWidget(title, parent, flags),
16 m_pModel(new QFileSystemModel(this)),
19 QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
20 QSettings::IniFormat);
24 ui->treeView->setModel(m_pModel);
26 connect(ui->treeView, &QTreeView::doubleClicked,
27 this, [&](
const QModelIndex &index) {
29 emit sigDoubleClicked(m_pModel->filePath(index),
30 m_pModel->isDir(index));
40 setTitleBarWidget(pDockTitleBar);
43 QMenu* pMenu =
new QMenu(tr(
"Filter"), pDockTitleBar);
44 QPushButton* pFilter = pDockTitleBar->CreateSmallPushButton(
45 QIcon::fromTheme(
"filter"), pDockTitleBar);
46 pFilter->setToolTip(tr(
"Filter"));
47 pFilter->setMenu(pMenu);
48 QList<QWidget*> lstWidget;
55 uint filter = m_pModel->filter();
56 filter = set.value(
"FolderBrowser/Filters", filter).toUInt();
57 QDir::Filters f = QDir::Filters(filter);
58 m_pModel->setFilter(f);
61 szTitle = tr(
"Don't show hidden files");
63 szTitle = tr(
"Show hidden files");
65 pMenu->addAction(szTitle,
this, [&](){
66 QAction* p = qobject_cast<QAction*>(sender());
67 if(!(p && m_pModel))
return;
68 QDir::Filters f = m_pModel->filter();
71 p->setText(tr(
"Show hidden files"));
72 m_pModel->setFilter(f & (~QDir::Hidden));
74 p->setText(tr(
"Don't show hidden files"));
75 m_pModel->setFilter(f | QDir::Hidden);
80 m_bDetails = set.value(
"FolderBrowser/Details",
false).toBool();
82 szTitle = tr(
"Show brief");
83 ui->treeView->header()->showSection(1);
84 ui->treeView->header()->showSection(2);
85 ui->treeView->header()->showSection(3);
87 szTitle = tr(
"Show details");
88 ui->treeView->header()->hideSection(1);
89 ui->treeView->header()->hideSection(2);
90 ui->treeView->header()->hideSection(3);
92 pMenu->addAction(szTitle,
this, [&](){
93 QAction* p = qobject_cast<QAction*>(sender());
94 if(!(p && m_pModel))
return;
95 m_bDetails = !m_bDetails;
98 szTitle = tr(
"Show brief");
99 ui->treeView->header()->showSection(1);
100 ui->treeView->header()->showSection(2);
101 ui->treeView->header()->showSection(3);
103 szTitle = tr(
"Show details");
104 ui->treeView->header()->hideSection(1);
105 ui->treeView->header()->hideSection(2);
106 ui->treeView->header()->hideSection(3);
114CDockFolderBrowser::CDockFolderBrowser(QWidget *parent, Qt::WindowFlags flags) :
118CDockFolderBrowser::~CDockFolderBrowser()
120 QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
121 QSettings::IniFormat);
122 uint flitersFlag = m_pModel->filter();
123 set.setValue(
"FolderBrowser/Filters", flitersFlag);
124 set.setValue(
"FolderBrowser/Details", m_bDetails);
130 m_pModel->setRootPath(dir);
131 ui->treeView->setRootIndex(m_pModel->index(dir));
136 return m_pModel->rootPath();
void setRootPath(const QString dir)
Set root path.
QString rootPath() const
Get root path.
The cursom title bar for QWidget, QDockWidget etc.
int AddWidgets(QList< QWidget * > pLstWidget)
Add user-defined buttons.