diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-07-09 18:54:22 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-07-09 18:54:22 +0000 |
| commit | e85b77286f66edecdc3707065e39b31f2e220f5a (patch) | |
| tree | 8d92254944d3c9391c61231bc114758f9ac23370 /src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h | |
| parent | c0a9e456b6a935b67f2d3357a9cef7170cfee418 (diff) | |
| download | qmmp-e85b77286f66edecdc3707065e39b31f2e220f5a.tar.gz qmmp-e85b77286f66edecdc3707065e39b31f2e220f5a.tar.bz2 qmmp-e85b77286f66edecdc3707065e39b31f2e220f5a.zip | |
completed file dialog support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@443 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h')
| -rw-r--r-- | src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h | 93 |
1 files changed, 89 insertions, 4 deletions
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h index 12cd63e21..647fe009b 100644 --- a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h @@ -1,33 +1,118 @@ +/************************************************************************** +* Copyright (C) 2008 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., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ + #ifndef QMMPFILEDIALOGIMPL_H #define QMMPFILEDIALOGIMPL_H #include "ui_qmmpfiledialog.h" #include <QDialog> +#include <QCompleter> +#include <QAbstractItemView> +#include <QDirModel> #include <qmmpui/filedialog.h> -class QDirModel; +//class QDirModel; class QmmpFileDialogImpl : public QDialog , private Ui::QmmpFileDialog { Q_OBJECT public: - QmmpFileDialogImpl( QWidget * parent = 0, Qt::WindowFlags f = 0 ); + QmmpFileDialogImpl(QWidget *parent = 0, Qt::WindowFlags f = 0); + ~QmmpFileDialogImpl(); - void setModeAndMask(const QString&,FileDialog::Mode m,const QStringList& mask); + + void setModeAndMask(const QString&,FileDialog::Mode m, const QStringList& mask); + QStringList selectedFiles (); + protected slots: 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_returnPressed(); + void on_fileNameLineEdit_textChanged (const QString &text); void on_addPushButton_clicked(); void on_listToolButton_toggled(bool); - void on_iconToolButton_toggled(bool); + void on_detailsToolButton_toggled(bool); + void on_fileTypeComboBox_activated(int); + void on_fileListView_selectionChanged (const QItemSelection&, const QItemSelection&); signals: void filesAdded(const QStringList&); + protected: QDirModel* m_model; + virtual void hideEvent (QHideEvent *event); + +private slots: + void updateSelection (); + +private: + int m_mode; + void addToHistory(const QString &path); + void addFiles(const QStringList &list); + QStringList m_history; + +}; +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 QDirModel *dirModel = static_cast<const QDirModel *>(model()); + QString currentLocation = dirModel->filePath(m_itemView->rootIndex()); + QString path = dirModel->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 QDirModel *dirModel = static_cast<const QDirModel *>(model()); + QString currentLocation = QDir::toNativeSeparators(dirModel->filePath(m_itemView->rootIndex())); + parts = QCompleter::splitPath(currentLocation); + } + parts << QCompleter::splitPath(path); + return parts; + } +private: + QAbstractItemView *m_itemView; }; + + #endif //QMMPFILEDIALOGIMPL_H |
