10c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project/*
20c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
30c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
40c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
50c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * you may not use this file except in compliance with the License.
60c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * You may obtain a copy of the License at
70c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
80c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
90c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
100c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
110c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
120c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * See the License for the specific language governing permissions and
140c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * limitations under the License.
150c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project */
160c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
170c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
180c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectpackage com.android.browser;
190c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
200c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.content.Context;
214b59db8bc6b609307dfcb346283378c5ea993d7cJohn Reckimport android.provider.Browser;
220c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.view.View;
230c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.widget.CompoundButton;
24177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reckimport android.widget.CompoundButton.OnCheckedChangeListener;
250c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
260c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project/**
270c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *  Layout representing a history item in the classic history viewer.
280c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project */
29177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck/* package */ class HistoryItem extends BookmarkItem
30177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        implements OnCheckedChangeListener {
310c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
320c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    private CompoundButton  mStar;      // Star for bookmarking
330c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    /**
340c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     *  Create a new HistoryItem.
350c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     *  @param context  Context for this HistoryItem.
360c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     */
370c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    /* package */ HistoryItem(Context context) {
38177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        this(context, true);
39177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck    }
40177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck
41177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck    /* package */ HistoryItem(Context context, boolean showStar) {
420c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super(context);
430c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
440c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        mStar = (CompoundButton) findViewById(R.id.star);
45177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        mStar.setOnCheckedChangeListener(this);
46177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        if (showStar) {
47177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            mStar.setVisibility(View.VISIBLE);
48177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        } else {
49177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            mStar.setVisibility(View.GONE);
50177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        }
510c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
520c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
53186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins    /* package */ void copyTo(HistoryItem item) {
540c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        item.mTextView.setText(mTextView.getText());
550c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        item.mUrlText.setText(mUrlText.getText());
560c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        item.setIsBookmark(mStar.isChecked());
570c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        item.mImageView.setImageDrawable(mImageView.getDrawable());
580c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
590c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
600c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    /**
61186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins     * Whether or not this item represents a bookmarked site
62186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins     */
63186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins    /* package */ boolean isBookmark() {
64186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins        return mStar.isChecked();
65186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins    }
66186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins
67186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins    /**
680c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     *  Set whether or not this represents a bookmark, and make sure the star
690c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     *  behaves appropriately.
700c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     */
71186e593776c396bde3d720addd6f6842fe880a7cLeon Scroggins    /* package */ void setIsBookmark(boolean isBookmark) {
720c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        mStar.setOnCheckedChangeListener(null);
730c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        mStar.setChecked(isBookmark);
74177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        mStar.setOnCheckedChangeListener(this);
75177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck    }
76177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck
77177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck    @Override
78177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck    public void onCheckedChanged(CompoundButton buttonView,
79177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            boolean isChecked) {
80177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        if (isChecked) {
81177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            // Uncheck ourseves. When the bookmark is actually added,
82177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            // we will be notified
83177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            setIsBookmark(false);
84177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            Browser.saveBookmark(getContext(), getName(), mUrl);
85177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        } else {
86177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck            Bookmarks.removeFromBookmarks(getContext(),
87177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck                    getContext().getContentResolver(), mUrl, getName());
88177746d05e1ceefe8421a4fdab7407e1d17b46d6John Reck        }
890c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
900c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project}
91