From ac64d9ea04cce79f4c4b8a5a64be43e5251dadce Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 3 Feb 2016 07:58:24 +0000 Subject: renamed file dialog git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6121 90c681e8-e032-0410-971d-27865f9a5e38 --- .../TwoPanelFileDialog/twopanelfiledialogimpl.h | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h (limited to 'src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h') diff --git a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h new file mode 100644 index 000000000..4085316e2 --- /dev/null +++ b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h @@ -0,0 +1,116 @@ +/************************************************************************** +* Copyright (C) 20016 by Ilya Kotov * +* forkotov02@hotmail.ru * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the * +* Free Software Foundation, Inc., * +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * +***************************************************************************/ + +#ifndef TWOPANELFILEDIALOGIMPL_H +#define TWOPANELFILEDIALOGIMPL_H + +#include "ui_twopanelfiledialog.h" +#include +#include +#include +#include +#include + + +class TwoPanelFileDialogImpl : public QDialog +{ + Q_OBJECT +public: + TwoPanelFileDialogImpl(QWidget *parent = 0); + + ~TwoPanelFileDialogImpl(); + + void setModeAndMask(const QString &path, FileDialog::Mode m, const QStringList& mask = QStringList()); + QStringList selectedFiles (); + +signals: + void filesAdded(const QStringList&); + +private slots: + void updateDirSelection(const QItemSelection&s, const QItemSelection&); + void updateFileSelection(); + void on_dirListView_doubleClicked(const QModelIndex&ind); + + void on_lookInComboBox_activated(const QString&); + void on_upToolButton_clicked(); + void on_fileListView_doubleClicked(const QModelIndex&); + void on_treeView_doubleClicked(const QModelIndex&); + void on_fileNameLineEdit_textChanged (const QString &text); + void on_addButton_clicked(); + void on_fileTypeComboBox_activated(int); + + +private: + void updateFileList(const QString &path); + void hideEvent (QHideEvent *event); + int m_mode; + QFileSystemModel* m_dirModel; + + Ui::TwoPanelFileDialog m_ui; + + void addToHistory(const QString &path); + void addFiles(const QStringList &list); + QStringList m_history; + QStringList m_filters; + +}; + +class PathCompleter : public QCompleter +{ + Q_OBJECT +public: + PathCompleter(QAbstractItemModel *model, QAbstractItemView *itemView, QObject *parent = 0) : QCompleter(model, parent) + { + m_itemView = itemView; + } + + QString pathFromIndex(const QModelIndex &index) const + { + const QFileSystemModel *fileModel = static_cast(model()); + QString currentLocation = fileModel->filePath(m_itemView->rootIndex()); + QString path = fileModel->filePath(index); + if (path.startsWith(currentLocation)) + { + path = path.mid(currentLocation.length() + 1); + } + return path; + } + + + QStringList splitPath(const QString &path) const + { + if (path.isEmpty()) + return QStringList(completionPrefix()); + QStringList parts; + if (!path.startsWith(QDir::separator())) + { + const QFileSystemModel *fileModel = static_cast(model()); + QString currentLocation = QDir::toNativeSeparators(fileModel->filePath(m_itemView->rootIndex())); + parts = QCompleter::splitPath(currentLocation); + } + parts << QCompleter::splitPath(path); + return parts; + } +private: + QAbstractItemView *m_itemView; +}; + + +#endif //TWOPANELFILEDIALOGIMPL_H -- cgit v1.2.3-13-gbd6f