Added new improvements

This commit is contained in:
Robert Vokac 2024-02-25 09:11:07 +00:00
parent 21b9b873c4
commit 804a937e82
No known key found for this signature in database
GPG Key ID: 693D30BEE3329055
10 changed files with 285 additions and 23 deletions

View File

@ -6,7 +6,8 @@ Time Calc is a desktop application used to track the remaining time until the en
_Time Calc is written in Java programming language and uses the Swing framework._
![Tux, the Linux mascot](images/screenshot.png)
![Screenshot of application "Time Calc"](images/screenshot.png)
## Usage
### Start of application
@ -82,28 +83,64 @@ If file test.txt exists, then user is not asked for start time and overtime. Ins
### Smileys
Progress in square, circle or batteries is represented also by smileys (only, if the widget is hovered by mouse cursor):
* smileys can be colored or white-black (can be set in configuration)
### Smileys
Progress in square, circle or batteries is represented also by smileys (only, if the widget is hovered by mouse cursor):
Smileys can be colored or white-black (can be set in configuration)
<pre>&#x1f631;</pre> ... face screaming in fear ... less than 6.25%
<pre>&#x1f621;</pre> ... pouting face ... less than 12.5%
<pre>&#x1f620;</pre> ... angry face ... less than 18.75%
<pre>&#x1f62d;</pre> ... loudly crying face ... less than 25%
<pre>&#x1f622;</pre> ... crying face ... less than 31.25%
<pre>&#x1f61e;</pre> ... disappointed face ... less than 37.5%
<pre>&#x1f62b;</pre> ... tired face ... less than 43.75%
<pre>&#x1f628;</pre> ... fearful face ... less than 50%
<pre>&#x1f632;</pre> ... astonished face ... less than 56.25%
<pre>&#x1f626;</pre> ... frowning face with open mouth ... less than 62.5%
<pre>&#x1f60a;</pre> ... smiling face with smiling eyes ... less than 68.75%
<pre>&#x1f603;</pre> ... smiling face with open mouth ... less than 75%
<pre>&#x1f601;</pre> ... grinning face with smiling eyes ... less than 81.25%
<pre>&#x1f60e;</pre> ... smiling face with sunglasses ... less than 87.5%
<pre>&#x1f60d;</pre> ... smiling face with heart-shaped eyes ... less than 93.75%
<pre>&#x1f608;</pre> ... smiling face with horns ... more or equal to 93.75%
* ? ... face screaming in fear ... less than 6.25%
* ? ... pouting face ... less than 12.5%
* ? ... angry face ... less than 18.75%
* ? ... loudly crying face ... less than 25%
* ? ... crying face ... less than 31.25%
* ? ... disappointed face ... less than 37.5%
* ? ... tired face ... less than 43.75%
* ? ... fearful face ... less than 50%
* ? ... astonished face ... less than 56.25%
* ? ... frowning face with open mouth ... less than 62.5%
* ? ... smiling face with smiling eyes ... less than 68.75%
* ? ... smiling face with open mouth ... less than 75%
* ? ... grinning face with smiling eyes ... less than 81.25%
* ? ... smiling face with sunglasses ... less than 87.5%
* ? ... smiling face with heart-shaped eyes ... less than 93.75%
* ? ... smiling face with horns ... more or equal to 93.75%
## Key shortcuts
* UP - Show widgets again, if they were hidden
* DOWN - Hide all widgets and buttons
* H - Show all hide everything
* G - switch between coloured and no-coloured visibility mode
* C - switch between strongly coloured and weakly coloured visibility mode
* V - switch visibility mode NONE and STRONGLY_COLOURED
* SPACE - switch visibility mode: NONE, GREY, WEAKLY_COLOURED, STRONGLY_COLOURED
* F2 - run commands
* R - restart app
* T - enable or disable notifications
* W - open work days window
* A - open activity window
* S - open config window
* P or F1 - open help window
* X - exit application
* J - show random Joke
## Command button
## Todos

View File

@ -50,5 +50,12 @@
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.github.rjeschke</groupId>
<artifactId>txtmark</artifactId>
<version>0.13</version>
</dependency>
</dependencies>
</project>

