// -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8; -*- /* This file is part of the KDE project Copyright (C) by Andrew Stanley-Jones Copyright (C) 2004 Esben Mose Hansen <kde@mosehansen.dk> 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; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _TOPLEVEL_H_ #define _TOPLEVEL_H_ #include <kapplication.h> #include <kglobalaccel.h> #include <kpopupmenu.h> #include <tqmap.h> #include <tqpixmap.h> #include <dcopobject.h> #include <tqtimer.h> class QClipboard; class KToggleAction; class KAboutData; class URLGrabber; class ClipboardPoll; class TQTime; class History; class KAction; class TQMimeSource; class HistoryItem; class KlipperSessionManaged; class KlipperWidget : public TQWidget, public DCOPObject { Q_OBJECT K_DCOP k_dcop: TQString getClipboardContents(); void setClipboardContents(TQString s); void clearClipboardContents(); void clearClipboardHistory(); TQStringList getClipboardHistoryMenu(); TQString getClipboardHistoryItem(int i); public: KlipperWidget( TQWidget *parent, KConfig* config ); ~KlipperWidget(); virtual void adjustSize(); KGlobalAccel *globalKeys; /** * Get clipboard history (the "document") */ History* history() { return m_history; } static void updateTimestamp(); static void createAboutData(); static void destroyAboutData(); static KAboutData* aboutData(); public slots: void saveSession(); void slotSettingsChanged( int category ); void slotHistoryTopChanged(); void slotConfigure(); protected: /** * The selection modes * * Don't use 1, as I use that as a guard against passing * a boolean true as a mode. */ enum SelectionMode { Clipboard = 2, Selection = 4 }; void paintEvent(TQPaintEvent *); void mousePressEvent(TQMouseEvent *); void readProperties(KConfig *); void readConfiguration(KConfig *); /** * Loads history from disk. */ bool loadHistory(); /** * Save history to disk */ void saveHistory(); void writeConfiguration(KConfig *); /** * @returns the contents of the selection or, if empty, the contents of * the clipboard. */ TQString clipboardContents( bool *isSelection = 0L ); void removeFromHistory( const TQString& text ); void setEmptyClipboard(); void clipboardSignalArrived( bool selectionMode ); /** * Check data in clipboard, and if it passes these checks, * store the data in the clipboard history. */ void checkClipData( bool selectionMode ); /** * Enter clipboard data in the history. */ void applyClipChanges( const TQMimeSource& data ); void setClipboard( const HistoryItem& item, int mode ); bool ignoreClipboardChanges() const; KConfig* config() const { return m_config; } bool isApplet() const { return m_config != kapp->config(); } protected slots: void slotPopupMenu(); void showPopupMenu( TQPopupMenu * ); void slotRepeatAction(); void setURLGrabberEnabled( bool ); void toggleURLGrabber(); void disableURLGrabber(); private slots: void newClipData( bool selectionMode ); void slotClearClipboard(); void slotSelectionChanged() { clipboardSignalArrived( true ); } void slotClipboardChanged() { clipboardSignalArrived( false ); } void slotQuit(); void slotStartHideTimer(); void slotStartShowTimer(); void slotClearOverflow(); void slotCheckPending(); private: QClipboard *clip; TQTime *hideTimer; TQTime *showTimer; TQMimeSource* m_lastClipdata; int m_lastClipboard; int m_lastSelection; History* m_history; int m_overflowCounter; KToggleAction *toggleURLGrabAction; KAction* clearHistoryAction; KAction* configureAction; KAction* quitAction; TQPixmap m_pixmap; TQPixmap m_scaledpixmap; int m_iconOrigWidth; int m_iconOrigHeight; bool bPopupAtMouse :1; bool bKeepContents :1; bool bURLGrabber :1; bool bReplayActionInHistory :1; bool bUseGUIRegExpEditor :1; bool bNoNullClipboard :1; bool bTearOffHandle :1; bool bIgnoreSelection :1; bool bSynchronize :1; bool bSelectionTextOnly :1; bool bIgnoreImages :1; /** * Avoid reacting to our own changes, using this * lock. * Don't manupulate this object directly... use the Ignore struct * instead */ int locklevel; URLGrabber *myURLGrabber; TQString m_lastURLGrabberTextSelection; TQString m_lastURLGrabberTextClipboard; KConfig* m_config; TQTimer m_overflowClearTimer; TQTimer m_pendingCheckTimer; bool m_pendingContentsCheck; ClipboardPoll* poll; static KAboutData* about_data; bool blockFetchingNewData(); KlipperSessionManaged* session_managed; }; class Klipper : public KlipperWidget { Q_OBJECT K_DCOP k_dcop: int newInstance(); void quitProcess(); // not ASYNC public: Klipper( TQWidget* parent = NULL ); }; #endif