4#include "DockFolderBrowser.h"
5#include "ui_DockFolderBrowser.h"
7#include "RabbitCommonDir.h"
9#include <QFileSystemModel>
13#include <QLoggingCategory>
15static Q_LOGGING_CATEGORY(log,
"RabbitCommon.DockFolderBrowser")
19 Qt::WindowFlags flags)
20 : QDockWidget(title, parent, flags),
22 m_pModel(new QFileSystemModel(this)),
25 QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
26 QSettings::IniFormat);
30 ui->treeView->setModel(m_pModel);
32 connect(ui->treeView, &QTreeView::doubleClicked,
33 this, [&](
const QModelIndex &index) {
35 emit sigDoubleClicked(m_pModel->filePath(index),
36 m_pModel->isDir(index));
46 setTitleBarWidget(pDockTitleBar);
49 QMenu* pMenu =
new QMenu(tr(
"Filter"), pDockTitleBar);
50 QPushButton* pFilter = pDockTitleBar->CreateSmallPushButton(
51 QIcon::fromTheme(
"filter"), pDockTitleBar);
52 pFilter->setToolTip(tr(
"Filter"));
53 pFilter->setMenu(pMenu);
54 QList<QWidget*> lstWidget;
61 uint filter = m_pModel->filter();
62 filter = set.value(
"FolderBrowser/Filters", filter).toUInt();
63 QDir::Filters f = QDir::Filters(filter);
64 m_pModel->setFilter(f);
67 szTitle = tr(
"Don't show hidden files");
69 szTitle = tr(
"Show hidden files");
71 pMenu->addAction(szTitle,
this, [&](){
72 QAction* p = qobject_cast<QAction*>(sender());
73 if(!(p && m_pModel))
return;
74 QDir::Filters f = m_pModel->filter();
77 p->setText(tr(
"Show hidden files"));
78 m_pModel->setFilter(f & (~QDir::Hidden));
80 p->setText(tr(
"Don't show hidden files"));
81 m_pModel->setFilter(f | QDir::Hidden);
86 m_bDetails = set.value(
"FolderBrowser/Details",
false).toBool();
88 szTitle = tr(
"Show brief");
89 ui->treeView->header()->showSection(1);
90 ui->treeView->header()->showSection(2);
91 ui->treeView->header()->showSection(3);
93 szTitle = tr(
"Show details");
94 ui->treeView->header()->hideSection(1);
95 ui->treeView->header()->hideSection(2);
96 ui->treeView->header()->hideSection(3);
98 pMenu->addAction(szTitle,
this, [&](){
99 QAction* p = qobject_cast<QAction*>(sender());
100 if(!(p && m_pModel))
return;
101 m_bDetails = !m_bDetails;
104 szTitle = tr(
"Show brief");
105 ui->treeView->header()->showSection(1);
106 ui->treeView->header()->showSection(2);
107 ui->treeView->header()->showSection(3);
109 szTitle = tr(
"Show details");
110 ui->treeView->header()->hideSection(1);
111 ui->treeView->header()->hideSection(2);
112 ui->treeView->header()->hideSection(3);
120CDockFolderBrowser::CDockFolderBrowser(QWidget *parent, Qt::WindowFlags flags) :
124CDockFolderBrowser::~CDockFolderBrowser()
126 qDebug(log) <<
"CDockFolderBrowser::~CDockFolderBrowser()";
127 QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
128 QSettings::IniFormat);
129 uint flitersFlag = m_pModel->filter();
130 set.setValue(
"FolderBrowser/Filters", flitersFlag);
131 set.setValue(
"FolderBrowser/Details", m_bDetails);
137 m_pModel->setRootPath(dir);
138 ui->treeView->setRootIndex(m_pModel->index(dir));
143 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.