aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-07-09 18:54:22 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-07-09 18:54:22 +0000
commite85b77286f66edecdc3707065e39b31f2e220f5a (patch)
tree8d92254944d3c9391c61231bc114758f9ac23370 /src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h
parentc0a9e456b6a935b67f2d3357a9cef7170cfee418 (diff)
downloadqmmp-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.h93
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