Giter Site home page Giter Site logo

dupop / audio-reminder Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 2.0 2.69 MB

Minimalistic personal reminder management system fully accessible by on-screen-readers

License: MIT License

C# 97.62% PowerShell 0.10% NSIS 2.20% Batchfile 0.08%
accessibility blind-people calendar reminder windows

audio-reminder's People

Contributors

dupop avatar super-ivanka avatar

Stargazers

 avatar

Watchers

 avatar

audio-reminder's Issues

Crash reported during data storage access in release build config

Describe the bug
During attempt to save/delete a reminder in (only in RELEASE build config!) an exception is reported, but the operation is successful.

To Reproduce
Any operation that triggers saving to data storage should be done (e.g. save or delete a reminder).

Expected behavior
N.A.

Screenshots
/

Version
0.2 but was probably present since the program is first deployed through the installer

Additional context
The bug is not present in DEBUG configuration.

Add calender

  • Add view (probably new form) that will display days in month in a grid-like format (5 rows x 7 days).
  • User should be able to move through it by arrows (including wrapping over the end of the row).
  • After selecting each day, number of events and their names should be read (probably by showing a toolbox that narrator will read, check compatibility of this).
  • Similar structure with months in year would be also nice to have.
  • It should be possible to access these events somehow (and do CRUD operations on reminders)
  • Maybe it would be simpler that instead of grid we should have e.g. just one day of month on screen(with dock-fill listbox), and by arrow keys, user can change day that is displayed in the form.

Refine this in more detail later.

Implement reminder cloning

In AudioReminderUI, on screen ReminderListForm we have method CloneAction() that should be implemented. For this a clone dialog will probably be needed.

This feature would need to be analyzed more before implementing if it will be implemented at all.

Adding installer project

Installer should be able to:

  • deploy all components (service, and UI projects) to a folder
  • register service
  • provide uninstalling mechanism for the whole product
  • Installer should also provide some kind of updating functionallity - at least a simple way to manually update the product.

NSIS was used.

Show date in reminders list

Until view of reminders in a calendar is created, the ReminderListForm could be simply improved by adding reminder date to the list.

Create user manual feature

New button should be added to main screen which opens a form with short user manual.
Link to project website (i.e. to here) and necessary legal information could also be placed there.

If the text is long, maybe it would be good to put it into multiple separate non-editable textboxs (probably easier for navigation then label?).

The manual could also be added to project homepage on GitHub.

Choosing reminder sound

When creating a remainder, user should be able to choose a sound of the reminder - probably from a radio button list (with dynamic number of entries).
List should containt value "Default", already selected by default.

Thins can be stored as Noise ID (nullable foreign key) in Reminder Entity
In settings we should have a listbox with sounds, which should probably automatically play when selected. This may be annoying but it is simple accessible by narator.

Properly handle concurrency

Synchornization should be analyzed and situations with data races should be reduced.

Special attention should be given to the Audio Reminder Service because it handles input from webservice, and from scheduler.

Audio Reminder UI should be prevented from running with multiple instances to prevent conflicts with parallel data eiditing. Proposed solution global named Mutex. We could bring to front the already existing instance like many other programs do.

It would be good to analyze interaction of webservice threads vs scheduler threads.

If needed persistence could become async.

Align serilog versions

All projects should have the same, preferably newer version of the Serilog dependency.

Also we should use Rolling File appenders instead of File appender so that we don't get logging overflow.

Adding update system

Product should also provide some kind of updating functionallity - at least a simple way to manually update the product, by giving a link to download a new version.

Add Reminder ID

Reminder name may contain interpunctions or even non ASCII chars, so it is not safe to be used as a command line argument for AudioReminderRinging application. Reminder ID, preferably a GUID string could be used for this purpose.

Don't notify reminder option

Reminder should have an option that it doesn't produce a notification. It then just exists in calender and is ignored by reminder scheduler.

Quiet hours feature can also be considered.

Removing repeat weekly checkbox

Repeat weekly checkbox should be removed because it is redudant and confusing.

Todo:

  1. Remove "Repeat weekly" checkbox and the enclosing groupbox. Keep only the checkedlistbox.
  2. ReminderEntity should be marked as weekly repeatable when at least one day is selected.

Do not disturb mode

It should be possible to pause reminder firing, i.e. to have silent mode or do-no-disturb mode.

Even more important from ad hoc do-no-disturb mode would be to have "silent hours", so that reminders and beeps don't ring at night if computer is still active.

Consider including copyright in files

Copyright and licencing info in every source file are probabyly not needed (according to google), i.e. the licencing file beside them is enough, but they make things more clear for everyone who copies just a part of the project source files.

Handle multiple missed reminders

When started service can detect that multiple reminders were missed.
Show them all together instead of notifying user 15 times in a row.

When I check no days for weekly reminder, it is still handled as a weekly reminder

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Version
Check the program version by clicking Help button in main screen.

Additional context
Add any other context about the problem here.

Adding translations

Translation configs should be implemented to enable non-English user interface in all components of the system.

It should be checked what is the simplest way to accomplish this.

Implement ReminderScheduler

Implement at least one implementation of IReminderScheduler. TImerReminderScheduler is probably simpler than Quartz approach.

ReminderScheduler should be able to trigger ringing and beeps in the moment when they are scheduled.
It should also react to changes in list of reminders, including dismiss of a reminder.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.