shoefiti

Check-in [cb38509564]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Basics of App now working

* Not displaying message bodies because need to parse and sanitize first
* Doesn't redraw anything if you select a different month/list, etc
* I.e. very rough around the edges.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: cb38509564588cf8489dbe363db526c90006dd9c1564c04273b749fb2d621a23
User & Date: i5ivem@gmail.com 2010-03-23 17:25:17
Context
2010-03-24
14:46
First attempt at UI layout, email bodies load

* Laying out application as desired, with scrolling message pane
* Message bodies are now returned, have to check for plain text messages
and mutlipart messages. check-in: 23acb16814 user: i5ivem@gmail.com tags: trunk

2010-03-23
17:25
Basics of App now working

* Not displaying message bodies because need to parse and sanitize first
* Doesn't redraw anything if you select a different month/list, etc
* I.e. very rough around the edges. check-in: cb38509564 user: i5ivem@gmail.com tags: trunk

14:28
Initial commit of app check-in: 698b55c0f7 user: i5ivem@gmail.com tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to shoefiti.rb.

1
2

3
4

5
6
7
8
9

10



11
12
13








14
15
16
17
18
19
20
21
22
23
24
25
26
27


28
29
30
31
32
33
34
35
36









37

38
39
40

41
42
43
44
45
46
47

48


49
50






51

























52
53
54
require 'rubygems'
require 'date'


Shoes.app do

	URL = "http://librelist.com/archives/"
	@listurl = ""
	def getlist
		download(URL+@listurl) do |list|
			@lists = eval(list.response.body)[1]

			debug(@lists)



			list_box :items => @lists do |list|
				@listurl += list.text
				getlist			








			end		
		end
	end

	getlist

	#Need to draw a calendar
	#
	#Date.today.wday gets day of the week. 0 is Sunday, etc
	
	#So have a month and a year
	def drawcalendar
	off=Date.new(2010, 03, 01).wday #Offset
	mdays=(Date.new(2010, 12, 31) << (12-03)).day #Days in the month


	rows=((mdays+off).to_f/7.0).ceil #Number of rows in calendar
		days = %w{Su Mo Tu We Th Fr Sa}
		days.each do |column|
			i = days.index(column)
			row = 0
			stack :left => i*50, :top => 0 do
				para column
				until row == rows do
					if (1..mdays) === i-off+7*row 









						para i-off+7*row

					else 
						para ""
					end#But only want to draw if greater than zero

					row += 1
				end
			end
		
			
			
		end

	


	end







	drawcalendar



























end


>

<
>





>

>
>
>
|
|
|
>
>
>
>
>
>
>
>






<
|
<
<
<
|
<
<
>
>
|




|


|
>
>
>
>
>
>
>
>
>
|
>


<
>



<
<
<

>
|
>
>

|
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|


1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

33



34


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

59
60
61
62



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
require 'rubygems'
require 'date'
require 'json'


Shoes.app :title => "Shoefiti - Librelist Browser" do
	URL = "http://librelist.com/archives/"
	@listurl = ""
	def getlist
		download(URL+@listurl) do |list|
			@lists = eval(list.response.body)[1]
			@place = eval(list.response.body)[0].split("/")
			debug(@lists)
			debug(@place)
			stack do
				if @place.length < 5 #Need to break out of this once we get to the list of days. Odd array length due to split on /
					list_box :items => @lists do |list|
						@listurl += list.text
						getlist
					end
				else
							#debug("Pop1")
							#debug(@place.pop)
							#debug("Pop2")
							#debug(@place.pop)
							drawcalendar(@place.pop.to_i, @place.pop.to_i, @place.pop.to_s, @lists)	#pass @lists?	
				end	
			end		
		end
	end

	getlist






	def drawcalendar(month, year, list, maildays)


	off=Date.new(year, month, 01).wday-1 #Offset, not sure wh yI need the -1 here, but I do.
	mdays=(Date.new(year, 12, 31) << (12-month)).day #Days in the month
	rows=((mdays+off+1).to_f/7.0).ceil #Number of rows in calendar, plus 1 to compensate for -1 above. Have confused myself
		days = %w{Su Mo Tu We Th Fr Sa}
		days.each do |column|
			i = days.index(column)
			row = 0
			stack :left => i*50, :top => 100 do
				para column
				until row == rows do
					calday = i-off+7*row
					if (1..mdays) === calday #Only want to draw if greater than zero and less than max days
						if calday.to_s.length == 1
							caldaystr = "0"+calday.to_s
						else
							caldaystr = calday.to_s
						end
						if maildays.include?(caldaystr+"/") #deal with "0" in front of single digits
							para make_date_link(list, year, month, calday)
						else
							para calday
						end
					else 
						para ""

					end#
					row += 1
				end
			end



		end
	end

	def make_date_link(list, year, month, day) #http://thread.gmane.org/gmane.comp.lib.shoes/4042/focus=4044
		link(day){getmails(list, year, month, day)}
	end
	
	def getmails(list, year, month, day)
		#need to fix months and days here, ie 0 on front.
		if month.to_s.length == 1
			month = "0"+month.to_s
		else
			month = month.to_s
		end
		if day.to_s.length == 1
			day = "0"+day.to_s
		else
			day = day.to_s
		end
		url = "http://librelist.com/archives/"+list+"/"+year.to_s+"/"+month.to_s+"/"+day.to_s+"/json/"
		debug(url)
		download(url) do |data|
			emails = eval(data.response.body)[1]
			debug(emails.length)
			emails.each do |message|
				download(url+message) do |data|
					js = JSON.parse(data.response.body)
					stack :margin => 10, :width => 400 do
							border black, :strokewidth => 3, :curve => 5 
							inscription js["headers"]["Date"]
							inscription js["headers"]["From"]
							inscription js["headers"]["Subject"]
					end
						#para js["body"] #Need to sanatize this a bit for output
				end
			end
				# Where to store all these? Or just draw straight away?
		end
	end
		

end