Podsetnik

Program “Podsetnik” je nastao kao želja da se napravi nešto drugačije, a opet funkcionalno na planu brzog memorisanja poruka za određeni datum, bez mnoštva opcija koje bi udavile korisnika.Sve bi trebalo da se zavriši sa jednim klikom. Program je u skladu s time vrlo jednostavan za upotrebu. Po startovanju se pojavljuje kalendar s prikazanim datumima za tekući mesec.

Na kalendaru je uokviren današnji datum , i ukoliko postoji poruka za današnji datum, korisnik je automatski obavešten.

Da bi se dodala poruka neophodno je da levim klikom odaberete datum, a zatim desnim klikom se otvara meni i bira opcija “Dodaj belešku”. Po odabiru opcije “Dodaj belešku”, program otvara polje za unos beleške , gde ukucavate svoju poruku za taj datum, a zatim desnim klikom otvarate meni za snimanje poruke.

Svi datumi za koje je vezana neka poruka su podebljani crnom bojom. Kada kliknete levim klikom na njih pojavljuje se poruka u oblačiću.

Ukoliko želite da izmenite poruku za određeni datum, levim klikom na datum, a zatim desnim klikom otvorite meni i odaberite opciju “Izmeni belešku”. Posle toga postupak je isti za pamćenje poruke kao u predhodnom koraku. Ukoliko hoćete da obrišete poruku, jednostavno levim klikom odaberete datum za koji postoji memorisana poruka, a zatim desnim klikom otvorite meni i odaberite opciju “Obriši belešku”. Poruka je automatski trajno izbrisana.

Postoji opcija u meniju “Unete beleške”. Po odabiru te opcije otvarate dijalog za pregled svih memorisanih poruka. U tom dijalogu možete da odaberete neku od poruka i da je učitate u polje za izmenu beleški. Takođe ovde možete i da obrišete neku poruku što nije preporučljivo. Ukoliko vam je jedan mesec na kalendaru malo, prostim uvećanjem ekrana na maksimalnu veličinu dobijate pregled kalendara za celu godinu.

Kompletan projekat za IDE SharpDevelop programski jezik C# 4.0 možete preuzeti na linku na kraju stranice. Ukoliko želite samo program preuzmite ga na dole navedenom linku. Arhivu s programom otvorite na željenoj lokaciji na vašem kompjuteru. Za pravilan rad programa neophodan je kompletan folder sa Podsetnik.exe fajlom i pratećim folderom Beleške, izvucite prečicu exe fajla do radne površine i uživajte u korišćenju programa. Pažnja program neće pravilno da radi bez foldera Beleške. U okviru njega se smešta tekst poruka u obliku txt fajlova, a u fajlu Lista se nalazi popis poruka. Takođe, neophodan je .Net framework 4.8.

/*******************************************************************************

* Назив програма : Подсетник *

* Верзија програма : 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 *

************************************/