115b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang/*
215b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * Copyright (C) 2012 The Android Open Source Project
315b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang *
415b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * Licensed under the Apache License, Version 2.0 (the "License");
515b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * you may not use this file except in compliance with the License.
615b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * You may obtain a copy of the License at
715b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang *
815b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang *      http://www.apache.org/licenses/LICENSE-2.0
915b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang *
1015b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * Unless required by applicable law or agreed to in writing, software
1115b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * distributed under the License is distributed on an "AS IS" BASIS,
1215b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1315b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * See the License for the specific language governing permissions and
1415b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang * limitations under the License.
1515b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang */
1615b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang
1715b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Changpackage com.android.gallery3d.data;
1815b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang
193b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Changimport java.util.concurrent.atomic.AtomicBoolean;
2015b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang
2115b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang// This is a simple MediaSet which contains only one MediaItem -- a SnailItem.
2245f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescupublic class SnailAlbum extends SingleItemAlbum {
237817979db0c52ffeacb951625b1e821eba303285Ahbong Chang    @SuppressWarnings("unused")
243b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Chang    private static final String TAG = "SnailAlbum";
253b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Chang    private AtomicBoolean mDirty = new AtomicBoolean(false);
2615b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang
2745f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu    public SnailAlbum(Path path, SnailItem item) {
2845f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu        super(path, item);
2915b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang    }
3015b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang
3115b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang    @Override
32705dc819661cb8c8e839a04577b0641bd6caad53John Reck    public long reload() {
33705dc819661cb8c8e839a04577b0641bd6caad53John Reck        if (mDirty.compareAndSet(true, false)) {
34705dc819661cb8c8e839a04577b0641bd6caad53John Reck            ((SnailItem) getItem()).updateVersion();
35705dc819661cb8c8e839a04577b0641bd6caad53John Reck            mDataVersion = nextVersionNumber();
36705dc819661cb8c8e839a04577b0641bd6caad53John Reck        }
37705dc819661cb8c8e839a04577b0641bd6caad53John Reck        return mDataVersion;
3815b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang    }
393b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Chang
403b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Chang    public void notifyChange() {
413b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Chang        mDirty.set(true);
423b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Chang        notifyContentChanged();
433b4a8aeb0353fa18a2b5267b3952a80a6c6d4d13Chih-Chung Chang    }
4415b351a22d02e89d882fc9fe32b3f4c512080e0aChih-Chung Chang}
45