Ebbene, ho sempre avuto questa idea per la mente, delle note che apparissero in base alla finestra che state visualizzando.
Così se per caso dovete ricordarvi una determinata cosa all'apertura della finestra di Excel, ecco che quella nota appare. Oppure non ricordate mai la password quando dovete loggarvi in un sito che usate una volta ogni diversi eoni e dovete sempre cercarla dentro a un'enormità di mail, ecco che in base al titolo della finestra del browser la nota viene visualizzata.
Ho deciso quindi di creare una bella applicazione che facesse al caso mio.
Vediamo allora di crearci un'elenco di funzionalità che vogliamo che la nostra applicazione abbia:
- Ricerca fra tutte le finestre aperte in windows per controllare se ci sono note contestuali che combaciano
- Ricerca nella finestra attiva per rendere più visibile la notifica di note
- Possibilità di aggiungere delle note in cui specificare la finestra a cui 'agganciarle' usando regular expression in modo da rendere più flessibile la ricerca.
- Visualizzazione, modifica ed eliminazione di note già scritte.
- Associare Tag a ogni singola nota in modo da poter visualizzare anche note correlate.
Andiamo a creare la tabella per il salvataggio delle note:
USE [bsd_Notes] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[T_NOTE]( [NOT_KEY] [int] IDENTITY(1,1) NOT NULL, [NOT_NOTA] [text] NULL, [NOT_WINDOW_NAME] [nvarchar](4000) NULL, CONSTRAINT [PK_T_NOTE] PRIMARY KEY CLUSTERED ( [NOT_KEY] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GOa questo punto creiamo una anagrafe per la memorizzazione dei tag da associare (così potranno essere condivisi e più facilmente utilizzati per correlare fra loro le note)
USE [bsd_Notes] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[T_TAG]( [TAG_KEY] [int] IDENTITY(1,1) NOT NULL, [TAG_NOME] [nvarchar](100) NULL, CONSTRAINT [PK_T_TAG] PRIMARY KEY CLUSTERED ( [TAG_KEY] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GOQuindi creiamo la tabella per la correlare le note con i tag:
USE [bsd_Notes] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[T_NOTE_TAG]( [TNO_NOT_KEY_NOTE] [int] NOT NULL, [TNO_TAG_KEY_TAG] [int] NOT NULL, CONSTRAINT [PK_T_NOTE_TAG] PRIMARY KEY CLUSTERED ( [TNO_NOT_KEY_NOTE] ASC, [TNO_TAG_KEY_TAG] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[T_NOTE_TAG] WITH CHECK ADD CONSTRAINT [FK_T_NOTE_TAG_T_NOTE] FOREIGN KEY([TNO_NOT_KEY_NOTE]) REFERENCES [dbo].[T_NOTE] ([NOT_KEY]) GO ALTER TABLE [dbo].[T_NOTE_TAG] CHECK CONSTRAINT [FK_T_NOTE_TAG_T_NOTE] GO ALTER TABLE [dbo].[T_NOTE_TAG] WITH CHECK ADD CONSTRAINT [FK_T_NOTE_TAG_T_TAG] FOREIGN KEY([TNO_TAG_KEY_TAG]) REFERENCES [dbo].[T_TAG] ([TAG_KEY]) GO ALTER TABLE [dbo].[T_NOTE_TAG] CHECK CONSTRAINT [FK_T_NOTE_TAG_T_TAG] GO
Il diagramma che ci troviamo è il seguente:
Diagramma del database |
WPFNotes (Parte 2): Un po' di API Win32
Nessun commento:
Posta un commento