Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/fileutil.cpp b/src/fileutil.cpp
- index 0992adef..d87e4cdf 100644
- --- a/src/fileutil.cpp
- +++ b/src/fileutil.cpp
- @@ -58,7 +58,7 @@ void FileUtil::setLastUsedSavePath(const QString& path)
- QString FileUtil::getOpenFileName(QWidget* parent, const QString& caption, const QString& filter, QString* selectedFilter)
- {
- - while (1) {
- + while (true) {
- if (lastUsedOpenPath().isEmpty()) {
- setLastUsedOpenPath(QDir::homePath());
- }
- @@ -79,6 +79,29 @@ QString FileUtil::getOpenFileName(QWidget* parent, const QString& caption, const
- return QString();
- }
- +QStringList FileUtil::getOpenFileNames(QWidget* parent, const QString& caption, const QString& filter, QString* selectedFilter)
- +{
- + while (true) {
- + if (lastUsedOpenPath().isEmpty()) {
- + setLastUsedOpenPath(QDir::homePath());
- + }
- + QStringList fileNames = QFileDialog::getOpenFileNames(parent, caption, lastUsedOpenPath(), filter, selectedFilter);
- + foreach (const QString &fileName, fileNames) {
- + QFileInfo fi(fileName);
- + if (!fi.exists()) {
- + QMessageBox::information(parent, tr("Error"), tr("The file specified does not exist."));
- + continue;
- + }
- +
- + setLastUsedOpenPath(fi.path());
- + return fileNames;
- + }
- + break;
- + }
- +
- + return QStringList();
- +}
- +
- QString FileUtil::getSaveFileName(QWidget* parent, const QString& caption, const QString& defaultFileName, const QString& filter, QString* selectedFilter)
- {
- if (lastUsedSavePath().isEmpty()) {
- diff --git a/src/fileutil.h b/src/fileutil.h
- index 41ea97b6..3e0cfad0 100644
- --- a/src/fileutil.h
- +++ b/src/fileutil.h
- @@ -37,8 +37,9 @@ public:
- static QString getImageFileName(QWidget* parent, QString caption = QString());
- static QString getInbandImageFileName(QWidget* parent);
- - static QString getOpenFileName(QWidget* parent = 0, const QString& caption = QString(), const QString& filter = QString(), QString* selectedFilter = 0);
- - static QString getSaveFileName(QWidget* parent = 0, const QString& caption = QString(), const QString& defaultFileName = QString(), const QString& filter = QString(), QString* selectedFilter = 0);
- + static QString getOpenFileName(QWidget* parent = nullptr, const QString& caption = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr);
- + static QStringList getOpenFileNames(QWidget* parent = nullptr, const QString &caption = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr);
- + static QString getSaveFileName(QWidget* parent = nullptr, const QString& caption = QString(), const QString& defaultFileName = QString(), const QString& filter = QString(), QString* selectedFilter = 0);
- static QString getSaveDirName(QWidget *parent, const QString &caption);
- static QString mimeToFileExt(const QString &mime);
- diff --git a/src/multifiletransferdlg.cpp b/src/multifiletransferdlg.cpp
- index 6b894f94..1877b750 100644
- --- a/src/multifiletransferdlg.cpp
- +++ b/src/multifiletransferdlg.cpp
- @@ -92,6 +92,13 @@ MultiFileTransferDlg::MultiFileTransferDlg(PsiAccount *acc, QWidget *parent) :
- ui->listView->setItemDelegate(new MultiFileTransferDelegate(this));
- ui->listView->setModel(d->model);
- ui->buttonBox->button(QDialogButtonBox::Abort)->hide();
- + connect(ui->listView, &QListView::activated, this, [&] (QModelIndex index) {
- + auto state = index.data(MultiFileTransferModel::StateRole).toInt();
- + if (state == MultiFileTransferModel::AddTemplate) {
- + QStringList files_ = FileUtil::getOpenFileNames(this, tr("Open Files"));
- + initOutgoing(d->peer, files_);
- + }
- + });
- updateMyVisuals();
- }
- @@ -329,3 +336,34 @@ void MultiFileTransferDlg::updateComonVisuals()
- {
- ui->lblStatus->setText(tr("%1 File(s)").arg(d->model->rowCount() - 1));
- }
- +
- +void MultiFileTransferDlg::dragEnterEvent(QDragEnterEvent *event)
- +{
- + event->acceptProposedAction();
- +}
- +
- +void MultiFileTransferDlg::dragMoveEvent(QDragMoveEvent *event)
- +{
- + event->acceptProposedAction();
- +}
- +
- +void MultiFileTransferDlg::dragLeaveEvent(QDragLeaveEvent *event)
- +{
- + event->accept();
- +}
- +
- +void MultiFileTransferDlg::dropEvent(QDropEvent *event)
- +{
- + //QList <QFileInfo> dragFiles;
- + QStringList dragFiles;
- + const QMimeData* mimeData = event->mimeData();
- + if (mimeData->hasUrls()) {
- + foreach(const QUrl & url_, mimeData->urls()) {
- + dragFiles << url_.toLocalFile();
- + }
- + }
- + if (!dragFiles.isEmpty()) {
- + initOutgoing(d->peer, dragFiles);
- + event->acceptProposedAction();
- + }
- +}
- diff --git a/src/multifiletransferdlg.h b/src/multifiletransferdlg.h
- index c3e7b09e..c83ea4c7 100644
- --- a/src/multifiletransferdlg.h
- +++ b/src/multifiletransferdlg.h
- @@ -46,10 +46,18 @@ public:
- void initOutgoing(const XMPP::Jid &jid, const QStringList &fileList);
- void initIncoming(XMPP::Jingle::Session *session);
- +
- +protected:
- + void dragEnterEvent(QDragEnterEvent *event);
- + void dragMoveEvent(QDragMoveEvent *event);
- + void dragLeaveEvent(QDragLeaveEvent *event);
- + void dropEvent(QDropEvent *event);
- +
- private:
- void updatePeerVisuals();
- void updateMyVisuals();
- void updateComonVisuals();
- + void openFiles();
- private:
- Ui::MultiFileTransferDlg *ui;
- diff --git a/src/multifiletransferdlg.ui b/src/multifiletransferdlg.ui
- index c5c19fd3..6017b60d 100644
- --- a/src/multifiletransferdlg.ui
- +++ b/src/multifiletransferdlg.ui
- @@ -10,6 +10,9 @@
- <height>300</height>
- </rect>
- </property>
- + <property name="acceptDrops">
- + <bool>true</bool>
- + </property>
- <property name="windowTitle">
- <string notr="true">File Transfer</string>
- </property>
- @@ -206,7 +209,14 @@
- </layout>
- </item>
- <item>
- - <widget class="QListView" name="listView"/>
- + <widget class="QListView" name="listView">
- + <property name="acceptDrops">
- + <bool>true</bool>
- + </property>
- + <property name="dragDropMode">
- + <enum>QAbstractItemView::DropOnly</enum>
- + </property>
- + </widget>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement