aboutsummaryrefslogblamecommitdiff
path: root/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp
blob: cef212d9fd0e85b0c4bff425a23230914c7a57c2 (plain) (tree)
1
2
3
4
5
6


                               
                       
                    
                 






                                                                                                
                                    

                                                     



                                                                                            






                                                                    
                                               









                                                                              
                      

                                                
                         










                                                                
 



                                                            
                               






                                                                           
                              





                                                                                                      
                                  



                                                                            
                                      













                                                                            
                                                    



                                                            
            


                                                       
                                                 




                                                            
            


                                                       
                                                 


     
#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));
    }
}