From 056d4c2e1e3eb3655b8de4dd6e362e7046822556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 14 Nov 2010 12:46:32 +0000 Subject: [PATCH] * The FolderNavigator now allows you to open a folder directly as well. * The TrackerNavigator should do the same in the future, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39427 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/showimage/ImageFileNavigator.cpp | 26 +++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/apps/showimage/ImageFileNavigator.cpp b/src/apps/showimage/ImageFileNavigator.cpp index e9d13ac313..b1e697744d 100644 --- a/src/apps/showimage/ImageFileNavigator.cpp +++ b/src/apps/showimage/ImageFileNavigator.cpp @@ -26,9 +26,7 @@ #include #include #include -//#include #include -//#include #include #include @@ -76,7 +74,7 @@ private: class FolderNavigator : public Navigator { public: - FolderNavigator(const entry_ref& ref); + FolderNavigator(entry_ref& ref); virtual ~FolderNavigator(); virtual bool FindNextImage(const entry_ref& currentRef, @@ -223,18 +221,27 @@ TrackerNavigator::UpdateSelection(const entry_ref& ref) // #pragma mark - -FolderNavigator::FolderNavigator(const entry_ref& ref) +FolderNavigator::FolderNavigator(entry_ref& ref) : fEntries(true) { - node_ref nodeRef; - nodeRef.device = ref.device; - nodeRef.node = ref.directory; + BEntry entry(&ref); + if (entry.IsDirectory()) + fFolder.SetTo(&ref); + else { + node_ref nodeRef; + nodeRef.device = ref.device; + nodeRef.node = ref.directory; + + fFolder.SetTo(&nodeRef); + } - fFolder.SetTo(&nodeRef); _BuildEntryList(); // TODO: monitor the directory for changes, sort it naturally + + if (entry.IsDirectory()) + FindNextImage(ref, ref, false, true); } @@ -321,10 +328,11 @@ ImageFileNavigator::ImageFileNavigator(const entry_ref& ref, fDocumentIndex(1), fDocumentCount(1) { + // TODO: allow selecting a folder from Tracker as well! if (trackerMessenger.IsValid()) fNavigator = new TrackerNavigator(trackerMessenger); else - fNavigator = new FolderNavigator(ref); + fNavigator = new FolderNavigator(fCurrentRef); }