* 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
This commit is contained in:
Axel Dörfler
2010-11-14 12:46:32 +00:00
parent ee87203426
commit 056d4c2e1e
+17 -9
View File
@@ -26,9 +26,7 @@
#include <Directory.h> #include <Directory.h>
#include <Entry.h> #include <Entry.h>
#include <File.h> #include <File.h>
//#include <Locker.h>
#include <ObjectList.h> #include <ObjectList.h>
//#include <Path.h>
#include <TranslatorRoster.h> #include <TranslatorRoster.h>
#include <tracker_private.h> #include <tracker_private.h>
@@ -76,7 +74,7 @@ private:
class FolderNavigator : public Navigator { class FolderNavigator : public Navigator {
public: public:
FolderNavigator(const entry_ref& ref); FolderNavigator(entry_ref& ref);
virtual ~FolderNavigator(); virtual ~FolderNavigator();
virtual bool FindNextImage(const entry_ref& currentRef, virtual bool FindNextImage(const entry_ref& currentRef,
@@ -223,18 +221,27 @@ TrackerNavigator::UpdateSelection(const entry_ref& ref)
// #pragma mark - // #pragma mark -
FolderNavigator::FolderNavigator(const entry_ref& ref) FolderNavigator::FolderNavigator(entry_ref& ref)
: :
fEntries(true) fEntries(true)
{ {
node_ref nodeRef; BEntry entry(&ref);
nodeRef.device = ref.device; if (entry.IsDirectory())
nodeRef.node = ref.directory; fFolder.SetTo(&ref);
else {
node_ref nodeRef;
nodeRef.device = ref.device;
nodeRef.node = ref.directory;
fFolder.SetTo(&nodeRef);
}
fFolder.SetTo(&nodeRef);
_BuildEntryList(); _BuildEntryList();
// TODO: monitor the directory for changes, sort it naturally // 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), fDocumentIndex(1),
fDocumentCount(1) fDocumentCount(1)
{ {
// TODO: allow selecting a folder from Tracker as well!
if (trackerMessenger.IsValid()) if (trackerMessenger.IsValid())
fNavigator = new TrackerNavigator(trackerMessenger); fNavigator = new TrackerNavigator(trackerMessenger);
else else
fNavigator = new FolderNavigator(ref); fNavigator = new FolderNavigator(fCurrentRef);
} }