Skip to content

Commit f7369d3

Browse files
committed
Updated ReadMe.md
1 parent 5d134e9 commit f7369d3

File tree

3 files changed

+94
-37
lines changed

3 files changed

+94
-37
lines changed

.gitattributes

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
###############################################################################
2+
# Set default behavior to automatically normalize line endings.
3+
###############################################################################
4+
* text=auto
5+
6+
###############################################################################
7+
# Set default behavior for command prompt diff.
8+
#
9+
# This is need for earlier builds of msysgit that does not have it on by
10+
# default for csharp files.
11+
# Note: This is only used by command line
12+
###############################################################################
13+
#*.cs diff=csharp
14+
15+
###############################################################################
16+
# Set the merge driver for project and solution files
17+
#
18+
# Merging from the command prompt will add diff markers to the files if there
19+
# are conflicts (Merging from VS is not affected by the settings below, in VS
20+
# the diff markers are never inserted). Diff markers may cause the following
21+
# file extensions to fail to load in VS. An alternative would be to treat
22+
# these files as binary and thus will always conflict and require user
23+
# intervention with every merge. To do so, just uncomment the entries below
24+
###############################################################################
25+
#*.sln merge=binary
26+
#*.csproj merge=binary
27+
#*.vbproj merge=binary
28+
#*.vcxproj merge=binary
29+
#*.vcproj merge=binary
30+
#*.dbproj merge=binary
31+
#*.fsproj merge=binary
32+
#*.lsproj merge=binary
33+
#*.wixproj merge=binary
34+
#*.modelproj merge=binary
35+
#*.sqlproj merge=binary
36+
#*.wwaproj merge=binary
37+
38+
###############################################################################
39+
# behavior for image files
40+
#
41+
# image files are treated as binary by default.
42+
###############################################################################
43+
#*.jpg binary
44+
#*.png binary
45+
#*.gif binary
46+
47+
###############################################################################
48+
# diff behavior for common document formats
49+
#
50+
# Convert binary document formats to text before diffing them. This feature
51+
# is only available from the command line. Turn it on by uncommenting the
52+
# entries below.
53+
###############################################################################
54+
#*.doc diff=astextplain
55+
#*.DOC diff=astextplain
56+
#*.docx diff=astextplain
57+
#*.DOCX diff=astextplain
58+
#*.dot diff=astextplain
59+
#*.DOT diff=astextplain
60+
#*.pdf diff=astextplain
61+
#*.PDF diff=astextplain
62+
#*.rtf diff=astextplain
63+
#*.RTF diff=astextplain

.gitignore

+5-32
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
## Ignore Visual Studio temporary files, build results, and
22
## files generated by popular Visual Studio add-ons.
3-
##
4-
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
53

64
# User-specific files
75
*.suo
@@ -42,11 +40,10 @@ TestResult.xml
4240
[Rr]eleasePS/
4341
dlldata.c
4442

45-
# .NET Core
43+
# DNX
4644
project.lock.json
4745
project.fragment.lock.json
4846
artifacts/
49-
**/Properties/launchSettings.json
5047

5148
*_i.c
5249
*_p.c
@@ -113,10 +110,6 @@ _TeamCity*
113110
# DotCover is a Code Coverage Tool
114111
*.dotCover
115112

116-
# Visual Studio code coverage results
117-
*.coverage
118-
*.coveragexml
119-
120113
# NCrunch
121114
_NCrunch_*
122115
.*crunch*.local.xml
@@ -150,7 +143,7 @@ publish/
150143
*.azurePubxml
151144
# TODO: Comment the next line if you want to checkin your web deploy settings
152145
# but database connection strings (with potential passwords) will be unencrypted
153-
*.pubxml
146+
#*.pubxml
154147
*.publishproj
155148

156149
# Microsoft Azure Web App publish settings. Comment the next line if you want to
@@ -166,7 +159,7 @@ PublishScripts/
166159
!**/packages/build/
167160
# Uncomment if necessary however generally it will be regenerated when needed
168161
#!**/packages/repositories.config
169-
# NuGet v3's project.json files produces more ignorable files
162+
# NuGet v3's project.json files produces more ignoreable files
170163
*.nuget.props
171164
*.nuget.targets
172165

@@ -199,6 +192,7 @@ ClientBin/
199192
*.jfm
200193
*.pfx
201194
*.publishsettings
195+
node_modules/
202196
orleans.codegen.cs
203197

