Skip to content

Commit 78faeb8

Browse files
committed
Plugins::FileTransfer: add menu
1 parent 112c8d2 commit 78faeb8

2 files changed

Lines changed: 73 additions & 1 deletion

File tree

Plugins/FileTransfer/FrmFileTransfer.cpp

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
// Copyright Copyright (c) Kang Lin studio, All Rights Reserved
22
// Author Kang Lin <kl222@126.com>
33

4+
#include <QInputDialog>
5+
#include <QMenu>
6+
#include <QDesktopServices>
7+
#include <QLoggingCategory>
48
#include "FrmFileTransfer.h"
59
#include "ui_FrmFileTransfer.h"
610

11+
static Q_LOGGING_CATEGORY(log, "FileTransfer.Widget")
712
CFrmFileTransfer::CFrmFileTransfer(QWidget *parent)
813
: QWidget(parent)
914
, ui(new Ui::CFrmFileTransfer)
@@ -15,6 +20,7 @@ CFrmFileTransfer::CFrmFileTransfer(QWidget *parent)
1520

1621
m_pModelLocalDir->setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
1722
ui->tvLocal->setModel(m_pModelLocalDir);
23+
ui->tvLocal->setContextMenuPolicy(Qt::CustomContextMenu);
1824
check = connect(ui->tvLocal, &QTreeView::clicked,
1925
this, &CFrmFileTransfer::slotLocalClicked);
2026
Q_ASSERT(check);
@@ -28,6 +34,7 @@ CFrmFileTransfer::CFrmFileTransfer(QWidget *parent)
2834

2935
m_pModelLocalFile->setFilter(QDir::Files);
3036
ui->tabLocal->setModel(m_pModelLocalFile);
37+
ui->tabLocal->setContextMenuPolicy(Qt::CustomContextMenu);
3138
ui->tabLocal->setShowGrid(false);
3239
ui->tabLocal->verticalHeader()->hide();
3340
ui->tabLocal->horizontalHeader()->setSectionResizeMode(
@@ -67,3 +74,58 @@ void CFrmFileTransfer::on_cbLocal_currentTextChanged(const QString &text)
6774
ui->tvLocal->setCurrentIndex(idx);
6875
slotLocalClicked(idx);
6976
}
77+
78+
void CFrmFileTransfer::on_tvLocal_customContextMenuRequested(const QPoint &pos)
79+
{
80+
qDebug(log) << Q_FUNC_INFO;
81+
QMenu menu;
82+
menu.addAction(QIcon::fromTheme("folder-open"), tr("Open"),
83+
this, SLOT(slotTreeLocalOpen()));
84+
menu.addAction(QIcon::fromTheme("document-new"), tr("New folder"),
85+
this, SLOT(slotTreeLocalNew()));
86+
menu.addAction(QIcon::fromTheme("remove"), tr("Delete"),
87+
this, SLOT(slotTreeLocalDelete()));
88+
menu.addAction(tr("Rename"),
89+
this, SLOT(slotTreeLocalRename()));
90+
menu.exec(mapToGlobal(pos));
91+
}
92+
93+
void CFrmFileTransfer::on_tabLocal_customContextMenuRequested(const QPoint &pos)
94+
{
95+
qDebug(log) << Q_FUNC_INFO;
96+
}
97+
98+
void CFrmFileTransfer::slotTreeLocalOpen()
99+
{
100+
auto idx = ui->tvLocal->currentIndex();
101+
auto szPath = m_pModelLocalDir->filePath(idx);
102+
QDesktopServices::openUrl(QUrl(szPath));
103+
}
104+
105+
void CFrmFileTransfer::slotTreeLocalUpload()
106+
{
107+
108+
}
109+
110+
void CFrmFileTransfer::slotTreeLocalAddToList()
111+
{
112+
113+
}
114+
115+
void CFrmFileTransfer::slotTreeLocalNew()
116+
{
117+
QString szPath = QInputDialog::getText(this, tr("New foler"), tr("New folder"));
118+
if(szPath.isEmpty()) return;
119+
}
120+
121+
void CFrmFileTransfer::slotTreeLocalRename()
122+
{
123+
124+
}
125+
126+
void CFrmFileTransfer::slotTreeLocalDelete()
127+
{
128+
auto idx = ui->tvLocal->currentIndex();
129+
auto szPath = m_pModelLocalDir->filePath(idx);
130+
m_pModelLocalDir->remove(idx);
131+
}

Plugins/FileTransfer/FrmFileTransfer.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ class CFrmFileTransfer : public QWidget
1616
public:
1717
explicit CFrmFileTransfer(QWidget *parent = nullptr);
1818
virtual ~CFrmFileTransfer();
19+
20+
Q_SIGNALS:
21+
void sigUpload(const QString& source, const QString& destination);
1922

2023
private:
2124
//! Set local root path
@@ -25,8 +28,15 @@ class CFrmFileTransfer : public QWidget
2528

2629
private Q_SLOTS:
2730
void slotLocalClicked(const QModelIndex &index);
28-
31+
void slotTreeLocalUpload();
32+
void slotTreeLocalAddToList();
33+
void slotTreeLocalOpen();
34+
void slotTreeLocalNew();
35+
void slotTreeLocalRename();
36+
void slotTreeLocalDelete();
2937
void on_cbLocal_currentTextChanged(const QString &text);
38+
void on_tvLocal_customContextMenuRequested(const QPoint &pos);
39+
void on_tabLocal_customContextMenuRequested(const QPoint &pos);
3040

3141
private:
3242
Ui::CFrmFileTransfer *ui;

0 commit comments

Comments
 (0)