// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ #pragma once #include <string> #include "base/basictypes.h" #include "base/string16.h" class DownloadItem; class SavePackage; // This class provides an interface for functions which have different behaviors // depending on the type of download. class BaseDownloadItemModel { public: explicit BaseDownloadItemModel(DownloadItem* download) : download_(download) { } virtual ~BaseDownloadItemModel() { } // Cancel the task corresponding to the item. virtual void CancelTask() = 0; // Get the status text to display. virtual string16 GetStatusText() = 0; DownloadItem* download() { return download_; } protected: DownloadItem* download_; }; // This class is a model class for DownloadItemView. It provides functionality // for canceling the downloading, and also the text for displaying downloading // status. class DownloadItemModel : public BaseDownloadItemModel { public: explicit DownloadItemModel(DownloadItem* download); virtual ~DownloadItemModel() { } // Cancel the downloading. virtual void CancelTask(); // Get downloading status text. virtual string16 GetStatusText(); private: DISALLOW_COPY_AND_ASSIGN(DownloadItemModel); }; // This class is a model class for DownloadItemView. It provides cancel // functionality for saving page, and also the text for displaying saving // status. class SavePageModel : public BaseDownloadItemModel { public: SavePageModel(SavePackage* save, DownloadItem* download); virtual ~SavePageModel() { } // Cancel the page saving. virtual void CancelTask(); // Get page saving status text. virtual string16 GetStatusText(); private: // Saving page management. SavePackage* save_; DISALLOW_COPY_AND_ASSIGN(SavePageModel); }; #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_