Copy buttonbar from DVItemView to separate class

This commit is contained in:
Konstantin Dmitriev 2020-08-16 19:41:54 +07:00 committed by manongjohn
parent 704028c105
commit 7c80cef474
2 changed files with 133 additions and 2 deletions

View file

@ -109,6 +109,118 @@ inline bool isMultipleFrameType(std::string type) {
type == "webm"); type == "webm");
} }
//=============================================================================
//
// SceneBrowserButtonBar
//
//-----------------------------------------------------------------------------
SceneBrowserButtonBar::SceneBrowserButtonBar(DvItemViewer *itemViewer,
QWidget *parent)
: QToolBar(parent) {
setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
setIconSize(QSize(17, 17));
setObjectName("buttonBar");
// buttonBar->setIconSize(QSize(10,10));
QString backButtonEnable = QString(":Resources/fb_history_back_enable.svg");
QString backButtonDisable = QString(":Resources/fb_history_back_disable.svg");
QString fwdButtonEnable = QString(":Resources/fb_history_fwd_enable.svg");
QString fwdButtonDisable = QString(":Resources/fb_history_fwd_disable.svg");
QIcon backButtonIcon, fwdButtonIcon;
backButtonIcon.addFile(backButtonEnable, QSize(), QIcon::Normal);
backButtonIcon.addFile(backButtonDisable, QSize(), QIcon::Disabled);
fwdButtonIcon.addFile(fwdButtonEnable, QSize(), QIcon::Normal);
fwdButtonIcon.addFile(fwdButtonDisable, QSize(), QIcon::Disabled);
m_folderBack = new QAction(backButtonIcon, tr("Back"), this);
m_folderBack->setIconText("");
addAction(m_folderBack);
m_folderFwd = new QAction(fwdButtonIcon, tr("Forward"), this);
m_folderFwd->setIconText("");
addAction(m_folderFwd);
QIcon folderUpIcon = createQIcon("folderup");
QAction *folderUp = new QAction(folderUpIcon, tr("Up One Level"), this);
folderUp->setIconText(tr("Up"));
addAction(folderUp);
addSeparator();
QIcon newFolderIcon = createQIcon("newfolder");
QAction *newFolder = new QAction(newFolderIcon, tr("New Folder"), this);
newFolder->setIconText(tr("New"));
addAction(newFolder);
addSeparator();
// QIcon tableViewIcon = createQIconOnOffPNG("viewtable");
// QAction* tableView = new QAction(tableViewIcon, tr("Table View"), this);
// tableView->setCheckable(true);
// actions->addAction(tableView);
// addAction(tableView);
addSeparator();
// button to export file list to csv
QAction *exportFileListAction = new QAction(tr("Export File List"), this);
addAction(exportFileListAction);
addSeparator();
if (itemViewer->m_windowType == DvItemViewer::Browser &&
!Preferences::instance()->isWatchFileSystemEnabled()) {
addAction(CommandManager::instance()->getAction("MI_RefreshTree"));
addSeparator();
}
connect(exportFileListAction, SIGNAL(triggered()), itemViewer->getPanel(),
SLOT(exportFileList()));
connect(folderUp, SIGNAL(triggered()), SIGNAL(folderUp()));
connect(newFolder, SIGNAL(triggered()), SIGNAL(newFolder()));
// connect(listView , SIGNAL(triggered()), itemViewer->getPanel(),
// SLOT(setListView()));
// connect(tableView , SIGNAL(triggered()), itemViewer->getPanel(),
// SLOT(setTableView()));
connect(m_folderBack, SIGNAL(triggered()), SIGNAL(folderBack()));
connect(m_folderFwd, SIGNAL(triggered()), SIGNAL(folderFwd()));
if (itemViewer->m_windowType == DvItemViewer::Browser) {
connect(TApp::instance()->getCurrentScene(),
SIGNAL(preferenceChanged(const QString &)), this,
SLOT(onPreferenceChanged(const QString &)));
}
}
//-----------------------------------------------------------------------------
void SceneBrowserButtonBar::onHistoryChanged(bool backEnable, bool fwdEnable) {
if (backEnable)
m_folderBack->setEnabled(true);
else
m_folderBack->setEnabled(false);
if (fwdEnable)
m_folderFwd->setEnabled(true);
else
m_folderFwd->setEnabled(false);
}
//-----------------------------------------------------------------------------
void SceneBrowserButtonBar::onPreferenceChanged(const QString &prefName) {
// react only when the related preference is changed
if (prefName != "WatchFileSystem") return;
QAction *refreshAct = CommandManager::instance()->getAction("MI_RefreshTree");
if (Preferences::instance()->isWatchFileSystemEnabled()) {
removeAction(refreshAct);
removeAction(actions().last()); // remove separator
} else {
addAction(refreshAct);
addSeparator();
}
}
//============================================================================= //=============================================================================
// SceneBrowser // SceneBrowser
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -133,8 +245,8 @@ SceneBrowser::SceneBrowser(QWidget *parent, Qt::WFlags flags, bool noContextMenu
m_itemViewer = new DvItemViewer(box, noContextMenu, multiSelectionEnabled, m_itemViewer = new DvItemViewer(box, noContextMenu, multiSelectionEnabled,
DvItemViewer::Browser); DvItemViewer::Browser);
DvItemViewerTitleBar *titleBar = new DvItemViewerTitleBar(m_itemViewer, box); DvItemViewerTitleBar *titleBar = new DvItemViewerTitleBar(m_itemViewer, box);
DvItemViewerButtonBar *buttonBar = SceneBrowserButtonBar *buttonBar =
new DvItemViewerButtonBar(m_itemViewer, box); new SceneBrowserButtonBar(m_itemViewer, box);
DvItemViewerPanel *viewerPanel = m_itemViewer->getPanel(); DvItemViewerPanel *viewerPanel = m_itemViewer->getPanel();
viewerPanel->setThumbnailsView(); viewerPanel->setThumbnailsView();
viewerPanel->addColumn(DvItemListModel::FileType, 50); viewerPanel->addColumn(DvItemListModel::FileType, 50);

View file

@ -25,6 +25,25 @@ class DvDirModelNode;
class DvDirTreeView; class DvDirTreeView;
class QFileSystemWatcher; class QFileSystemWatcher;
//-----------------------------------------------------------------------------
class SceneBrowserButtonBar final : public QToolBar {
Q_OBJECT
QAction *m_folderBack;
QAction *m_folderFwd;
public:
SceneBrowserButtonBar(DvItemViewer *itemViewer, QWidget *parent = 0);
public slots:
void onHistoryChanged(bool, bool);
void onPreferenceChanged(const QString &);
signals:
void folderUp();
void newFolder();
void folderBack();
void folderFwd();
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class SceneBrowser final : public QFrame, public DvItemListModel { class SceneBrowser final : public QFrame, public DvItemListModel {