133781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux/*
233781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * Copyright (C) 2016 The Android Open Source Project
333781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux *
433781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * Licensed under the Apache License, Version 2.0 (the "License");
533781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * you may not use this file except in compliance with the License.
633781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * You may obtain a copy of the License at
733781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux *
833781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux *      http://www.apache.org/licenses/LICENSE-2.0
933781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux *
1033781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * Unless required by applicable law or agreed to in writing, software
1133781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * distributed under the License is distributed on an "AS IS" BASIS,
1233781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1333781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * See the License for the specific language governing permissions and
1433781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux * limitations under the License.
1533781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux */
1633781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
1733781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieuxpackage com.android.deskclock.ringtone;
1833781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
1933781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieuximport android.net.Uri;
2033781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
2133781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieuximport com.android.deskclock.ItemAdapter;
2233781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieuximport com.android.deskclock.Utils;
2333781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieuximport com.android.deskclock.data.DataModel;
2433781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
2533781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieuximport static android.support.v7.widget.RecyclerView.NO_ID;
2633781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
2733781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieuxabstract class RingtoneHolder extends ItemAdapter.ItemHolder<Uri> {
2833781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
2933781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    private final String mName;
3095eed3212011413e1cb717c281e2157859a5adf4Sean Stout    private final boolean mHasPermissions;
3133781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    private boolean mSelected;
3233781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    private boolean mPlaying;
3333781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
3433781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    RingtoneHolder(Uri uri, String name) {
3595eed3212011413e1cb717c281e2157859a5adf4Sean Stout        this(uri, name, true);
3695eed3212011413e1cb717c281e2157859a5adf4Sean Stout    }
3795eed3212011413e1cb717c281e2157859a5adf4Sean Stout
3895eed3212011413e1cb717c281e2157859a5adf4Sean Stout    RingtoneHolder(Uri uri, String name, boolean hasPermissions) {
3933781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux        super(uri, NO_ID);
4033781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux        mName = name;
4195eed3212011413e1cb717c281e2157859a5adf4Sean Stout        mHasPermissions = hasPermissions;
4233781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    }
4333781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
4433781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    long getId() { return itemId; }
4595eed3212011413e1cb717c281e2157859a5adf4Sean Stout    boolean hasPermissions() { return mHasPermissions; }
4633781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    Uri getUri() { return item; }
4795eed3212011413e1cb717c281e2157859a5adf4Sean Stout
4833781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    boolean isSilent() { return Utils.RINGTONE_SILENT.equals(getUri()); }
4933781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
5033781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    boolean isSelected() { return mSelected; }
5133781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    void setSelected(boolean selected) { mSelected = selected; }
5233781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
5333781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    boolean isPlaying() { return mPlaying; }
5433781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    void setPlaying(boolean playing) { mPlaying = playing; }
5533781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux
5633781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    String getName() {
5733781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux        return mName != null ? mName : DataModel.getDataModel().getRingtoneTitle(getUri());
5833781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux    }
5933781c882e4229f4ec1a8fafbabb9d4b8b8e2932James Lemieux}