/*************************************************************************** * Copyright (C) 2006 by Peter Penz * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef _INFOSIDEBARPAGE_H_ #define _INFOSIDEBARPAGE_H_ #include #include #include #include #include #include namespace KIO { class Job; }; class TQPixmap; class TQIconSet; class TQString; class TQPainter; class KFileItem; class TQLabel; class TQVBox; class TQGrid; class PixmapViewer; /** * @brief Prototype for a information sidebar. * * Will be exchanged in future releases by pluggable sidebar pages... */ class InfoSidebarPage : public SidebarPage { Q_OBJECT public: InfoSidebarPage(TQWidget* parent); virtual ~InfoSidebarPage(); protected: /** @see SidebarPage::activeViewChanged() */ virtual void activeViewChanged(); private slots: /** * Does a delayed request of information for the item of the given URL and * provides default actions. * * @see InfoSidebarPage::showItemInfo() */ void requestDelayedItemInfo(const KURL& url); /** * Does a request of information for the item of the given URL and * provides default actions. * * @see InfoSidebarPage::showItemInfo() */ void requestItemInfo(const KURL& url); /** * Shows the information for the item of the URL which has been provided by * InfoSidebarPage::requestItemInfo() and provides default actions. */ void showItemInfo(); /** * Triggered if the request for item information has timed out. * @see InfoSidebarPage::requestDelayedItemInfo() */ void slotTimeout(); /** * Is invoked if no preview is available for the item. In this * case the icon will be shown. */ void slotPreviewFailed(const KFileItem* item); /** * Is invoked if a preview is available for the item. The preview * \a pixmap is shown inside the info page. */ void gotPreview(const KFileItem* item, const TQPixmap& pixmap); /** * Starts the service of m_actionsVector with the index \index on * the shown URL (or the selected items if available). */ void startService(int index); private: /** * Connects to signals from the currently active Dolphin view to get * informed about highlighting changes. */ void connectToActiveView(); /** * Checks whether the current URL is repesented by a bookmark. If yes, * then the bookmark icon and name are shown instead of a preview. * @return True, if the URL represents exactly a bookmark. */ bool applyBookmark(); /** Assures that any pending item information request is cancelled. */ void cancelRequest(); // TODO: the following methods are just a prototypes for meta // info generation... void createMetaInfo(); void addInfoLine(const TQString& labelText, const TQString& infoText); void beginInfoLines(); void endInfoLines(); /** * Returns true, if the string \a key represents a meta information * that should be shown. */ bool showMetaInfo(const TQString& key) const; /** * Inserts the available actions to the info page for the given item. */ void insertActions(); bool m_multipleSelection; bool m_pendingPreview; TQTimer* m_timer; KURL m_shownURL; KURL m_urlCandidate; PixmapViewer* m_preview; TQLabel* m_name; int m_currInfoLineIdx; TQGrid* m_infoGrid; TQPtrList m_infoWidgets; // TODO: use children() from TQObject instead TQVBox* m_actionBox; TQPtrList m_actionWidgets; // TODO: use children() from TQObject instead TQValueVector m_actionsVector; }; // TODO #1: move to SidebarPage? // TODO #2: quite same button from the optical point of view as URLNavigatorButton // -> provide helper class or common base class class ServiceButton : public TQPushButton { Q_OBJECT public: ServiceButton(const TQIconSet& icon, const TQString& text, TQWidget* parent, int index); virtual ~ServiceButton(); signals: void requestServiceStart(int index); protected: virtual void drawButton(TQPainter* painter); virtual void enterEvent(TQEvent* event); virtual void leaveEvent(TQEvent* event); private slots: void slotReleased(); private: bool m_hover; int m_index; }; #endif // _INFOSIDEBARPAGE_H_