~fboucault/camera-app/fix_header_flickering_arale

« back to all changes in this revision

Viewing changes to CameraApp/foldersmodel.cpp

  • Committer: Florian Boucault
  • Date: 2014-07-31 18:41:17 UTC
  • mto: This revision was merged to the branch mainline in revision 341.
  • Revision ID: florian.boucault@canonical.com-20140731184117-s8b4pieonx1jn0ro
Added export mode so that other apps can request pictures from the camera app.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
    Q_EMIT foldersChanged();
41
41
}
42
42
 
43
 
QStringList FoldersModel::nameFilters() const
 
43
QStringList FoldersModel::typeFilters() const
44
44
{
45
 
    return m_nameFilters;
 
45
    return m_typeFilters;
46
46
}
47
47
 
48
 
void FoldersModel::setNameFilters(const QStringList& nameFilters)
 
48
void FoldersModel::setTypeFilters(const QStringList& typeFilters)
49
49
{
50
 
    m_nameFilters = nameFilters;
 
50
    m_typeFilters = typeFilters;
51
51
    updateFileInfoList();
52
 
    Q_EMIT nameFiltersChanged();
 
52
    Q_EMIT typeFiltersChanged();
 
53
}
 
54
 
 
55
QList<int> FoldersModel::selectedFiles() const
 
56
{
 
57
    return m_selectedFiles.values();
53
58
}
54
59
 
55
60
void FoldersModel::updateFileInfoList()
57
62
    m_fileInfoList.clear();
58
63
    Q_FOREACH (QString folder, m_folders) {
59
64
        QDir currentDir(folder);
60
 
        QFileInfoList fileInfoList = currentDir.entryInfoList(m_nameFilters,
61
 
                                                              QDir::Files | QDir::Readable,
 
65
        QFileInfoList fileInfoList = currentDir.entryInfoList(QDir::Files | QDir::Readable,
62
66
                                                              QDir::Time | QDir::Reversed);
63
67
        Q_FOREACH (QFileInfo fileInfo, fileInfoList) {
64
 
            insertFileInfo(fileInfo);
 
68
            QString type = m_mimeDatabase.mimeTypeForFile(fileInfo).name();
 
69
            Q_FOREACH (QString filterType, m_typeFilters) {
 
70
                if (type.startsWith(filterType)) {
 
71
                    insertFileInfo(fileInfo);
 
72
                    break;
 
73
                }
 
74
            }
65
75
        }
66
76
    }
67
77
    endResetModel();
 
78
    m_selectedFiles.clear();
 
79
    Q_EMIT selectedFilesChanged();
68
80
}
69
81
 
70
82
bool moreRecentThan(const QFileInfo& fileInfo1, const QFileInfo& fileInfo2)
94
106
    roles[FilePathRole] = "filePath";
95
107
    roles[FileUrlRole] = "fileURL";
96
108
    roles[FileTypeRole] = "fileType";
 
109
    roles[SelectedRole] = "selected";
97
110
    return roles;
98
111
}
99
112
 
120
133
            return QUrl::fromLocalFile(item.filePath());
121
134
            break;
122
135
        case FileTypeRole:
123
 
            return m_mimeDatabase.mimeTypeForFile(item.fileName()).name();
 
136
            return m_mimeDatabase.mimeTypeForFile(item).name();
 
137
            break;
 
138
        case SelectedRole:
 
139
            return m_selectedFiles.contains(index.row());
124
140
            break;
125
141
        default:
126
142
            break;
143
159
{
144
160
    updateFileInfoList();
145
161
}
 
162
 
 
163
void FoldersModel::toggleSelected(int row)
 
164
{
 
165
    int previouslySelected = m_selectedFiles.isEmpty() ? -1 : m_selectedFiles.values().first();
 
166
 
 
167
    if (m_selectedFiles.contains(row)) {
 
168
        m_selectedFiles.remove(row);
 
169
    } else {
 
170
        // only support single item selection for now
 
171
        m_selectedFiles.insert(row);
 
172
    }
 
173
 
 
174
    if (previouslySelected != -1 && previouslySelected != row) {
 
175
        Q_EMIT dataChanged(index(previouslySelected), index(previouslySelected));
 
176
    }
 
177
    Q_EMIT dataChanged(index(row), index(row));
 
178
    Q_EMIT selectedFilesChanged();
 
179
}
 
180
 
 
181
void FoldersModel::clearSelection()
 
182
{
 
183
    Q_FOREACH (int selectedFile, m_selectedFiles) {
 
184
        m_selectedFiles.remove(selectedFile);
 
185
        Q_EMIT dataChanged(index(selectedFile), index(selectedFile));
 
186
    }
 
187
    Q_EMIT selectedFilesChanged();
 
188
}