added features for editing, tasks and stop funktion

This commit is contained in:
Kuro 2025-03-22 22:25:58 +01:00
parent 2acfee90ca
commit 112b1a968c
8 changed files with 154 additions and 64 deletions

View File

@ -0,0 +1,38 @@
using Microsoft.Data.Sqlite;
using System.Globalization;
namespace TimeTable.controll {
internal static class SqliteTaskCommands {
public static string select = "select uid, lfdr, start, end, text, time from tasks";
private static CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("de-de");
private static string insertPrefix = "insert into tasks (";
private static string insertIntermediate = ") values(";
private static string insertPostfix = ");";
private static string updatePrefix = "update tasks set ";
private static string updateIntermediate = " where uid = ";
private static string updatePostfix = ";";
public static void CreateTableIfNotExists(string sqlConnection) {
SqliteConnection con = new SqliteConnection(sqlConnection);
con.Open();
SqliteCommand sqliteCmd = con.CreateCommand();
sqliteCmd.CommandText = @"SELECT name FROM sqlite_master WHERE type='table' AND name='tasks';";
var name = sqliteCmd.ExecuteScalar();
if (name != null && name.ToString() == "tasks") {
return;
}
var cols = "lfdr INTEGER PRIMARY KEY AUTOINCREMENT,";
string[] columns = new string[5] { "start", "end", "text", "time", "uid" };
cols += string.Join(" VARCHAR,", columns);
cols = cols + " Varchar";
sqliteCmd.CommandText = "CREATE TABLE tasks (" + cols + ")";
con.Open();
sqliteCmd.ExecuteNonQuery();
con.Close();
}
}
}

View File

