00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KDIROPERATOR_H_
00022 #define KDIROPERATOR_H_
00023
00024 #include <QtGui/QWidget>
00025 #include <QtCore/QStack>
00026 #include <QtGui/QStyleOptionViewItem>
00027
00028 #include <ktoggleaction.h>
00029 #include <kcompletion.h>
00030 #include <kdirlister.h>
00031 #include <kfileitem.h>
00032 #include <kfile.h>
00033 #include <kfile_export.h>
00034
00035 class QAbstractItemView;
00036 class QModelIndex;
00037 class QProgressBar;
00038
00039 class KAction;
00040 class KActionCollection;
00041 class KActionMenu;
00042 class KDirLister;
00043 class KPreviewWidgetBase;
00044 class KFilePreviewGenerator;
00045
00046 namespace KIO
00047 {
00048 class CopyJob;
00049 class DeleteJob;
00050 }
00051
00101 class KFILE_EXPORT KDirOperator : public QWidget
00102 {
00103 Q_OBJECT
00104
00105 public:
00109 enum ActionType
00110 {
00111 SortActions = 1,
00112 ViewActions = 2,
00113 NavActions = 4,
00114 FileActions = 8,
00115 AllActions = 15
00116 };
00117
00125 explicit KDirOperator(const KUrl& urlName = KUrl(),
00126 QWidget *parent = 0);
00130 virtual ~KDirOperator();
00131
00135 virtual void setShowHiddenFiles(bool s);
00136
00140 bool showHiddenFiles() const;
00141
00145 void close();
00146
00154 void setNameFilter(const QString& filter);
00155
00160 QString nameFilter() const;
00161
00179 void setMimeFilter(const QStringList& mimetypes);
00180
00184 QStringList mimeFilter() const;
00185
00193 void clearFilter();
00194
00198 KUrl url() const;
00199
00205 virtual void setUrl(const KUrl& url, bool clearforward);
00206
00212 void setCurrentItem(const QString& url);
00213
00218 void setCurrentItem(const KFileItem& item);
00219
00226 void setCurrentItems(const QStringList& urls);
00227
00233 void setCurrentItems(const KFileItemList& items);
00234
00242 virtual void setView(QAbstractItemView *view);
00243
00248 QAbstractItemView* view() const;
00249
00254 virtual void setView(KFile::FileView viewKind);
00255
00259 void setSorting(QDir::SortFlags);
00260
00264 QDir::SortFlags sorting() const;
00265
00269 bool isRoot() const;
00270
00274 KDirLister* dirLister() const;
00275
00280 QProgressBar* progressBar() const;
00281
00293 virtual void setMode(KFile::Modes m);
00297 KFile::Modes mode() const;
00298
00304 virtual void setPreviewWidget(KPreviewWidgetBase *w);
00305
00310 KFileItemList selectedItems() const;
00311
00315 bool isSelected(const KFileItem &item) const;
00316
00321 int numDirs() const;
00322
00327 int numFiles() const;
00328
00337 KCompletion* completionObject() const;
00338
00347 KCompletion* dirCompletionObject() const;
00348
00390 KActionCollection* actionCollection() const;
00391
00410 virtual void setViewConfig(KConfigGroup& configGroup);
00411
00412
00413
00414
00415 KConfigGroup* viewConfigGroup() const;
00416
00430 virtual void readConfig(const KConfigGroup& configGroup);
00431
00438 virtual void writeConfig(KConfigGroup& configGroup);
00439
00447 void setOnlyDoubleClickSelectsFiles(bool enable);
00448
00454 bool onlyDoubleClickSelectsFiles() const;
00455
00464 virtual bool mkdir(const QString& directory, bool enterDirectory = true);
00465
00474 virtual KIO::DeleteJob* del(const KFileItemList& items, QWidget *parent = 0,
00475 bool ask = true, bool showProgress = true);
00476
00480 void clearHistory();
00481
00491 virtual void setEnableDirHighlighting(bool enable);
00492
00499 bool dirHighlighting() const;
00500
00505 bool dirOnlyMode() const;
00506
00507 static bool dirOnlyMode(uint mode);
00508
00513 void setupMenu(int whichActions);
00514
00519 virtual void setAcceptDrops(bool b);
00520
00525 virtual void setDropOptions(int options);
00526
00535 virtual KIO::CopyJob* trash(const KFileItemList& items, QWidget *parent,
00536 bool ask = true, bool showProgress = true);
00537
00542 KFilePreviewGenerator *previewGenerator() const;
00543
00550 void setInlinePreviewShown(bool show);
00551
00557 QStyleOptionViewItem::Position decorationPosition() const;
00558
00564 void setDecorationPosition(QStyleOptionViewItem::Position position);
00565
00570 bool isInlinePreviewShown() const;
00571
00576 int iconsZoom() const;
00577
00584 void setIsSaving(bool isSaving);
00585
00591 bool isSaving() const;
00592
00593 protected:
00603 virtual QAbstractItemView* createView(QWidget *parent, KFile::FileView viewKind);
00604
00609 virtual void setDirLister(KDirLister *lister);
00610
00611 virtual void resizeEvent(QResizeEvent *event);
00612
00617 void setupActions();
00618
00623 void updateSortActions();
00624
00629 void updateViewActions();
00630
00635 void setupMenu();
00636
00644 void prepareCompletionObjects();
00645
00651 bool checkPreviewSupport();
00652
00656 virtual void activatedMenu(const KFileItem &item, const QPoint &pos);
00657
00658 virtual void changeEvent(QEvent *event);
00659
00660 virtual bool eventFilter(QObject *watched, QEvent *event);
00661
00662 public Q_SLOTS:
00666 virtual void back();
00667
00671 virtual void forward();
00672
00676 virtual void home();
00677
00681 virtual void cdUp();
00682
00686 void updateDir();
00687
00691 virtual void rereadDir();
00692
00696 virtual void mkdir();
00697
00701 virtual void deleteSelected();
00702
00708 void updateSelectionDependentActions();
00709
00713 QString makeCompletion(const QString&);
00714
00718 QString makeDirCompletion(const QString&);
00719
00729 virtual void trashSelected();
00730
00736 void setIconsZoom(int value);
00737
00738 protected Q_SLOTS:
00743 void resetCursor();
00744
00749 void pathChanged();
00750
00754 virtual void selectDir(const KFileItem &item);
00755
00759 void selectFile(const KFileItem &item);
00760
00764 void highlightFile(const KFileItem &item);
00765
00769 void sortByName();
00770
00774 void sortBySize();
00775
00779 void sortByDate();
00780
00784 void sortByType();
00785
00789 void sortReversed();
00790
00794 void toggleDirsFirst();
00795
00799 void toggleIgnoreCase();
00800
00805 void slotCompletionMatch(const QString &match);
00806
00807 Q_SIGNALS:
00808 void urlEntered(const KUrl&);
00809 void updateInformation(int files, int dirs);
00810 void completion(const QString&);
00811 void finishedLoading();
00812
00818 void viewChanged(QAbstractItemView *newView);
00819
00825 void fileHighlighted(const KFileItem &item);
00826 void dirActivated(const KFileItem &item);
00827 void fileSelected(const KFileItem &item);
00835 void dropped(const KFileItem &item, QDropEvent *event, const KUrl::List &urls);
00836
00845 void contextMenuAboutToShow(const KFileItem& item, QMenu* menu);
00846
00853 void currentIconSizeChanged(int size);
00854
00855 private:
00856 class Private;
00857 Private* const d;
00858
00859 Q_PRIVATE_SLOT( d, void _k_slotDetailedView() )
00860 Q_PRIVATE_SLOT( d, void _k_slotSimpleView() )
00861 Q_PRIVATE_SLOT( d, void _k_slotTreeView() )
00862 Q_PRIVATE_SLOT( d, void _k_slotDetailedTreeView() )
00863 Q_PRIVATE_SLOT( d, void _k_slotToggleHidden(bool) )
00864 Q_PRIVATE_SLOT( d, void _k_togglePreview(bool) )
00865 Q_PRIVATE_SLOT( d, void _k_toggleInlinePreviews(bool) )
00866 Q_PRIVATE_SLOT( d, void _k_slotSortByName() )
00867 Q_PRIVATE_SLOT( d, void _k_slotSortBySize() )
00868 Q_PRIVATE_SLOT( d, void _k_slotSortByDate() )
00869 Q_PRIVATE_SLOT( d, void _k_slotSortByType() )
00870 Q_PRIVATE_SLOT( d, void _k_slotSortReversed(bool) )
00871 Q_PRIVATE_SLOT( d, void _k_slotToggleDirsFirst() )
00872 Q_PRIVATE_SLOT( d, void _k_slotToggleIgnoreCase() )
00873 Q_PRIVATE_SLOT( d, void _k_slotStarted() )
00874 Q_PRIVATE_SLOT( d, void _k_slotProgress(int) )
00875 Q_PRIVATE_SLOT( d, void _k_slotShowProgress() )
00876 Q_PRIVATE_SLOT( d, void _k_slotIOFinished() )
00877 Q_PRIVATE_SLOT( d, void _k_slotCanceled() )
00878 Q_PRIVATE_SLOT( d, void _k_slotRedirected(const KUrl&) )
00879 Q_PRIVATE_SLOT( d, void _k_slotProperties() )
00880 Q_PRIVATE_SLOT( d, void _k_slotPressed(const QModelIndex&) )
00881 Q_PRIVATE_SLOT( d, void _k_slotActivated(const QModelIndex&) )
00882 Q_PRIVATE_SLOT( d, void _k_slotDoubleClicked(const QModelIndex&) )
00883 Q_PRIVATE_SLOT( d, void _k_slotSelectionChanged() )
00884 Q_PRIVATE_SLOT( d, void _k_openContextMenu(const QPoint&) )
00885 Q_PRIVATE_SLOT( d, void _k_triggerPreview(const QModelIndex&) )
00886 Q_PRIVATE_SLOT( d, void _k_showPreview() )
00887 Q_PRIVATE_SLOT( d, void _k_slotSplitterMoved(int, int) )
00888 Q_PRIVATE_SLOT( d, void _k_assureVisibleSelection() )
00889 Q_PRIVATE_SLOT( d, void _k_synchronizeSortingState(int, Qt::SortOrder) )
00890 Q_PRIVATE_SLOT( d, void _k_slotChangeDecorationPosition() )
00891 Q_PRIVATE_SLOT( d, void _k_slotExpandToUrl(const QModelIndex&) )
00892 Q_PRIVATE_SLOT( d, void _k_slotItemsChanged() )
00893 };
00894
00895 #endif