1ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay/*
2ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * Copyright (C) 2015 The Android Open Source Project
3ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay *
4ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * Licensed under the Apache License, Version 2.0 (the "License");
5ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * you may not use this file except in compliance with the License.
6ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * You may obtain a copy of the License at
7ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay *
8ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay *      http://www.apache.org/licenses/LICENSE-2.0
9ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay *
10ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * Unless required by applicable law or agreed to in writing, software
11ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * distributed under the License is distributed on an "AS IS" BASIS,
12ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * See the License for the specific language governing permissions and
14ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * limitations under the License.
15ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay */
16ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
17ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKaypackage com.android.documentsui.dirlist;
18ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
19ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport android.database.MatrixCursor;
20ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport android.provider.DocumentsContract.Document;
21ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
22ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport com.android.documentsui.DirectoryResult;
23ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport com.android.documentsui.RootCursorWrapper;
24ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
25ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport java.util.Random;
26ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
27ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKaypublic class TestModel extends Model {
28ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
29f5ce1035d41b590c5a25074242baed9dbd48ef3fBen Kwa    static final String[] COLUMNS = new String[]{
30ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        RootCursorWrapper.COLUMN_AUTHORITY,
31ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        Document.COLUMN_DOCUMENT_ID,
32ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        Document.COLUMN_FLAGS,
33ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        Document.COLUMN_DISPLAY_NAME,
34ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        Document.COLUMN_SIZE,
35ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        Document.COLUMN_MIME_TYPE
36ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay    };
37ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
38ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay    private final String mAuthority;
39ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
403564543e1ece2211a2d5b729fbbf8dd7ac94944cSteve McKay    public TestModel(String authority) {
413564543e1ece2211a2d5b729fbbf8dd7ac94944cSteve McKay        super();
42ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        mAuthority = authority;
43ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay    }
44ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
45ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay    void update(String... names) {
46ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        Random rand = new Random();
47ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
48ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        MatrixCursor c = new MatrixCursor(COLUMNS);
49ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        for (int i = 0; i < names.length; i++) {
50ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            MatrixCursor.RowBuilder row = c.newRow();
51ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            row.add(RootCursorWrapper.COLUMN_AUTHORITY, mAuthority);
52ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
53ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE);
54ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            // Generate random document names and sizes. This forces the model's internal sort code
55ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            // to actually do something.
56ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            row.add(Document.COLUMN_DISPLAY_NAME, names[i]);
57ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay            row.add(Document.COLUMN_SIZE, rand.nextInt());
58ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        }
59ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
60ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        DirectoryResult r = new DirectoryResult();
61ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        r.cursor = c;
62ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay        update(r);
63ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay    }
64ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay
65955e46d004cf484267aef6181722ac19ffaf073dSteve McKay    String idForPosition(int p) {
66007151a90d2a97ad17772a3c9e6be249261a5365Tomasz Mikolajewski        return Integer.toString(p);
67955e46d004cf484267aef6181722ac19ffaf073dSteve McKay    }
68ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay}
69