summary refs log tree commit diff stats
path: root/ranger/directory.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ranger/directory.rb')
-rw-r--r--ranger/directory.rb66
1 files changed, 66 insertions, 0 deletions
diff --git a/ranger/directory.rb b/ranger/directory.rb
new file mode 100644
index 00000000..5c6e84c1
--- /dev/null
+++ b/ranger/directory.rb
@@ -0,0 +1,66 @@
+# A Class that contains data about directories
+class Directory
+	class LoadStatus
+		# @n contains a three bit number: x3x2x1
+		# x1:
+		# 0 = not scheduled
+		# 1 = scheduled
+		# x3x2:
+		# 00 = nothing loaded
+		# 01 = got the list of files
+		# 10 = <undefined>
+		# 11 = got the list of files and entry objects
+		def initialize(n = 0)
+			@n = 0
+		end
+
+		def got_files?
+			# is bit 2 nd 3 == 01
+			return n & 2 == 2
+		end
+
+		def scheduled?
+			# is the first bit 1?
+			return n & 1 == 1
+		end
+
+		def got_objects?
+			return n & 4 == 4
+		end
+		attr_accessor :n
+	end
+
+	def initialize(path)
+		@path = path
+		@status = LoadStatus.new(0)
+		@files = []
+		@sort_time = nil
+		@mtime = nil
+#		@width = 1000
+		@read = false
+		@free_space = nil
+		@empty = true
+		@scheduled = false
+	end
+
+	# {{{ Trivial
+	def inspect
+		return "<Directory: #{path}>"
+	end
+	alias to_s inspect
+
+	def size
+		return @files.size
+	end
+
+	def not_loaded?
+		return @level == 0
+	end
+	def file_list_loaded?
+		return @level >= 1
+	end
+	def ready?
+		return @level >= 2
+	end
+	# }}}
+end