You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
basket/src/bnpview.h

356 lines
11 KiB

/***************************************************************************
* Copyright (C) 2003 by Sébastien Laoût *
* slaout@linux62.org *
* *
* 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 BNPVIEW_H
#define BNPVIEW_H
#include <tdelistview.h>
#include <kxmlguiclient.h>
#include <tqtimer.h>
#include <tqclipboard.h>
#include <tqsplitter.h>
#include <tqlistview.h>
#include <dcopref.h>
#include "global.h"
#include "basketdcopiface.h"
/// NEW:
class TQWidgetStack;
class TQDomDocument;
class TQDomElement;
class TDEToggleAction;
class KPassivePopup;
class TQPopupMenu;
class TDEPopupMenu;
class KTar;
class DesktopColorPicker;
class RegionGrabber;
class Basket;
class DecoratedBasket;
class BasketListViewItem;
class NoteSelection;
class BasketStatusBar;
class Tag;
class State;
class Note;
class KDE_EXPORT BNPView : public TQSplitter, virtual public BasketDcopInterface
{
TQ_OBJECT
public:
/// CONSTRUCTOR AND DESTRUCTOR:
BNPView(TQWidget *parent, const char *name, KXMLGUIClient *aGUIClient,
TDEActionCollection *actionCollection, BasketStatusBar *bar);
~BNPView();
/// MANAGE CONFIGURATION EVENTS!:
void setTreePlacement(bool onLeft);
void relayoutAllBaskets();
void recomputeAllStyles();
void removedStates(const TQValueList<State*> &deletedStates);
void linkLookChanged();
void filterPlacementChanged(bool onTop);
/// MANAGE BASKETS:
BasketListViewItem* listViewItemForBasket(Basket *basket);
Basket* currentBasket();
Basket* parentBasketOf(Basket *basket);
void setCurrentBasket(Basket *basket);
void removeBasket(Basket *basket);
/// For NewBasketDialog (and later some other classes):
TQListViewItem* firstListViewItem();
///
BasketListViewItem* lastListViewItem();
int basketCount(TQListViewItem *parent = 0);
bool canFold();
bool canExpand();
void enableActions();
private:
TQDomElement basketElement(TQListViewItem *item, TQDomDocument &document, TQDomElement &parentElement);
public slots:
void countsChanged(Basket *basket);
void notesStateChanged();
bool convertTexts();
void updateBasketListViewItem(Basket *basket);
void save();
void save(TQListViewItem *firstItem, TQDomDocument &document, TQDomElement &parentElement);
void saveSubHierarchy(TQListViewItem *item, TQDomDocument &document, TQDomElement &parentElement, bool recursive);
void load();
void load(TDEListView *listView, TQListViewItem *item, const TQDomElement &baskets);
void loadNewBasket(const TQString &folderName, const TQDomElement &properties, Basket *parent);
void goToPreviousBasket();
void goToNextBasket();
void foldBasket();
void expandBasket();
void closeAllEditors();
///
void toggleFilterAllBaskets(bool doFilter);
void newFilter();
void newFilterFromFilterBar();
bool isFilteringAllBaskets();
// From main window
void importKNotes();
void importKJots();
void importKnowIt();
void importTuxCards();
void importStickyNotes();
void importTomboy();
void importTextFile();
void backupRestore();
/** Note */
void activatedTagShortcut();
void exportToHTML();
void editNote();
void cutNote();
void copyNote();
void delNote();
void openNote();
void openNoteWith();
void saveNoteAs();
void noteGroup();
void noteUngroup();
void moveOnTop();
void moveOnBottom();
void moveNoteUp();
void moveNoteDown();
void slotSelectAll();
void slotUnselectAll();
void slotInvertSelection();
void slotResetFilter();
void slotColorFromScreen(bool global = false);
void slotColorFromScreenGlobal();
void colorPicked(const TQColor &color);
void colorPickingCanceled();
void slotConvertTexts();
/** Global shortcuts */
void addNoteText();
void addNoteHtml();
void addNoteImage();
void addNoteLink();
void addNoteColor();
/** Passive Popups for Global Actions */
void showPassiveDropped(const TQString &title);
void showPassiveDroppedDelayed(); // Do showPassiveDropped(), but delayed
void showPassiveContent(bool forceShow = false);
void showPassiveContentForced();
void showPassiveImpossible(const TQString &message);
void showPassiveLoading(Basket *basket);
// For GUI :
void setFiltering(bool filtering);
/** Edit */
void undo();
void redo();
void globalPasteInCurrentBasket();
void pasteInCurrentBasket();
void pasteSelInCurrentBasket();
void pasteToBasket(int index, TQClipboard::Mode mode = TQClipboard::Clipboard);
void showHideFilterBar(bool show, bool switchFocus = true);
/** Insert **/
void insertEmpty(int type);
void insertWizard(int type);
void grabScreenshot(bool global = false);
void grabScreenshotGlobal();
void screenshotGrabbed(const TQPixmap &pixmap);
/** Basket */
void askNewBasket();
void askNewBasket(Basket *parent, Basket *pickProperties);
void askNewSubBasket();
void askNewSiblingBasket();
void aboutToHideNewBasketPopup();
void setNewBasketPopup();
void cancelNewBasketPopup();
void propBasket();
void delBasket();
void doBasketDeletion(Basket *basket);
void password();
void saveAsArchive();
void openArchive();
void delayedOpenArchive();
void lockBasket();
void hideOnEscape();
void changedSelectedNotes();
void timeoutTryHide();
void timeoutHide();
public:
static TQString s_fileToOpen;
public slots:
void addWelcomeBaskets();
private slots:
void updateNotesActions();
void slotBasketNumberChanged(int number);
void slotBasketChanged();
void currentBasketChanged();
void isLockedChanged();
void lateInit();
void onFirstShow();
void showGlobalShortcutsSettingsDialog();
public:
TDEAction *m_actEditNote;
TDEAction *m_actOpenNote;
TDEAction *m_actPaste;
TDEAction *m_actGrabScreenshot;
TDEAction *m_actColorPicker;
TDEAction *m_actLockBasket;
TDEAction *m_actPassBasket;
TDEAction *actNewBasket;
TDEAction *actNewSubBasket;
TDEAction *actNewSiblingBasket;
TDEAction *m_actHideWindow;
TDEAction *m_actExportToHtml;
TDEAction *m_actPropBasket;
TDEAction *m_actDelBasket;
TDEToggleAction *m_actFilterAllBaskets;
private:
// Basket actions:
TDEAction *m_actSaveAsArchive;
TDEAction *m_actOpenArchive;
// Notes actions :
TDEAction *m_actOpenNoteWith;
TDEAction *m_actSaveNoteAs;
TDEAction *m_actGroup;
TDEAction *m_actUngroup;
TDEAction *m_actMoveOnTop;
TDEAction *m_actMoveNoteUp;
TDEAction *m_actMoveNoteDown;
TDEAction *m_actMoveOnBottom;
// Edit actions :
TDEAction *m_actUndo;
TDEAction *m_actRedo;
TDEAction *m_actCutNote;
TDEAction *m_actCopyNote;
TDEAction *m_actDelNote;
TDEAction *m_actSelectAll;
TDEAction *m_actUnselectAll;
TDEAction *m_actInvertSelection;
// Insert actions :
// TDEAction *m_actInsertText;
TDEAction *m_actInsertHtml;
TDEAction *m_actInsertLink;
TDEAction *m_actInsertImage;
TDEAction *m_actInsertColor;
TDEAction *m_actImportKMenu;
TDEAction *m_actInsertLauncher;
TDEAction *m_actImportIcon;
TDEAction *m_actLoadFile;
TQPtrList<TDEAction> m_insertActions;
// Basket actions :
TDEToggleAction *m_actShowFilter;
TDEAction *m_actResetFilter;
// Go actions :
TDEAction *m_actPreviousBasket;
TDEAction *m_actNextBasket;
TDEAction *m_actFoldBasket;
TDEAction *m_actExpandBasket;
// TDEAction *m_convertTexts; // FOR_BETA_PURPOSE
TDEAction *actConfigGlobalShortcuts;
void setupActions();
void setupGlobalShortcuts();
DecoratedBasket* currentDecoratedBasket();
public:
Basket* loadBasket(const TQString &folderName); // Public only for class Archive
BasketListViewItem* appendBasket(Basket *basket, TQListViewItem *parentItem); // Public only for class Archive
Basket* basketForFolderName(const TQString &folderName);
TQPopupMenu* popupMenu(const TQString &menuName);
bool isPart();
bool isMainWindowActive();
void showMainWindow();
// dcop calls
virtual void newBasket();
virtual void handleCommandLine();
public slots:
void setCaption(TQString s);
void updateStatusBarHint();
void setSelectionStatus(TQString s);
void setLockStatus(bool isLocked);
void postStatusbarMessage(const TQString&);
void setStatusBarHint(const TQString&);
void setUnsavedStatus(bool isUnsaved);
void setActive(bool active = true);
TDEActionCollection *actionCollection() { return m_actionCollection; };
void populateTagsMenu();
void populateTagsMenu(TDEPopupMenu &menu, Note *referenceNote);
void connectTagsMenu();
void disconnectTagsMenu();
void disconnectTagsMenuDelayed();
protected:
void showEvent(TQShowEvent*);
void hideEvent(TQHideEvent*);
private:
TDEPopupMenu *m_lastOpenedTagsMenu;
private slots:
void slotPressed(TQListViewItem *item, const TQPoint &/*pos*/ = TQPoint(), int /*column*/ = 0);
void needSave(TQListViewItem*);
void slotContextMenu(TDEListView *listView, TQListViewItem *item, const TQPoint &pos);
void slotMouseButtonPressed(int button, TQListViewItem *item, const TQPoint &pos, int column);
void slotShowProperties(TQListViewItem *item, const TQPoint&, int);
void initialize();
signals:
void basketNumberChanged(int number);
void basketChanged();
void setWindowCaption(const TQString &s);
void showPart();
protected:
void enterEvent(TQEvent*);
void leaveEvent(TQEvent*);
private:
TDEListView *m_tree;
TQWidgetStack *m_stack;
bool m_loading;
bool m_newBasketPopup;
bool m_firstShow;
DesktopColorPicker *m_colorPicker;
bool m_colorPickWasShown;
bool m_colorPickWasGlobal;
RegionGrabber *m_regionGrabber;
TQString m_passiveDroppedTitle;
NoteSelection *m_passiveDroppedSelection;
KPassivePopup *m_passivePopup;
static const int c_delayTooltipTime;
TDEActionCollection *m_actionCollection;
KXMLGUIClient *m_guiClient;
BasketStatusBar *m_statusbar;
TQTimer *m_tryHideTimer;
TQTimer *m_hideTimer;
};
#endif // BNPVIEW_H