@ -3,7 +3,7 @@ using System.Globalization;
using TimeTable.model;
namespace TimeTable.controll {
internal static class SqliteCommands {
internal static class SqliteTimeTableCommands {
public static string select = "select uid, start, end, text, time from timetable";
private static CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("de-de");
@ -149,7 +149,8 @@ namespace TimeTable.controll {
if (name != null && name.ToString() == "timetable") {
return;
}
var cols = string.Join(" VARCHAR,", "uid, start, end, text, time");
string[] columns = new string[5] { "start", "end", "text", "time", "uid" };
var cols = string.Join(" VARCHAR,", columns);
cols = cols + " Varchar";
sqliteCmd.CommandText = "CREATE TABLE timetable (" + cols + ")";
con.Open();

View File

@ -78,11 +78,11 @@ namespace TimeTable.view {
pictureBox1.TabIndex = 3;
pictureBox1.TabStop = false;
//
// label1
// uidText
//
label1.AutoSize = true;
label1.Location = new Point(130, 38);
label1.Name = "label1";
label1.Name = "uidText";
label1.Size = new Size(267, 20);
label1.TabIndex = 4;
label1.Text = "What should happen to the Time Item?";

View File

@ -27,6 +27,9 @@ namespace TimeTable {
private void InitializeComponent() {
components = new System.ComponentModel.Container();
btnPanel = new Panel();
uidLbl = new Label();
uidText = new Label();
btnDelete = new Button();
btnTaskStop = new Button();
btnTaskStart = new Button();
btnStopResume = new Button();
@ -36,16 +39,19 @@ namespace TimeTable {
bindingSource = new BindingSource(components);
con = new SQLiteConnection();
dataAdapter = new SQLiteDataAdapter();
btnDelete = new Button();
taskTableGridView = new DataGridView();
btnPanel.SuspendLayout();
tableView.SuspendLayout();
((System.ComponentModel.ISupportInitialize)taskTimeGridView).BeginInit();
((System.ComponentModel.ISupportInitialize)bindingSource).BeginInit();
((System.ComponentModel.ISupportInitialize)taskTableGridView).BeginInit();
SuspendLayout();
//
// btnPanel
//
btnPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
btnPanel.Controls.Add(uidLbl);
btnPanel.Controls.Add(uidText);
btnPanel.Controls.Add(btnDelete);
btnPanel.Controls.Add(btnTaskStop);
btnPanel.Controls.Add(btnTaskStart);
@ -57,6 +63,34 @@ namespace TimeTable {
btnPanel.Size = new Size(233, 378);
btnPanel.TabIndex = 0;
//
// uidLbl
//
uidLbl.AutoSize = true;
uidLbl.Location = new Point(3, 152);
uidLbl.Name = "uidLbl";
uidLbl.Size = new Size(42, 20);
uidLbl.TabIndex = 2;
uidLbl.Text = "none";
//
// uidText
//
uidText.AutoSize = true;
uidText.Location = new Point(3, 122);
uidText.Name = "uidText";
uidText.Size = new Size(95, 20);
uidText.TabIndex = 5;
uidText.Text = "Selected UID";
//
// btnDelete
//
btnDelete.Location = new Point(3, 73);
btnDelete.Name = "btnDelete";
btnDelete.Size = new Size(94, 26);
btnDelete.TabIndex = 4;
btnDelete.Text = "Delete";
btnDelete.UseVisualStyleBackColor = true;
btnDelete.Click += DeleteRow;
//
// btnTaskStop
//
btnTaskStop.Location = new Point(103, 38);
@ -82,7 +116,7 @@ namespace TimeTable {
btnStopResume.Name = "btnStopResume";
btnStopResume.Size = new Size(114, 29);
btnStopResume.TabIndex = 1;
btnStopResume.Text = "Stop/Resume";
btnStopResume.Text = "Stop";
btnStopResume.UseVisualStyleBackColor = true;
//
// btnStart
@ -98,6 +132,7 @@ namespace TimeTable {
// tableView
//
tableView.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableView.Controls.Add(taskTableGridView);
tableView.Controls.Add(taskTimeGridView);
tableView.Dock = DockStyle.Fill;
tableView.Location = new Point(233, 0);
@ -107,7 +142,7 @@ namespace TimeTable {
//
// taskTimeGridView
//
taskTimeGridView.AutoGenerateColumns = true;
taskTimeGridView.AutoGenerateColumns = false;
taskTimeGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
taskTimeGridView.DataSource = bindingSource;
taskTimeGridView.Dock = DockStyle.Fill;
@ -117,12 +152,12 @@ namespace TimeTable {
taskTimeGridView.RowHeadersWidth = 51;
taskTimeGridView.Size = new Size(631, 378);
taskTimeGridView.TabIndex = 0;
taskTimeGridView.CellClick += TimeTableClick;
taskTimeGridView.CellDoubleClick += TimetableEditDoubleClick;
//
// con
//
con.BusyTimeout = 0;
con.ConnectionString = sqlConnectionString;
con.DefaultDbType = null;
con.DefaultMaximumSleepTime = 150;
con.DefaultTimeout = 30;
@ -137,17 +172,17 @@ namespace TimeTable {
con.TraceFlags = SQLiteTraceFlags.SQLITE_TRACE_NONE;
con.VfsName = null;
con.WaitTimeout = 30000;
bindingSource.DataSource = createDataTable();
OtherTasks();
//
// btnDelete
// taskTableGridView
//
btnDelete.Location = new Point(8, 78);
btnDelete.Name = "btnDelete";
btnDelete.Size = new Size(94, 26);
btnDelete.TabIndex = 4;
btnDelete.Text = "Delete";
btnDelete.UseVisualStyleBackColor = true;
btnDelete.Click += DeleteRow;
taskTableGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
taskTableGridView.Dock = DockStyle.Bottom;
taskTableGridView.Location = new Point(0, 232);
taskTableGridView.Name = "taskTableGridView";
taskTableGridView.RowHeadersWidth = 51;
taskTableGridView.Size = new Size(631, 146);
taskTableGridView.TabIndex = 1;
//
// Main
//
@ -159,13 +194,22 @@ namespace TimeTable {
Name = "Main";
Text = "TimeTable";
btnPanel.ResumeLayout(false);
btnPanel.PerformLayout();
tableView.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)taskTimeGridView).EndInit();
((System.ComponentModel.ISupportInitialize)bindingSource).EndInit();
((System.ComponentModel.ISupportInitialize)taskTableGridView).EndInit();
ResumeLayout(false);
}
private DataTable createDataTable() {
private void OtherTasks() {
SqliteTimeTableCommands.CreateTableIfNotExists(sqlConnectionString);
taskTimeGridView.AutoGenerateColumns = true;
con.ConnectionString = sqlConnectionString;
bindingSource.DataSource = createDataTable();
}
public DataTable createDataTable() {
DataTable table = new DataTable();
table.Locale = new System.Globalization.CultureInfo("de-de");
SQLiteCommand sqlCommand = new SQLiteCommand("select * from timetable;", con);
@ -177,7 +221,7 @@ namespace TimeTable {
private void DeleteRow(object sender, EventArgs e) {
DataGridViewRow row = taskTimeGridView.Rows[0];
string currentId = row.Cells[0].Value.ToString();
SqliteCommands.DeleteTableRow(currentId, sqlConnectionString);
SqliteTimeTableCommands.DeleteTableRow(currentId, sqlConnectionString);
bindingSource.DataSource = createDataTable();
}
@ -189,12 +233,27 @@ namespace TimeTable {
string text = row.Cells[3].Value.ToString();
RowEdit rowEdit = new RowEdit();
rowEdit.Data(uid, start, end, text);
rowEdit.Data(uid, start, end, text, this);
rowEdit.ShowDialog();
}
private void executeSql(string command) {
private void TimeTableClick(object sender, DataGridViewCellEventArgs e) {
DataGridViewRow row = taskTimeGridView.Rows[0];
string uid = row.Cells[4].Value.ToString();
uidLbl.Text = uid;
this.uid = uid;
BindingSource bindingSource = new BindingSource();
DataTable table = new DataTable();
table.Locale = new System.Globalization.CultureInfo("de-de");
SQLiteCommand sqlCommand = new SQLiteCommand("select * from tasks where uid = " + uid + ";", con);
dataAdapter.SelectCommand = sqlCommand;
dataAdapter.Fill(table);
taskTableGridView.DataSource = table;
}
public void executeSql(string command) {
SqliteConnection con = new SqliteConnection(sqlConnectionString);
SqliteCommand sqliteCmd = con.CreateCommand();
sqliteCmd.CommandText = command;
@ -208,7 +267,7 @@ namespace TimeTable {
private void btnStartClick(object sender, EventArgs e) {
UidCommand uidCmd = SqliteCommands.InsertCmd(DateTime.Now);
UidCommand uidCmd = SqliteTimeTableCommands.InsertCmd(DateTime.Now);
uid = uidCmd.uid;
executeSql(uidCmd.command);
}
@ -217,8 +276,8 @@ namespace TimeTable {
}
private void btnStopResumeClick(object sender, EventArgs e) {
String cmd = SqliteCommands.UpdateEndCmd(uid, DateTime.Now);
private void btnStopResumeClick(object sender, EventArgs e) {
String cmd = SqliteTimeTableCommands.UpdateEndCmd(uid, DateTime.Now);
executeSql(cmd);
}
@ -243,5 +302,8 @@ namespace TimeTable {
private SQLiteDataAdapter dataAdapter;
private System.ComponentModel.IContainer components;
private Button btnDelete;
private Label uidText;
private Label uidLbl;
private DataGridView taskTableGridView;
}
}

View File

@ -120,6 +120,9 @@
<metadata name="bindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>381, 17</value>
</metadata>
<metadata name="bindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>381, 17</value>
</metadata>
<metadata name="con.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>161, 17</value>
</metadata>

View File

@ -1,4 +1,5 @@
using Microsoft.IdentityModel.Tokens;
using System.Windows.Forms;
using TimeTable.controll;
using TimeTable.model;
@ -8,6 +9,7 @@ namespace TimeTable.view {
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
Main main;
/// <summary>
/// Clean up any resources being used.
@ -37,8 +39,6 @@ namespace TimeTable.view {
textBox = new TextBox();
btnSave = new Button();
btnCancel = new Button();
startTimePicker = new DateTimePicker();
endTimePicker = new DateTimePicker();
SuspendLayout();
//
// uidTxt
@ -77,49 +77,55 @@ namespace TimeTable.view {
textTxt.TabIndex = 3;
textTxt.Text = "Text";
//
// uidLbl
// uidText
//
uidLbl.AutoSize = true;
uidLbl.Location = new Point(71, 20);
uidLbl.Name = "uidLbl";
uidLbl.Name = "uidText";
uidLbl.Size = new Size(34, 20);
uidLbl.TabIndex = 4;
uidLbl.Text = "UID";
//
// startDatePicker
//
startDatePicker.CustomFormat = "dd-mm-yyyy HH:mm:ss";
startDatePicker.Format = DateTimePickerFormat.Custom;
startDatePicker.ShowUpDown = true;
startDatePicker.Location = new Point(71, 49);
startDatePicker.Name = "startDatePicker";
startDatePicker.Size = new Size(186, 27);
startDatePicker.Size = new Size(230, 27);
startDatePicker.TabIndex = 5;
//
// endDatePicker
//
endDatePicker.CustomFormat = "dd-mm-yyyy HH:mm:ss";
endDatePicker.Format = DateTimePickerFormat.Custom;
endDatePicker.ShowUpDown = true;
endDatePicker.Location = new Point(71, 88);
endDatePicker.Name = "endDatePicker";
endDatePicker.Size = new Size(186, 27);
endDatePicker.Size = new Size(230, 27);
endDatePicker.TabIndex = 6;
//
// textBox
//
textBox.Location = new Point(71, 126);
textBox.Name = "textBox";
textBox.Size = new Size(300, 27);
textBox.Size = new Size(230, 27);
textBox.TabIndex = 7;
//
// btnSave
//
btnSave.Location = new Point(156, 173);
btnSave.Location = new Point(98, 173);
btnSave.Name = "btnSave";
btnSave.Size = new Size(101, 30);
btnSave.TabIndex = 8;
btnSave.Text = "Save";
btnSave.UseVisualStyleBackColor = true;
btnSave.Click += button1_Click;
btnSave.Click += btnSaveCmd;
//
// btnCancel
//
btnCancel.Location = new Point(270, 173);
btnCancel.Location = new Point(212, 173);
btnCancel.Name = "btnCancel";
btnCancel.Size = new Size(101, 30);
btnCancel.TabIndex = 9;
@ -127,29 +133,11 @@ namespace TimeTable.view {
btnCancel.UseVisualStyleBackColor = true;
btnCancel.Click += btnCancelCmd;
//
// startTimePicker
//
startTimePicker.Format = DateTimePickerFormat.Time;
startTimePicker.Location = new Point(263, 49);
startTimePicker.Name = "startTimePicker";
startTimePicker.Size = new Size(108, 27);
startTimePicker.TabIndex = 10;
//
// endTimePicker
//
endTimePicker.Format = DateTimePickerFormat.Time;
endTimePicker.Location = new Point(263, 88);
endTimePicker.Name = "endTimePicker";
endTimePicker.Size = new Size(108, 27);
endTimePicker.TabIndex = 11;
//
// RowEdit
//
AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(382, 237);
Controls.Add(endTimePicker);
Controls.Add(startTimePicker);
ClientSize = new Size(325, 215);
Controls.Add(btnCancel);
Controls.Add(btnSave);
Controls.Add(textBox);
@ -167,20 +155,24 @@ namespace TimeTable.view {
PerformLayout();
}
private void btnCancelCmd(object sender, EventArgs e) {
this.Close();
}
private void btnSaveCmd(object sender, EventArgs e) {
string cmd = SqliteTimeTableCommands.UpdateCmd(uidLbl.Text, startDatePicker.Value, endDatePicker.Value, textBox.Text);
main.executeSql(cmd);
}
#endregion
public void Data(string uid, string start, string end, string text) {
public void Data(string uid, string start, string end, string text, Main mainView) {
main = mainView;
uidLbl.Text = uid;
if (!start.IsNullOrEmpty()) {
startDatePicker.Text = start;
}
if (!end.IsNullOrEmpty()) {
if (!end.IsNullOrEmpty()) {
endDatePicker.Text = end;
}
@ -199,8 +191,6 @@ namespace TimeTable.view {
private TextBox textBox;
private Button btnSave;
private Button btnCancel;
private DateTimePicker startTimePicker;
private DateTimePicker endTimePicker;
}

View File

@ -3,9 +3,5 @@
public RowEdit() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
}
}
}

View File

@ -27,11 +27,11 @@
textBox = new TextBox();
SuspendLayout();
//
// label1
// uidText
//
label1.AutoSize = true;
label1.Location = new Point(12, 23);
label1.Name = "label1";
label1.Name = "uidText";
label1.Size = new Size(36, 20);
label1.TabIndex = 0;
label1.Text = "Text";