aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp
blob: cef212d9fd0e85b0c4bff425a23230914c7a57c2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "qmmpfiledialogimpl.h"

#include <QDirModel>
#include <QApplication>
#include <QFileInfo>
#include <QStyle>

QmmpFileDialogImpl::QmmpFileDialogImpl( QWidget * parent, Qt::WindowFlags f) : QDialog(parent,f)
{
    setupUi(this);
    setAttribute(Qt::WA_QuitOnClose, FALSE);
    m_model = new QDirModel(this);
    m_model->setSorting(QDir::Type /*| QDir::Name*/);
    fileListView->setModel(m_model);
    //fileListView->setViewMode(QListView::IconMode);
    listToolButton->setChecked(true);
    upToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowUp));
    listToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_FileDialogListView));
    iconToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_FileDialogDetailedView));
}

QmmpFileDialogImpl::~QmmpFileDialogImpl()
{
}

void QmmpFileDialogImpl::on_lookInComboBox_activated(const QString&)
{
    qWarning("TODO: %s  %d",__FILE__,__LINE__);
}

void QmmpFileDialogImpl::on_upToolButton_clicked()
{
    fileListView->setRootIndex(m_model->parent(fileListView->rootIndex()));
    lookInComboBox->setEditText(m_model->filePath(fileListView->rootIndex()));
}

void QmmpFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind)
{
    if (ind.isValid())
    {
        QFileInfo info = m_model->fileInfo(ind);
        if (info.isDir())
        {
            fileListView->setRootIndex(ind);
            lookInComboBox->setEditText(m_model->filePath(ind));
        }
        else
        {
            QStringList l;
            l << m_model->filePath(ind);
            emit filesAdded(l);
        }
    }

}

void QmmpFileDialogImpl::on_fileNameLineEdit_returnPressed()
{
    on_addPushButton_clicked();
}

void QmmpFileDialogImpl::on_addPushButton_clicked()
{
    QModelIndexList ml = fileListView->selectionModel()->selectedIndexes();
    QStringList l;
    foreach(QModelIndex i,ml)
    l << m_model->filePath(i);
    qWarning("!!!!!!!!!");
    emit filesAdded(l);
}

void QmmpFileDialogImpl::setModeAndMask(const QString& d,FileDialog::Mode m, const QStringList & mask)
{
    if (m == FileDialog::AddFiles)
    {
        setWindowTitle("Add Files");
        m_model->setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
    }
    else if (m == FileDialog::AddDirs)
    {
        setWindowTitle("Add Dirs");
        m_model->setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
    }
    else
    {
        setWindowTitle("Save File");
        m_model->setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
        qWarning("To be implemented...");
    }

    m_model->setSorting(QDir::Type);
    fileListView->setRootIndex(m_model->index(d));
    m_model->sort(0);
    lookInComboBox->setEditText(QDir::cleanPath(d));
}

void QmmpFileDialogImpl::on_listToolButton_toggled(bool yes)
{
    if (yes)
    {
        iconToolButton->setChecked(false);
        fileListView->setViewMode(QListView::ListMode);
        fileListView->setGridSize(QSize(-1, -1));
    }
}

void QmmpFileDialogImpl::on_iconToolButton_toggled(bool yes)
{
    if (yes)
    {
        listToolButton->setChecked(false);
        fileListView->setViewMode(QListView::IconMode);
        fileListView->setGridSize(QSize(80, 80));
    }
}