mirror of
https://github.com/robertvokac/time-calc.git
synced 2025-03-25 07:27:49 +01:00
Added new improvements
This commit is contained in:
parent
21b9b873c4
commit
804a937e82
75
Readme.md
75
Readme.md
@ -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._
|
_Time Calc is written in Java programming language and uses the Swing framework._
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Start of application
|
### Start of application
|
||||||
@ -82,28 +83,64 @@ If file test.txt exists, then user is not asked for start time and overtime. Ins
|
|||||||
|
|
||||||
### Smileys
|
### Smileys
|
||||||
|
|
||||||
Progress in square, circle or batteries is represented also by smileys (only, if the widget is hovered by mouse cursor):
|
### Smileys
|
||||||
* smileys can be colored or white-black (can be set in configuration)
|
|
||||||
|
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>😱</pre> ... face screaming in fear ... less than 6.25%
|
||||||
|
|
||||||
|
<pre>😡</pre> ... pouting face ... less than 12.5%
|
||||||
|
|
||||||
|
<pre>😠</pre> ... angry face ... less than 18.75%
|
||||||
|
|
||||||
|
<pre>😭</pre> ... loudly crying face ... less than 25%
|
||||||
|
|
||||||
|
<pre>😢</pre> ... crying face ... less than 31.25%
|
||||||
|
|
||||||
|
<pre>😞</pre> ... disappointed face ... less than 37.5%
|
||||||
|
|
||||||
|
<pre>😫</pre> ... tired face ... less than 43.75%
|
||||||
|
|
||||||
|
<pre>😨</pre> ... fearful face ... less than 50%
|
||||||
|
|
||||||
|
<pre>😲</pre> ... astonished face ... less than 56.25%
|
||||||
|
|
||||||
|
<pre>😦</pre> ... frowning face with open mouth ... less than 62.5%
|
||||||
|
|
||||||
|
<pre>😊</pre> ... smiling face with smiling eyes ... less than 68.75%
|
||||||
|
|
||||||
|
<pre>😃</pre> ... smiling face with open mouth ... less than 75%
|
||||||
|
|
||||||
|
<pre>😁</pre> ... grinning face with smiling eyes ... less than 81.25%
|
||||||
|
|
||||||
|
<pre>😎</pre> ... smiling face with sunglasses ... less than 87.5%
|
||||||
|
|
||||||
|
<pre>😍</pre> ... smiling face with heart-shaped eyes ... less than 93.75%
|
||||||
|
|
||||||
|
<pre>😈</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
|
## 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
|
## Command button
|
||||||
|
|
||||||
## Todos
|
## Todos
|
||||||
|
@ -50,5 +50,12 @@
|
|||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.rjeschke</groupId>
|
||||||
|
<artifactId>txtmark</artifactId>
|
||||||
|
<version>0.13</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -2,6 +2,7 @@ package org.nanoboot.utils.timecalc.app;
|
|||||||
|
|
||||||
import org.nanoboot.utils.timecalc.entity.Visibility;
|
import org.nanoboot.utils.timecalc.entity.Visibility;
|
||||||
import org.nanoboot.utils.timecalc.swing.common.MainWindow;
|
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 org.nanoboot.utils.timecalc.utils.common.Utils;
|
||||||
|
|
||||||
import java.awt.event.KeyAdapter;
|
import java.awt.event.KeyAdapter;
|
||||||
@ -129,8 +130,15 @@ public class TimeCalcKeyAdapter extends KeyAdapter {
|
|||||||
window.openConfigWindow();
|
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();
|
window.openHelpWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +262,6 @@ public class ConfigWindow extends TWindow {
|
|||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addToNextRow(JComponent jComponent) {
|
private void addToNextRow(JComponent jComponent) {
|
||||||
|
@ -1,5 +1,14 @@
|
|||||||
package org.nanoboot.utils.timecalc.swing.common;
|
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
|
* @author Robert Vokac
|
||||||
* @since 16.02.2024
|
* @since 16.02.2024
|
||||||
@ -9,5 +18,32 @@ public class HelpWindow extends TWindow {
|
|||||||
public HelpWindow() {
|
public HelpWindow() {
|
||||||
setSize(800, 600);
|
setSize(800, 600);
|
||||||
setTitle("Help");
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ public class Jokes {
|
|||||||
Toaster t = new Toaster();
|
Toaster t = new Toaster();
|
||||||
t.setToasterWidth(800);
|
t.setToasterWidth(800);
|
||||||
t.setToasterHeight(800);
|
t.setToasterHeight(800);
|
||||||
t.setDisplayTime(60000 * 5);
|
t.setDisplayTime(60000 * 1);
|
||||||
t.setToasterColor(Color.GRAY);
|
t.setToasterColor(Color.GRAY);
|
||||||
Font font = new Font("sans", Font.PLAIN, 16);
|
Font font = new Font("sans", Font.PLAIN, 16);
|
||||||
t.setToasterMessageFont(font);
|
t.setToasterMessageFont(font);
|
||||||
|
@ -60,4 +60,14 @@ public enum ProgressSmiley {
|
|||||||
}
|
}
|
||||||
return SMILEY_16;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class Utils {
|
|||||||
FileOutputStream outputStream;
|
FileOutputStream outputStream;
|
||||||
try {
|
try {
|
||||||
outputStream = new FileOutputStream(file.getAbsolutePath());
|
outputStream = new FileOutputStream(file.getAbsolutePath());
|
||||||
byte[] strToBytes = text.getBytes();
|
byte[] strToBytes = text.getBytes(StandardCharsets.UTF_8);
|
||||||
outputStream.write(strToBytes);
|
outputStream.write(strToBytes);
|
||||||
|
|
||||||
outputStream.close();
|
outputStream.close();
|
||||||
|
165
modules/time-calc-app/src/main/resources/help/Readme.md
Normal file
165
modules/time-calc-app/src/main/resources/help/Readme.md
Normal 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._
|
||||||
|
|
||||||
|

|
||||||
|
## 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>😱</pre> ... face screaming in fear ... less than 6.25%
|
||||||
|
|
||||||
|
<pre>😡</pre> ... pouting face ... less than 12.5%
|
||||||
|
|
||||||
|
<pre>😠</pre> ... angry face ... less than 18.75%
|
||||||
|
|
||||||
|
<pre>😭</pre> ... loudly crying face ... less than 25%
|
||||||
|
|
||||||
|
<pre>😢</pre> ... crying face ... less than 31.25%
|
||||||
|
|
||||||
|
<pre>😞</pre> ... disappointed face ... less than 37.5%
|
||||||
|
|
||||||
|
<pre>😫</pre> ... tired face ... less than 43.75%
|
||||||
|
|
||||||
|
<pre>😨</pre> ... fearful face ... less than 50%
|
||||||
|
|
||||||
|
<pre>😲</pre> ... astonished face ... less than 56.25%
|
||||||
|
|
||||||
|
<pre>😦</pre> ... frowning face with open mouth ... less than 62.5%
|
||||||
|
|
||||||
|
<pre>😊</pre> ... smiling face with smiling eyes ... less than 68.75%
|
||||||
|
|
||||||
|
<pre>😃</pre> ... smiling face with open mouth ... less than 75%
|
||||||
|
|
||||||
|
<pre>😁</pre> ... grinning face with smiling eyes ... less than 81.25%
|
||||||
|
|
||||||
|
<pre>😎</pre> ... smiling face with sunglasses ... less than 87.5%
|
||||||
|
|
||||||
|
<pre>😍</pre> ... smiling face with heart-shaped eyes ... less than 93.75%
|
||||||
|
|
||||||
|
<pre>😈</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
|
||||||
|
|
BIN
modules/time-calc-app/src/main/resources/images/screenshot.png
Normal file
BIN
modules/time-calc-app/src/main/resources/images/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Loading…
x
Reference in New Issue
Block a user