View File

@ -2,6 +2,7 @@ package org.nanoboot.utils.timecalc.app;
import org.nanoboot.utils.timecalc.entity.Visibility;
import org.nanoboot.utils.timecalc.swing.common.MainWindow;
import org.nanoboot.utils.timecalc.utils.common.Jokes;
import org.nanoboot.utils.timecalc.utils.common.Utils;
import java.awt.event.KeyAdapter;
@ -129,8 +130,15 @@ public class TimeCalcKeyAdapter extends KeyAdapter {
window.openConfigWindow();
}
if (e.getKeyCode() == KeyEvent.VK_J) {
if(timeCalcConfiguration.jokesVisibleProperty.isEnabled()) {
Jokes.showRandom();
}
if (e.getKeyCode() == KeyEvent.VK_P) {
}
if (e.getKeyCode() == KeyEvent.VK_P || e.getKeyCode() == KeyEvent.VK_F1) {
window.openHelpWindow();
}

View File

@ -262,7 +262,6 @@ public class ConfigWindow extends TWindow {
}
});
}
private void addToNextRow(JComponent jComponent) {

View File

@ -1,5 +1,14 @@
package org.nanoboot.utils.timecalc.swing.common;
import org.nanoboot.utils.timecalc.utils.common.ProgressSmiley;
import org.nanoboot.utils.timecalc.utils.common.Utils;
import javax.swing.JEditorPane;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import java.io.File;
import java.io.IOException;
/**
* @author Robert Vokac
* @since 16.02.2024
@ -9,5 +18,32 @@ public class HelpWindow extends TWindow {
public HelpWindow() {
setSize(800, 600);
setTitle("Help");
String helpHtml = "";
try {
String helpMd =
Utils.readTextFromTextResourceInJar("help/Readme.md");
helpHtml = com.github.rjeschke.txtmark.Processor.process(
helpMd);
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Error: " + e.getMessage(),
e.getMessage(), JOptionPane.ERROR_MESSAGE);
return;
}
helpHtml = "<div style=\"font-family:sans;margin-bottom:20px;\">" + helpHtml + "</div>";
System.out.println(helpHtml);
this.setLayout(null);
JScrollPane scrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setBounds(1,1,
getWidth() - SwingUtils.MARGIN,
getHeight() - SwingUtils.MARGIN);
add(scrollPane);
JEditorPane editor = new JEditorPane();
scrollPane.setViewportView(editor);
editor.setContentType("text/html");
editor.setText(helpHtml);
}
}

View File

@ -72,7 +72,7 @@ public class Jokes {
Toaster t = new Toaster();
t.setToasterWidth(800);
t.setToasterHeight(800);
t.setDisplayTime(60000 * 5);
t.setDisplayTime(60000 * 1);
t.setToasterColor(Color.GRAY);
Font font = new Font("sans", Font.PLAIN, 16);
t.setToasterMessageFont(font);

View File

@ -60,4 +60,14 @@ public enum ProgressSmiley {
}
return SMILEY_16;
}
public static void main(String[] args) {
Arrays.stream(values()).forEach(s-> {
s.getCharacter().codePoints().mapToObj(Integer::toHexString).forEach(System.out::println);
});
}
private static String toUnicode(char ch) {
return String.format("\\u%04x", (int) ch);
}
}

View File

@ -47,7 +47,7 @@ public class Utils {
FileOutputStream outputStream;
try {
outputStream = new FileOutputStream(file.getAbsolutePath());
byte[] strToBytes = text.getBytes();
byte[] strToBytes = text.getBytes(StandardCharsets.UTF_8);
outputStream.write(strToBytes);
outputStream.close();

View File

@ -0,0 +1,165 @@
# Time Calc
## Introduction
Time Calc is a desktop application used to track the remaining time until the end of some activity - like working hours.
_Time Calc is written in Java programming language and uses the Swing framework._
![Tux, the Linux mascot](images/screenshot.png)
## Usage
### Start of application
When "Time Calc" is started", user is asked for:
- start time ... like 7:30
- overtime ... like 0:45 ... overtime is optional and the default value is 0:00
### Restart of application
You can restart the app, if you press the **"Restart"** button.
- Then you are asked again for start time and overtime.
### End of application
You can stop the app, if you press the **"Exit"** button or click on the exit window button.
- Then application is stopped.
## Special files
If these files are present, something special happens.
### starttime.txt
This file contains the default start time - used during the previous run of the app.
If file starttime.txt does not exist, then the default start time is 7:00.
### overtime.txt
This file contains the default overtime - used during the previous run of the app.
If file overtime.txt does not exist, then the default overtime is 0:00.
### test.txt
If file test.txt exists, then user is not asked for start time and overtime. Instead, the values in files starttime.txt and overtime.txt are used.
## Features
### 3 Visibility modes
* STRONGLY_COLORED - many colors
* WEAKLY_COLORED - darkened colors
* GRAY - gray colors
* NONE - widgets are hidden
### Widgets
*
#### Analog Clock
* hour hand
* minute hand (can be disabled in configuration)
* second hand (can be disabled in configuration)
* millisecond hand (can be disabled in configuration)
* shows current year, month, day of month and day of week, if analog clock is hovered by mouse cursor and Visibility is STRONGLY_COLORED
* shows yellow highlighted remaining time until end of today working hours, if analog clock is hovered by mouse cursor and Visibility is STRONGLY_COLORED
* hands can be long or shorter (can be set in configuration)
#### Progress Square
* Show graphically day progress
#### Progress Circle
* Show graphically day progress
#### Hour Battery
#### Day Battery
#### Week Battery
#### Month Battery
### Smileys
Progress in square, circle or batteries is represented also by smileys (only, if the widget is hovered by mouse cursor):
Smileys can be colored or white-black (can be set in configuration)
<pre>&#x1f631;</pre> ... face screaming in fear ... less than 6.25%
<pre>&#x1f621;</pre> ... pouting face ... less than 12.5%
<pre>&#x1f620;</pre> ... angry face ... less than 18.75%
<pre>&#x1f62d;</pre> ... loudly crying face ... less than 25%
<pre>&#x1f622;</pre> ... crying face ... less than 31.25%
<pre>&#x1f61e;</pre> ... disappointed face ... less than 37.5%
<pre>&#x1f62b;</pre> ... tired face ... less than 43.75%
<pre>&#x1f628;</pre> ... fearful face ... less than 50%
<pre>&#x1f632;</pre> ... astonished face ... less than 56.25%
<pre>&#x1f626;</pre> ... frowning face with open mouth ... less than 62.5%
<pre>&#x1f60a;</pre> ... smiling face with smiling eyes ... less than 68.75%
<pre>&#x1f603;</pre> ... smiling face with open mouth ... less than 75%
<pre>&#x1f601;</pre> ... grinning face with smiling eyes ... less than 81.25%
<pre>&#x1f60e;</pre> ... smiling face with sunglasses ... less than 87.5%
<pre>&#x1f60d;</pre> ... smiling face with heart-shaped eyes ... less than 93.75%
<pre>&#x1f608;</pre> ... smiling face with horns ... more or equal to 93.75%
## Key shortcuts
* UP - Show widgets again, if they were hidden
* DOWN - Hide all widgets and buttons
* H - Show all hide everything
* G - switch between coloured and no-coloured visibility mode
* C - switch between strongly coloured and weakly coloured visibility mode
* V - switch visibility mode NONE and STRONGLY_COLOURED
* SPACE - switch visibility mode: NONE, GREY, WEAKLY_COLOURED, STRONGLY_COLOURED
* F2 - run commands
* R - restart app
* T - enable or disable notifications
* W - open work days window
* A - open activity window
* S - open config window
* P or F1 - open help window
* X - exit application
* J - show random Joke
## Command button
## Todos
* Config window
* Split to Maven modules
* Junit, Mockito, etc.
* Checkstyle
* Sonarlint
* Sonarqube
* Add SQLite support and store times of arrivals and departures and time of activities
## For Developers
### How to add new property
**Change these places:**
* timecalc-default.conf
* timecalc-template.conf
* TimeCalcProperty
* TimeCalcConfiguration
* ConfigWindow
* Widget class
* MainWindow - bind

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB