Author: axeld Date: 2010-11-14 13:46:32 +0100 (Sun, 14 Nov 2010) New Revision: 39427 Changeset: http://dev.haiku-os.org/changeset/39427 Modified: haiku/trunk/src/apps/showimage/ImageFileNavigator.cpp Log: * The FolderNavigator now allows you to open a folder directly as well. * The TrackerNavigator should do the same in the future, though. Modified: haiku/trunk/src/apps/showimage/ImageFileNavigator.cpp =================================================================== --- haiku/trunk/src/apps/showimage/ImageFileNavigator.cpp 2010-11-14 11:29:50 UTC (rev 39426) +++ haiku/trunk/src/apps/showimage/ImageFileNavigator.cpp 2010-11-14 12:46:32 UTC (rev 39427) @@ -26,9 +26,7 @@ #include <Directory.h> #include <Entry.h> #include <File.h> -//#include <Locker.h> #include <ObjectList.h> -//#include <Path.h> #include <TranslatorRoster.h> #include <tracker_private.h> @@ -76,7 +74,7 @@ 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 @@ // #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 @@ 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); }