/*******************************************************************************
* Назив програма : Подсетник *
* Верзија програма : 4.0 *
* Креиран помоћу : SharpDevelop *
* Аутор програма : Perić Željko *
* Програмски језик : C# *
* Датум : 30.09.2011 *
* *
* Опис програма : Програм за меморисање кратких текстуалних порука. *
* *
*******************************************************************************/
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Text;
using System.Collections;
namespace Подсетник
{
public partial class MainForm : Form
{
//
// Декларација глобалних променљивих
//
// Путања фолдера извршне верзије програма
string Директориј = Directory.GetCurrentDirectory();
// Путања фолдера са белешкама
const string Фолдер = "\\Белешке\\";
// Путања документа са списком датума упамћених белешки
const string Листа = "\\Белешке\\Листа.txt";
// Текст белешке
string Белешка;
// Назив документа који садржи белешку
string Име_Белешке;
// Датум белешке
string Датум_Белешке;
// Да ли је промењен изабрани датум на календару
bool Промена_Датума = true;
// да ли је белешка учитана преко опције Унете белешке
bool Учитао = false;
// Координате на којима се приказују обавештења
int x = 0;
int y = 0;
// Резултат дијалога
DialogResult Одговор;
//
// Крај декларације глобалних променљивих
//
public MainForm()
{
//
// Позив InitializeComponent() је неопходан
// за подршку Windows Forms дизајнеру.
//
InitializeComponent();
}
void MainFormShown(object sender, EventArgs e)
{
//
// Провери да ли постоји фолдер "Белешке"
// Отвори фолдер са датумима белешки и
// провери да ли су све
// белешке још увек у фолдеру
//
КреирајДиректоријум();
ПодебљајДатуме();
ПровериДатум();
}
void КреирајДиректоријум()
{
// Креира нови директоријум Белешке
// уколико директоријум са документима не постоји
if(!Directory.Exists(Директориј + Фолдер))
{
Directory.CreateDirectory(Директориј + Фолдер);
StreamWriter sw = new StreamWriter(Директориј + Листа);
sw.Close();
sw.Dispose();
}
}
void ПодебљајДатуме()
{
//
// Из фајла "Листа.txt" где су снимљени датуми белешки
// преузима датуме и означава их у календару подебљано
// Приказује се упозорење уколико је неко обрисао белешке
// мимо програма !
// Приказује упозорење уколико је неко обрисао фајл с датумима
//
//
// декларација локалних променљивих
//
DateTime датуми;
string провера = string.Empty;
bool ПостојиБелешка;
try
{
StreamReader sr = new StreamReader(Директориј + Листа);
while(!sr.EndOfStream)
{
провера = sr.ReadLine();
датуми= DateTime.Parse(провера);
Датум_Белешке = string.Empty;
Датум_Белешке = датуми.ToLongDateString();
Белешка = string.Empty;
Име_Белешке = string.Empty;
Име_Белешке = "Белешка за " + Датум_Белешке +".txt";
ПостојиБелешка = File.Exists(Директориј + Фолдер + Име_Белешке);
if (ПостојиБелешка)
{
Календар.AddBoldedDate(датуми);
}
else
{
MessageBox.Show("Белешка за " +
Датум_Белешке +
" је обрисана мимо програма Подсетник",
"Белешка је обрисана на нивоу оперативног система ",
MessageBoxButtons.OK,MessageBoxIcon.Warning);
Календар.RemoveBoldedDate(датуми);
}
}
sr.Close();
sr.Dispose();
Календар.UpdateBoldedDates();
}
catch (Exception)
{
MessageBox.Show("Неко је обрисао фајл с подацима о белешкама !");
StreamWriter sw = new StreamWriter(Директориј + Листа);
sw.Close();
sw.Dispose();
}
}
void ОдабранДатум(object sender, DateRangeEventArgs e)
{
//
// По клику на жељени датум проверава да ли постоји белешка
//
if(e.Start.ToLongDateString()!=Датум_Белешке)
Промена_Датума = true;
}
void КалендарMouseDown(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left && Промена_Датума)
{
x = e.X;
y = e.Y;
ПровериДатум();
}
if(e.Button == MouseButtons.Left && !Промена_Датума)
{
ПровериДатум();
}
else if(e.Button == MouseButtons.Right)
{
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
}
Промена_Датума = false;
}
void ПровериДатум()
{
//
// Провери да ли постоји белешка за одабрани датум
//
Датум_Белешке = "";
Датум_Белешке = Календар.SelectionStart.ToLongDateString();
Белешка = "";
Име_Белешке = "";
Име_Белешке = Директориј + Фолдер + "Белешка за " + Датум_Белешке +".txt";
if(File.Exists(Име_Белешке))
{
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
Белешка = "";
Белешка = File.ReadAllText(Име_Белешке,Encoding.UTF8);
ТекстБелешке.Text = Белешка;
ТекстБелешке.Refresh();
Балончић.ToolTipTitle = "Имате белешку за " + Датум_Белешке;
Балончић.Show(Белешка,Календар,x,y,5000);
Балончић.Active = true;
}
else
{
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
}
}
void ДодајБелешкуClick(object sender, EventArgs e)
{
//
// Додаје белешку , по одабраном датуму
//
if (!File.Exists(Име_Белешке))
{
Белешка = "";
Белешка = "Овде унесите текст белешке...";
ТекстБелешке.Text = Белешка;
ТекстБелешке.BringToFront();
ТекстБелешке.Visible = true;
ТекстБелешке.Show();
ТекстБелешке.Refresh();
}
else
{
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
Балончић.ToolTipTitle = "Већ имate унету белешку за " +
Датум_Белешке;
Белешка = "";
Белешка = ТекстБелешке.Text;
Балончић.Show(Белешка,Календар,x,y,5000);
Балончић.Active = true;
}
}
void ИзмениБелешкуClick(object sender, EventArgs e)
{
//
// Приказује текст белешке за одабрани датум и омогућава
// њену измену
//
if(File.Exists(Име_Белешке))
{
Белешка = "";
Белешка = File.ReadAllText(Име_Белешке,Encoding.UTF8);
ТекстБелешке.Text = Белешка;
ТекстБелешке.BringToFront();
ТекстБелешке.Visible = true;
ТекстБелешке.Show();
ТекстБелешке.Refresh();
}
else
{
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
Балончић.ToolTipTitle = "Немате белешку за " +
Датум_Белешке;
Балончић.Show(" ",Календар,x,y,5000);
Балончић.Active = true;
}
}
void ОбришиБелешкуClick(object sender, EventArgs e)
{
//
// Брише белешку за одабрани датум
//
if(File.Exists(Име_Белешке))
{
Одговор = MessageBox.Show(
" Да ли сте сигурни да желите да обришете \n"+
" белешку за датум " +
Датум_Белешке.ToString(),
"Трајно брисање белешки",
MessageBoxButtons.OKCancel,MessageBoxIcon.Question
);
if (Одговор == DialogResult.OK)
{
File.Delete(Име_Белешке);
Календар.RemoveBoldedDate(Календар.SelectionStart);
Календар.UpdateBoldedDates();
СнимиДатумеСаБелешкама();
ПровериДатум();
}
}
else
{
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
Балончић.ToolTipTitle = "Немате белешку за " +
Датум_Белешке;
Балончић.Show(" ",Календар,x,y, 5000);
Балончић.Active = true;
}
}
void УнетеБелешкеClick(object sender, EventArgs e)
{
//
// прикажи дијалог са свим снимљеним белешкама
//
СписакБелешки.FileName = "";
СписакБелешки.Title = "Списак унетих белешки у календар";
СписакБелешки.InitialDirectory = Директориј + Фолдер;
СписакБелешки.ShowDialog();
if (СписакБелешки.FileName != "")
{
Име_Белешке = СписакБелешки.FileName;
Белешка = "";
Белешка = File.ReadAllText(Име_Белешке, Encoding.UTF8);
ТекстБелешке.Text = Белешка;
ТекстБелешке.BringToFront();
ТекстБелешке.Visible = true;
ТекстБелешке.Show();
ТекстБелешке.Refresh();
Учитао = true;
}
else
{
Учитао = false;
}
}
void УпамтиБелешкуClick(object sender, EventArgs e)
{
//
// снима текст белешке за одабрани датум и ажурира фајл "Листа.txt"
//
СнимиБелешку();
ПровериДатум();
}
void СнимиБелешку()
{
//
// снима текст белешке за одабрани датум и ажурира фајл "Листа.txt"
//
Белешка = "";
Белешка = ТекстБелешке.Text;
File.WriteAllText(Име_Белешке, Белешка, Encoding.UTF8);
ТекстБелешке.Hide();
ТекстБелешке.SendToBack();
ТекстБелешке.Visible = false;
ТекстБелешке.Text = "";
if(File.Exists(Име_Белешке))
{
if(!Учитао)
{
Календар.AddBoldedDate(Календар.SelectionStart);
Календар.UpdateBoldedDates();
СнимиДатумеСаБелешкама();
}
}
Учитао = false;
}
void СнимиДатумеСаБелешкама()
{
//
// снима датуме са белешкама
//
int индекс;
int икс;
string датуми = "";
икс = Календар.BoldedDates.GetLength(0);
StreamWriter sw = new StreamWriter(Директориј + Листа);
for ( индекс = 0; индекс != икс ; индекс = индекс + 1 )
{
датуми = Календар.BoldedDates.GetValue(индекс).ToString();
sw.WriteLine(датуми);
}
sw.Close();
sw.Dispose();
}
void ТекстБелешкеLinkClicked(object sender, LinkClickedEventArgs e)
{
//
// уколико у тексту белешке постоји линк ка интернет адреси
// и корисник програма кликне на њу покреће се интернет експлорер
//
System.Diagnostics.Process.Start(e.LinkText);
}
void КаАуторуLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//
// по клику на "@" што је линк ка ауторовом сајту
// покреће се интернет експлорер
//
const string Адреса = "https://sites.google.com/site/periczeljkosmederevo/home/autor";
System.Diagnostics.Process.Start(Адреса);
linkLabel1.LinkVisited = true;
}
void КаАуторуLinkMouseEnter(object sender, EventArgs e)
{
//
// када се поинтером миша пређе преко "@"
//
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
Балончић.ToolTipTitle = " Аутор Перић Жељко ";
Балончић.SetToolTip(linkLabel1," ");
Балончић.Active = true;
linkLabel1.LinkColor = Color.Red;
}
void КаАуторуLinkMouseLeave(object sender, EventArgs e)
{
//
// промена боје линка
//
Балончић.RemoveAll();
Балончић.Hide(Календар);
Балончић.Active = false;
linkLabel1.LinkColor = Color.Blue;
}
void ПроменаВеличинеКалендара(object sender, EventArgs e)
{
//
// промена величине календара
//
Белешка = " ";
Белешка = ТекстБелешке.Text;
ТекстБелешке.Text = " ";
ТекстБелешке.Text = Белешка;
ТекстБелешке.Refresh();
}
void КрајРада(object sender, FormClosingEventArgs e)
{
//
// завршава рад с програмом
//
if (ТекстБелешке.Visible)
{
СнимиБелешку();
}
Календар.UpdateBoldedDates();
СнимиДатумеСаБелешкама();
}
}
}
/************************************************************************
* Program Licence : *
* *
* Copyright 2013 , Perić Željko *
* (periczeljkosmederevo@yahoo.com) *
* *
* According to it's main purpose , this program is licenced *
* under the therms of 'Free Software' licence agreement. *
* *
* If You do not know what those therms applies to *
* please read explanation at the following link : *
* (http://www.gnu.org/philosophy/free-sw.html.en) *
* *
* Since it is Free Software this program has no warranty of any kind. *
************************************************************************
* Ethical Notice : *
* *
* It is not ethical to change program code signed by it's author *
* and then to redistribute it under the same author name , *
* especially if it is incorrect. *
* *
* It is recommended that if you make improvement in program code , *
* to make remarks of it and then to sign it by Your's name , *
* for further redistribution as new major version of program. *
* *
* Author name and references of old program code version should be *
* kept , for tracking history of program development. *
* *
* For any further information please contact code author at his email. *
************************************************************************/
/************************************
* List Of Revisions *
************************************
* Major revision of version 1.0 *
* 01.12.2013 Author *
* Program licence added *
* *
* New program version 2.0 *
************************************
* Major revision of version 2.0 *
* 26.02.2017 Author *
* GUI colors changed *
* *
* New program version 3.0 *
************************************
* Major revision of version 3.0 *
* 02.02.2022 Author *
* GUI colors changed *
* ToolTip control changed *
* I/O data system changed *
* New program version 4.0 *
************************************/