204198
# Since there are multiple workflows, uncomment next line to ignore bower_components
@@ -219,7 +213,6 @@ UpgradeLog*.htm
219213
# SQL Server files
220214
*.mdf
221215
*.ldf
222-
*.ndf
223216

224217
# Business Intelligence projects
225218
*.rdl.data
@@ -234,20 +227,13 @@ FakesAssemblies/
234227

235228
# Node.js Tools for Visual Studio
236229
.ntvs_analysis.dat
237-
node_modules/
238-
239-
# Typescript v1 declaration files
240-
typings/
241230

242231
# Visual Studio 6 build log
243232
*.plg
244233

245234
# Visual Studio 6 workspace options file
246235
*.opt
247236

248-
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
249-
*.vbw
250-
251237
# Visual Studio LightSwitch build output
252238
**/*.HTMLClient/GeneratedArtifacts
253239
**/*.DesktopClient/GeneratedArtifacts
@@ -272,17 +258,4 @@ paket-files/
272258

273259
# Python Tools for Visual Studio (PTVS)
274260
__pycache__/
275-
*.pyc
276-
277-
# Cake - Uncomment if you are using it
278-
# tools/**
279-
# !tools/packages.config
280-
281-
# Telerik's JustMock configuration file
282-
*.jmconfig
283-
284-
# BizTalk build output
285-
*.btp.cs
286-
*.btm.cs
287-
*.odx.cs
288-
*.xsd.cs
261+
*.pyc

ReadMe.md

+26-5
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,22 @@ Using a reactive-first approach, we'll design and implement a client-server chat
5858
2. In-proc service
5959

6060
#### Client Design
61+
##### Startup
62+
1. Start the GUI in the following state:
63+
1. Server URL and Connect button are enabled.
64+
2. Chat GUI elements are disabled (including the message list and the Send button).
65+
2. Load the user's settings.
66+
3. If the last user name was saved, prepopulate the user name textbox.
67+
4. If the last service URL was saved, prepopulate the service URL textbox.
68+
5. If enabled, verify that the user's configured sound is available and it can be played.
69+
1. If it cannot, display a warning to the user.
70+
6171
##### Connecting to the Server
6272
1. The user can set their "user name" before connecting.
6373
1. The user name from their last session is displayed by default.
6474
2. The user must enter a service URL and click a Connect button.
65-
1. When the Connect button is pressed:
66-
1. Disable it.
75+
1. When the Connect button is pressed, and the user name is valid, and the service URL is a valid URI:
76+
1. Disable the Connect button.
6777
1. Display a waiting animation and a Cancel button.
6878
1. Try connecting to the specified URL.
6979
1. If the connection cannot be established, or if the service URL is invalid:
@@ -81,20 +91,31 @@ Using a reactive-first approach, we'll design and implement a client-server chat
8191
1. If the server rejects the password:
8292
1. Enable the Connect button. (goto #2)
8393
1. Otherwise, change the Connect button into a Disconnect button and enable it.
94+
1. Enable the chat GUI so that messages may be sent and received.
95+
2. Save the user name and service URL in the user's settings.
8496
1. When the Disconnect button is pressed:
8597
1. Disable it.
8698
1. Try disconnecting from the specified URL.
8799
1. If the program fails to disconnect gracefully, then log any errors and continue.
88100
1. Change the Disconnect button into a Connect button and enable it. (goto #2)
101+
1. Disable the chat GUI to prevent messages from being sent or received.
89102

90103
##### Receiving Messages
91-
1. TODO
104+
1. When a message is received:
105+
1. If the user's status is not "busy" and the message matches the user's current filter criteria (if any):
106+
1. Append the message to the message list.
107+
1. Include the date and/or time based on the user's current settings.
108+
1. Render the message in the font, size and color received with the message. If none received, use defaults.
109+
1. If the option to play a sound is enabled, and the chat window is not currently in focus:
110+
1. Play the user's configured sound.
92111

93112
##### Sending Messages
94-
1. TODO
113+
1. When the 'Enter' key is pressed or the 'Send' button is clicked:
114+
1. If the message is not entirely whitespace:
115+
1. Send the message to the server.
116+
1. Include the current font, size and color with the message. Omit them if they are currently the defaults.
95117

96118
#### Server Design
97-
98119
##### Startup and Configuration
99120
1. TODO
100121

0 commit comments

Comments
 (0)