diff options
Diffstat (limited to 'konqueror/keditbookmarks/listview.h')
-rw-r--r-- | konqueror/keditbookmarks/listview.h | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/konqueror/keditbookmarks/listview.h b/konqueror/keditbookmarks/listview.h new file mode 100644 index 000000000..f693c608f --- /dev/null +++ b/konqueror/keditbookmarks/listview.h @@ -0,0 +1,217 @@ +// kate: space-indent on; indent-width 3; replace-tabs on; +/* This file is part of the KDE project + Copyright (C) 2002-2003 Alexander Kellett <lypanov@kde.org> + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License version 2 as published by the Free Software Foundation. + + 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 __listview_h +#define __listview_h + +#include <assert.h> + +#include <tqlistview.h> +#include <tqmap.h> +#include <tqvaluevector.h> + +#include <tdelocale.h> +#include <kbookmark.h> +#include <tdelistview.h> +#include <kiconloader.h> + +#include "toplevel.h" + +class TQSplitter; +class TDEListViewSearchLine; + +class KEBListViewItem : public TQListViewItem +{ +public: + KEBListViewItem(TQListView *, const KBookmarkGroup &); + KEBListViewItem(KEBListViewItem *, TQListViewItem *); + KEBListViewItem(KEBListViewItem *, TQListViewItem *, const KBookmarkGroup &); + KEBListViewItem(KEBListViewItem *, const KBookmark &); + KEBListViewItem(KEBListViewItem *, TQListViewItem *, const KBookmark &); + + KEBListViewItem(TQListView *, const KBookmark &); + KEBListViewItem(TQListView *, TQListViewItem *, const KBookmark &); + + void nsPut(const TQString &nm); + + void modUpdate(); + + void setOldStatus(const TQString &); + void setTmpStatus(const TQString &); + void restoreStatus(); + + void paintCell(TQPainter *p, const TQColorGroup &cg, int column, int width, int alignment); + void setSelected ( bool s ); + + virtual void setOpen(bool); + + bool isEmptyFolderPadder() const { return m_emptyFolderPadder; } + const KBookmark bookmark() const { return m_bookmark; } + + typedef enum { GreyStyle, BoldStyle, GreyBoldStyle, DefaultStyle } PaintStyle; + + static bool parentSelected(TQListViewItem * item); + +private: + const TQString nsGet() const; + void normalConstruct(const KBookmark &); + + KBookmark m_bookmark; + PaintStyle m_paintStyle; + bool m_emptyFolderPadder; + TQString m_oldStatus; + void greyStyle(TQColorGroup &); + void boldStyle(TQPainter *); +}; + +class KEBListView : public TDEListView +{ + Q_OBJECT +public: + enum { + NameColumn = 0, + UrlColumn = 1, + CommentColumn = 2, + StatusColumn = 3, + AddressColumn = 4 + }; + KEBListView(TQWidget *parent, bool folderList) + : TDEListView(parent), m_folderList(folderList) {} + virtual ~KEBListView() {} + + void init(); + void makeConnections(); + void readonlyFlagInit(bool); + + void loadColumnSetting(); + void saveColumnSetting(); + + void updateByURL(TQString url); + + bool isFolderList() const { return m_folderList; } + + KEBListViewItem* rootItem() const; + +public slots: + virtual void rename(TQListViewItem *item, int c); + void slotMoved(); + void slotContextMenu(TDEListView *, TQListViewItem *, const TQPoint &); + void slotItemRenamed(TQListViewItem *, const TQString &, int); + void slotDoubleClicked(TQListViewItem *, const TQPoint &, int); + void slotDropped(TQDropEvent*, TQListViewItem*, TQListViewItem*); + void slotColumnSizeChanged(int, int, int); + +protected: + virtual bool acceptDrag(TQDropEvent *e) const; + virtual TQDragObject* dragObject(); + +private: + bool m_folderList; + bool m_widthsDirty; +}; + +// DESIGN - make some stuff private if possible +class ListView : public TQObject +{ + Q_OBJECT +public: + // init stuff + void initListViews(); + void updateListViewSetup(bool readOnly); + void connectSignals(); + void setSearchLine(TDEListViewSearchLine * searchline) { m_searchline = searchline; }; + + // selected item stuff + void selected(KEBListViewItem * item, bool s); + + void invalidate(const TQString & address); + void invalidate(TQListViewItem * item); + void fixUpCurrent(const TQString & address); + + KEBListViewItem * firstSelected() const; + TQValueVector<KEBListViewItem *> selectedItemsMap() const; + + TQValueList<TQString> selectedAddresses(); + + // bookmark helpers + TQValueList<KBookmark> itemsToBookmarks(const TQValueVector<KEBListViewItem *> & items) const; + + // bookmark stuff + TQValueList<KBookmark> allBookmarks() const; + TQValueList<KBookmark> selectedBookmarksExpanded() const; + + // address stuff + KEBListViewItem* getItemAtAddress(const TQString &address) const; + TQString userAddress() const; + + // gui stuff - DESIGN - all of it??? + SelcAbilities getSelectionAbilities() const; + + void updateListView(); + void setOpen(bool open); // DESIGN -rename to setAllOpenFlag + void setCurrent(KEBListViewItem *item, bool select); + void renameNextCell(bool dir); + + TQWidget *widget() const { return m_listView; } + void rename(int); + void clearSelection(); + + void updateStatus(TQString url); + + static ListView* self() { return s_self; } + static void createListViews(TQSplitter *parent); + + void handleMoved(KEBListView *); + void handleDropped(KEBListView *, TQDropEvent *, TQListViewItem *, TQListViewItem *); + void handleContextMenu(KEBListView *, TDEListView *, TQListViewItem *, const TQPoint &); + void handleDoubleClicked(KEBListView *, TQListViewItem *, const TQPoint &, int); + void handleItemRenamed(KEBListView *, TQListViewItem *, const TQString &, int); + + static void startRename(int column, KEBListViewItem *item); + + static void deselectAllChildren(KEBListViewItem *item); + + ~ListView(); + +public slots: + void slotBkInfoUpdateListViewItem(); + +private: + void updateTree(); + void selectedBookmarksExpandedHelper(KEBListViewItem * item, TQValueList<KBookmark> & bookmarks) const; + void fillWithGroup(KEBListView *, KBookmarkGroup, KEBListViewItem * = 0); + + ListView(); + + KEBListView *m_listView; + TDEListViewSearchLine * m_searchline; + +// Actually this is a std:set, the bool is ignored + TQMap<KEBListViewItem *, bool> mSelectedItems; + bool m_needToFixUp; + + // statics + static ListView *s_self; + static int s_myrenamecolumn; + static KEBListViewItem *s_myrenameitem; + static TQStringList s_selected_addresses; + static TQString s_current_address; +}; + +#endif |