2016-06-19 22:24:29 +00:00
|
|
|
unit demoMain;
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
2016-07-20 21:05:51 +00:00
|
|
|
{$IFDEF UNIX}
|
|
|
|
clocale,
|
|
|
|
{$ENDIF}
|
2016-07-03 14:47:03 +00:00
|
|
|
Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics, Dialogs,
|
2016-09-02 17:58:47 +00:00
|
|
|
ExtCtrls, StdCtrls, ComCtrls, LCLTranslator, Menus, Types, LCLVersion,
|
|
|
|
VpBaseDS, VpDayView, VpWeekView, VpTaskList, VpAbout, VpContactGrid,
|
|
|
|
VpMonthView, VpResEditDlg, VpContactButtons, VpNavBar, VpData,
|
2016-09-12 22:25:34 +00:00
|
|
|
VpPrtPrvDlg, VpPrtFmtDlg, VpBase;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
|
|
|
type
|
|
|
|
|
|
|
|
{ TMainForm }
|
|
|
|
|
|
|
|
TMainForm = class(TForm)
|
|
|
|
BtnNewRes: TButton;
|
|
|
|
BtnEditRes: TButton;
|
2016-06-22 20:19:35 +00:00
|
|
|
BtnDeleteRes: TButton;
|
2016-06-19 22:24:29 +00:00
|
|
|
CbLanguages: TComboBox;
|
2016-06-22 20:19:35 +00:00
|
|
|
CbGranularity: TComboBox;
|
|
|
|
CbTimeFormat: TComboBox;
|
|
|
|
CbFirstDayOfWeek: TComboBox;
|
2016-06-23 23:16:34 +00:00
|
|
|
CbAllowInplaceEditing: TCheckBox;
|
2016-06-29 13:22:33 +00:00
|
|
|
CbAddressBuilder: TComboBox;
|
2016-07-02 23:14:26 +00:00
|
|
|
CbDrawingStyle: TComboBox;
|
2016-08-26 13:33:45 +00:00
|
|
|
CbAllowDragAndDrop: TCheckBox;
|
|
|
|
CbDragDropTransparent: TCheckBox;
|
2016-09-12 22:25:34 +00:00
|
|
|
CbShowEventHints: TCheckBox;
|
2016-06-22 20:19:35 +00:00
|
|
|
Img: TImage;
|
2016-06-19 22:24:29 +00:00
|
|
|
ImageList1: TImageList;
|
2016-07-02 23:14:26 +00:00
|
|
|
LblDrawingStyle: TLabel;
|
2016-06-29 13:22:33 +00:00
|
|
|
LblAddressBuilder: TLabel;
|
2016-06-22 20:19:35 +00:00
|
|
|
LblFirstDayOfWeek: TLabel;
|
|
|
|
LblTimeFormat: TLabel;
|
|
|
|
LblGranularity: TLabel;
|
|
|
|
LblLanguage: TLabel;
|
|
|
|
LblVisibleDays: TLabel;
|
2016-07-03 14:47:03 +00:00
|
|
|
MenuItem3: TMenuItem;
|
2016-07-29 15:56:52 +00:00
|
|
|
MenuItem4: TMenuItem;
|
|
|
|
MnuLoadPrintFormats: TMenuItem;
|
2016-07-07 21:15:18 +00:00
|
|
|
MnuPrint: TMenuItem;
|
2016-07-06 18:56:23 +00:00
|
|
|
MnuEditPrintFormats: TMenuItem;
|
2016-07-03 14:47:03 +00:00
|
|
|
MnuPrintPreview: TMenuItem;
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook: TNotebook;
|
|
|
|
Events: TPage;
|
2016-07-29 15:56:52 +00:00
|
|
|
OpenDialog: TOpenDialog;
|
2016-08-06 22:18:53 +00:00
|
|
|
Splitter1: TSplitter;
|
2016-07-18 22:19:33 +00:00
|
|
|
Tasks: TPage;
|
|
|
|
Contacts: TPage;
|
|
|
|
Resources: TPage;
|
|
|
|
Settings: TPage;
|
2016-07-03 14:47:03 +00:00
|
|
|
PrintDialog1: TPrintDialog;
|
2016-06-22 20:19:35 +00:00
|
|
|
TitleLbl: TLabel;
|
|
|
|
MainMenu1: TMainMenu;
|
|
|
|
MenuItem1: TMenuItem;
|
|
|
|
MenuItem2: TMenuItem;
|
|
|
|
MnuSettings: TMenuItem;
|
|
|
|
MnuAbout: TMenuItem;
|
|
|
|
MnuMaintenance: TMenuItem;
|
|
|
|
MnuQuit: TMenuItem;
|
|
|
|
MnuResources: TMenuItem;
|
2016-06-19 22:24:29 +00:00
|
|
|
Panel1: TPanel;
|
2016-06-22 20:19:35 +00:00
|
|
|
LeftPanel: TPanel;
|
2016-06-22 14:28:19 +00:00
|
|
|
DaySelectorPanel: TPanel;
|
2016-06-22 20:19:35 +00:00
|
|
|
HeaderPanel: TPanel;
|
2017-05-20 15:39:18 +00:00
|
|
|
TaskControlPanel: TPanel;
|
2016-06-19 22:24:29 +00:00
|
|
|
RbAllTasks: TRadioButton;
|
|
|
|
RbHideCompletedTasks: TRadioButton;
|
|
|
|
Splitter2: TSplitter;
|
|
|
|
Splitter3: TSplitter;
|
2016-06-22 20:19:35 +00:00
|
|
|
DaysTrackBar: TTrackBar;
|
2016-06-19 22:24:29 +00:00
|
|
|
VpContactButtonBar1: TVpContactButtonBar;
|
|
|
|
VpContactGrid1: TVpContactGrid;
|
|
|
|
VpControlLink1: TVpControlLink;
|
|
|
|
VpDayView1: TVpDayView;
|
|
|
|
VpMonthView1: TVpMonthView;
|
|
|
|
VpNavBar1: TVpNavBar;
|
2016-07-06 18:56:23 +00:00
|
|
|
VpPrintFormatEditDialog1: TVpPrintFormatEditDialog;
|
2016-07-03 14:47:03 +00:00
|
|
|
VpPrintPreviewDialog1: TVpPrintPreviewDialog;
|
2016-06-19 22:24:29 +00:00
|
|
|
VpResourceCombo1: TVpResourceCombo;
|
|
|
|
VpResourceEditDialog1: TVpResourceEditDialog;
|
|
|
|
VpTaskList1: TVpTaskList;
|
|
|
|
VpWeekView1: TVpWeekView;
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure BtnDeleteResClick(Sender: TObject);
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure BtnNewResClick(Sender: TObject);
|
|
|
|
procedure BtnEditResClick(Sender: TObject);
|
2016-06-24 10:33:55 +00:00
|
|
|
procedure Cb3DChange(Sender: TObject);
|
2016-06-29 13:22:33 +00:00
|
|
|
procedure CbAddressBuilderChange(Sender: TObject);
|
2016-08-26 13:33:45 +00:00
|
|
|
procedure CbAllowDragAndDropChange(Sender: TObject);
|
2016-06-23 23:16:34 +00:00
|
|
|
procedure CbAllowInplaceEditingChange(Sender: TObject);
|
2016-08-26 13:33:45 +00:00
|
|
|
procedure CbDragDropTransparentChange(Sender: TObject);
|
2016-07-02 23:14:26 +00:00
|
|
|
procedure CbDrawingStyleChange(Sender: TObject);
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure CbFirstDayOfWeekChange(Sender: TObject);
|
|
|
|
procedure CbGranularityChange(Sender: TObject);
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure CbLanguagesChange(Sender: TObject);
|
2016-09-12 22:25:34 +00:00
|
|
|
procedure CbShowEventHintsChange(Sender: TObject);
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure CbTimeFormatChange(Sender: TObject);
|
2016-07-04 19:21:55 +00:00
|
|
|
procedure DaysTrackBarChange(Sender: TObject);
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
|
|
procedure FormCreate(Sender: TObject);
|
2016-07-04 19:21:55 +00:00
|
|
|
procedure MnuAboutClick(Sender: TObject);
|
2016-07-06 18:56:23 +00:00
|
|
|
procedure MnuEditPrintFormatsClick(Sender: TObject);
|
2016-07-29 15:56:52 +00:00
|
|
|
procedure MnuLoadPrintFormatsClick(Sender: TObject);
|
2016-07-07 21:15:18 +00:00
|
|
|
procedure MnuPrintClick(Sender: TObject);
|
2016-07-03 14:47:03 +00:00
|
|
|
procedure MnuPrintPreviewClick(Sender: TObject);
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure MnuQuitClick(Sender: TObject);
|
|
|
|
procedure MnuResourcesClick(Sender: TObject);
|
|
|
|
procedure MnuSettingsClick(Sender: TObject);
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure RbAllTasksChange(Sender: TObject);
|
|
|
|
procedure RbHideCompletedTasksChange(Sender: TObject);
|
2016-07-19 23:24:09 +00:00
|
|
|
procedure VpBufDSDataStore1PlaySound(Sender: TObject;
|
|
|
|
const AWavFile: String; AMode: TVpPlaySoundMode);
|
2016-09-22 17:47:27 +00:00
|
|
|
procedure VpHoliday(Sender: TObject; ADate: TDateTime;
|
|
|
|
var AHolidayName: String);
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure VpNavBar1ItemClick(Sender: TObject; Button: TMouseButton;
|
|
|
|
Shift: TShiftState; Index: Integer);
|
2016-09-02 16:45:47 +00:00
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
private
|
|
|
|
{ private declarations }
|
|
|
|
FLang: String;
|
2016-06-22 20:19:35 +00:00
|
|
|
FActiveView: Integer;
|
2016-06-24 17:55:44 +00:00
|
|
|
FVisibleDays: Integer;
|
2016-09-06 19:58:31 +00:00
|
|
|
FResID: Integer;
|
2016-09-17 18:34:47 +00:00
|
|
|
FLanguageDir: String;
|
2016-09-10 14:19:31 +00:00
|
|
|
procedure CreateResourceGroup;
|
2016-09-17 18:34:47 +00:00
|
|
|
function GetlanguageDir: String;
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure PopulateLanguages;
|
2016-07-14 15:26:55 +00:00
|
|
|
procedure PositionControls;
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure SetActiveView(AValue: Integer);
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure SetLanguage(ALang: String); overload;
|
|
|
|
procedure SetLanguage(AIndex: Integer); overload;
|
2016-09-17 18:34:47 +00:00
|
|
|
procedure SetLanguageDir(const AValue: String);
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure ShowAllEvents;
|
|
|
|
procedure ShowContacts;
|
|
|
|
procedure ShowEventsPerDay;
|
|
|
|
procedure ShowEventsPerMonth;
|
|
|
|
procedure ShowEventsPerWeek;
|
|
|
|
procedure ShowResources;
|
|
|
|
procedure ShowSettings;
|
|
|
|
procedure ShowTasks;
|
|
|
|
|
2016-06-24 17:55:44 +00:00
|
|
|
procedure ReadIni;
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure WriteIni;
|
|
|
|
public
|
|
|
|
{ public declarations }
|
2016-09-17 18:34:47 +00:00
|
|
|
property LanguageDir: String read GetLanguageDir write SetLanguageDir;
|
2016-06-19 22:24:29 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
|
|
MainForm: TMainForm;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
|
2016-07-17 10:17:24 +00:00
|
|
|
{$UNDEF UTF8_CALLS}
|
|
|
|
{$IFDEF LCL}
|
2016-07-26 13:02:32 +00:00
|
|
|
{$DEFINE UTF8_CALLS}
|
2016-08-05 21:45:06 +00:00
|
|
|
{$IF (lcl_major=1) and (lcl_minor<=6)}
|
2016-07-31 11:55:04 +00:00
|
|
|
{$UNDEF UTF8_CALLS}
|
2016-07-17 10:17:24 +00:00
|
|
|
{$ENDIF}
|
|
|
|
{$ENDIF}
|
|
|
|
|
2017-05-23 17:39:54 +00:00
|
|
|
{$DEFINE NEW_ICONS} // The same as in vp.inc
|
2016-08-29 09:39:30 +00:00
|
|
|
|
|
|
|
uses
|
|
|
|
{$IFDEF WINDOWS}
|
|
|
|
Windows,
|
|
|
|
{$ENDIF}
|
|
|
|
LResources, LazFileUtils, LazUTF8, StrUtils, DateUtils, Translations,
|
|
|
|
{$IFNDEF UTF8_CALLS}
|
|
|
|
lConvEncoding,
|
|
|
|
{$ENDIF}
|
|
|
|
IniFiles, Math, Printers,
|
|
|
|
VpMisc, VpPrtFmt,
|
2016-09-02 17:58:47 +00:00
|
|
|
sound, ExVpRptSetup,
|
|
|
|
|
|
|
|
// Using the defines BUFDATASET or MORMOT (defined in project options) we
|
|
|
|
// select the datastore to use in this demo.
|
|
|
|
{$IFDEF BUFDATASET}BufDSDatamodule{$ENDIF}
|
|
|
|
{$IFDEF MORMOT}mORMotDatamodule{$ENDIF}
|
|
|
|
;
|
2016-08-29 09:39:30 +00:00
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
const
|
|
|
|
LANGUAGE_DIR = '..\..\languages\';
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
resourcestring
|
|
|
|
RSConfirmDeleteRes = 'Do you really want to delete resource %s?';
|
|
|
|
RSEventsOverview = 'Events overview';
|
|
|
|
RSEventsPerMonth = 'Events per month';
|
|
|
|
RSEventsPerWeek = 'Events per week';
|
|
|
|
RSEventsPerDay = 'Events per day';
|
|
|
|
RSTasks = 'Tasks';
|
|
|
|
RSContacts = 'Contacts';
|
|
|
|
RSResources = 'Resources';
|
|
|
|
RSSettings = 'Program settings';
|
|
|
|
RSSettings_short = 'Settings';
|
|
|
|
RSPlanner = 'Planner';
|
|
|
|
RSMaintenance = 'Maintenance';
|
|
|
|
RS24Hours = '24 hours';
|
|
|
|
RS12Hours = '12 hours AM/PM';
|
|
|
|
RS5Min = '5 min';
|
|
|
|
RS6Min = '6 min';
|
|
|
|
RS10Min = '10 min';
|
|
|
|
RS15Min = '15 min';
|
|
|
|
RS20Min = '20 min';
|
|
|
|
RS30Min = '30 min';
|
|
|
|
RS60Min = '60 min';
|
|
|
|
RSSunday = 'Sunday';
|
|
|
|
RSMonday = 'Monday';
|
|
|
|
RSTuesday = 'Tuesday';
|
|
|
|
RSWednesday = 'Wednesday';
|
|
|
|
RSThursday = 'Thursday';
|
|
|
|
RSFriday = 'Friday';
|
|
|
|
RSSaturday = 'Saturday';
|
2016-07-08 10:04:20 +00:00
|
|
|
RSFlat = 'flat';
|
2016-07-07 21:15:18 +00:00
|
|
|
RS3d = '3D';
|
2016-07-08 10:04:20 +00:00
|
|
|
RSBorderless = 'no border';
|
2016-07-29 15:56:52 +00:00
|
|
|
RSXMLFiles = 'XML files (*.xml)';
|
2016-06-22 20:19:35 +00:00
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
{$IFDEF WINDOWS}
|
|
|
|
{ This function determines the LCID from the language code.
|
|
|
|
Works only for Windows. }
|
|
|
|
function LangToLCID(ALang: String): Integer;
|
|
|
|
begin
|
|
|
|
case lowercase(ALang) of
|
|
|
|
'' : Result := $0409; // Default = englisch
|
|
|
|
'ar' : Result := $0401; // Arabic
|
|
|
|
'bg' : Result := $0403; // Bulgarian
|
|
|
|
'ca' : Result := $0403; // Catalan
|
|
|
|
'cs' : Result := $0405; // Czech
|
|
|
|
'de' : Result := $0407; // German
|
2016-07-04 15:53:06 +00:00
|
|
|
'en' : Result := $0409; // English (US)
|
2016-06-19 22:24:29 +00:00
|
|
|
'es' : Result := $040A; // Spanisch
|
|
|
|
'fi' : Result := $040B; // Finnish
|
|
|
|
'fr' : Result := $040C; // French
|
|
|
|
'he' : Result := $040D; // Hebrew
|
|
|
|
'hu' : Result := $040E; // Hungarian
|
|
|
|
'it' : Result := $0410; // Italian
|
|
|
|
'jp' : Result := $0411; // Japanese
|
2016-07-04 15:53:06 +00:00
|
|
|
'nl' : Result := $0413; // Netherlands (Dutch)
|
2016-06-19 22:24:29 +00:00
|
|
|
'pl' : Result := $0415; // Polish
|
|
|
|
'pt' : Result := $0816; // Portuguese (Portugal)
|
|
|
|
'ru' : Result := $0419; // Russian
|
|
|
|
'tr' : Result := $041F; // Turkish
|
|
|
|
'zh_cn', 'zh-cn': Result := $0804; // Chinese (China)
|
|
|
|
'zh_tw', 'zh-tw': Result := $0404; // Chinese (Taiwan)
|
|
|
|
// please complete if necessary. Language code and LCIDs can be found at
|
|
|
|
// http://www.science.co.il/Language/Locale-codes.asp
|
|
|
|
else raise Exception.CreateFmt('Language "%s" not supported. Please add to GetLCIDFromLangCode.',[ALang]);
|
|
|
|
end;
|
|
|
|
end;
|
2016-08-29 09:39:30 +00:00
|
|
|
|
|
|
|
function GetLocaleStr(LCID, LT: Longint; const Def: string): ShortString;
|
|
|
|
// borrowed from SysUtils
|
|
|
|
var
|
|
|
|
L: Integer;
|
|
|
|
Buf: array[0..255] of Char;
|
|
|
|
begin
|
|
|
|
L := GetLocaleInfo(LCID, LT, Buf, SizeOf(Buf));
|
|
|
|
if L > 0 then
|
|
|
|
SetString(Result, @Buf[0], L - 1)
|
|
|
|
else
|
|
|
|
Result := Def;
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
{$ENDIF}
|
|
|
|
|
|
|
|
procedure UpdateFormatSettings(ALang: String);
|
|
|
|
{$IFDEF WINDOWS}
|
|
|
|
var
|
|
|
|
LCID: Integer;
|
2016-08-29 09:39:30 +00:00
|
|
|
i: Integer;
|
|
|
|
codepage: String;
|
2016-06-19 22:24:29 +00:00
|
|
|
{$ENDIF}
|
|
|
|
begin
|
|
|
|
{$IFDEF WINDOWS}
|
|
|
|
// Determine the LCID for the requested language
|
|
|
|
LCID := LangToLCID(ALang);
|
|
|
|
|
|
|
|
// Now we update the format settings to the new language
|
2016-07-17 10:17:24 +00:00
|
|
|
{$IFDEF UTF8_CALLS}
|
2016-06-19 22:24:29 +00:00
|
|
|
GetLocaleFormatSettingsUTF8(LCID, DefaultFormatSettings);
|
2016-07-17 10:17:24 +00:00
|
|
|
{$ELSE}
|
|
|
|
GetLocaleFormatSettings(LCID, DefaultFormatSettings);
|
2016-08-29 09:39:30 +00:00
|
|
|
codepage := 'cp' + GetLocaleStr(LCID, LOCALE_IDEFAULTANSICODEPAGE, '');
|
|
|
|
with DefaultFormatSettings do begin
|
|
|
|
for i:=1 to 12 do begin
|
|
|
|
LongMonthNames[i] := ConvertEncoding(LongMonthNames[i], codepage, 'utf8');
|
|
|
|
ShortMonthNames[i] := ConvertEncoding(ShortMonthNames[i], codepage, 'utf8');
|
|
|
|
end;
|
|
|
|
for i:=1 to 7 do begin
|
|
|
|
LongDayNames[i] := ConvertEncoding(LongDayNames[i], codepage, 'utf8');
|
|
|
|
ShortDayNames[i] := ConvertEncoding(ShortDayNames[i], codepage, 'utf8');
|
|
|
|
end;
|
|
|
|
end;
|
2016-07-17 10:17:24 +00:00
|
|
|
{$ENDIF}
|
2016-06-19 22:24:29 +00:00
|
|
|
{$ENDIF}
|
|
|
|
end;
|
|
|
|
|
|
|
|
function GetFirstDayOfWeek(ALang: String): TVpDayType;
|
|
|
|
// Don't know how to determine this from the OS
|
|
|
|
begin
|
|
|
|
Result := dtSunday;
|
|
|
|
end;
|
|
|
|
|
2016-09-22 17:47:27 +00:00
|
|
|
function Easter(AYear: integer): TDateTime;
|
|
|
|
// Calculates the date of the Easter holiday
|
|
|
|
var
|
|
|
|
day, month: integer;
|
|
|
|
a,b,c,d,e,m,n: integer;
|
|
|
|
begin
|
|
|
|
result := 0;
|
|
|
|
case AYear div 100 of
|
|
|
|
17 : begin m := 23; n := 3; end;
|
|
|
|
18 : begin m := 23; n := 4; end;
|
|
|
|
19,20 : begin m := 24; n := 5; end;
|
|
|
|
21 : begin m := 24; n := 6; end;
|
|
|
|
else
|
|
|
|
raise Exception.Create('Easter date can only be calculated for years between 1700 and 2199');
|
|
|
|
end;
|
|
|
|
a := AYear mod 19;
|
|
|
|
b := AYear mod 4;
|
|
|
|
c := AYear mod 7;
|
|
|
|
d := (19*a + m) mod 30;
|
|
|
|
e := (2*b + 4*c + 6*d + n) mod 7;
|
|
|
|
day := 22 + d + e;
|
|
|
|
month := 3;
|
|
|
|
if day > 31 then begin
|
|
|
|
day := d + e - 9;
|
|
|
|
month := 4;
|
|
|
|
if (d = 28) and (e = 6) and (a > 10) then begin
|
|
|
|
if day = 26 then day := 19;
|
|
|
|
if day = 25 then day := 18;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
result := EncodeDate(AYear, month, day);
|
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
{ TMainForm }
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.BtnDeleteResClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
res: TVpResource;
|
|
|
|
begin
|
|
|
|
res := VpControlLink1.Datastore.Resource;
|
|
|
|
if res = nil then
|
|
|
|
exit;
|
|
|
|
|
2016-09-05 14:04:22 +00:00
|
|
|
if MessageDlg(Format(RSConfirmDeleteRes, [res.Description]), mtConfirmation, [mbYes, mbNo], 0) = mrYes then
|
|
|
|
VpControlLink1.Datastore.PurgeResource(res);
|
|
|
|
// VpControlLink1.Datastore.Resources.RemoveResource(res);
|
2016-06-22 20:19:35 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
// Edits the currently selected resource
|
|
|
|
procedure TMainForm.BtnEditResClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
// Open the resource editor dialog, everything is done here.
|
|
|
|
VpResourceEditDialog1.Execute;
|
|
|
|
end;
|
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
// Adds a new resource
|
|
|
|
procedure TMainForm.BtnNewResClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpResourceEditDialog1.AddNewResource;
|
|
|
|
end;
|
|
|
|
|
2016-06-24 10:33:55 +00:00
|
|
|
procedure TMainForm.Cb3DChange(Sender: TObject);
|
|
|
|
var
|
|
|
|
ds: TVpDrawingStyle;
|
|
|
|
begin
|
2016-07-02 23:14:26 +00:00
|
|
|
ds := TVpDrawingStyle(CbDrawingStyle.ItemIndex);
|
2016-06-24 10:33:55 +00:00
|
|
|
VpTaskList1.DrawingStyle := ds;
|
|
|
|
VpContactGrid1.DrawingStyle := ds;
|
|
|
|
VpDayView1.DrawingStyle := ds;
|
|
|
|
VpWeekView1.DrawingStyle := ds;
|
|
|
|
VpMonthView1.DrawingStyle := ds;
|
|
|
|
end;
|
|
|
|
|
2016-06-29 13:22:33 +00:00
|
|
|
procedure TMainForm.CbAddressBuilderChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
if CbAddressBuilder.ItemIndex <= 0 then
|
|
|
|
VpControlLink1.CityStateZipFormat := ''
|
|
|
|
else
|
|
|
|
VpControlLink1.CityStateZipFormat := CbAddressBuilder.Items[CbAddressBuilder.ItemIndex];
|
|
|
|
end;
|
|
|
|
|
2016-08-26 13:33:45 +00:00
|
|
|
procedure TMainForm.CbAllowDragAndDropChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpDayView1.AllowDragAndDrop := CbAllowDragAndDrop.Checked;
|
2016-09-03 17:41:24 +00:00
|
|
|
VpWeekView1.AllowDragAndDrop := CbAllowDragAndDrop.Checked;
|
2016-08-26 13:33:45 +00:00
|
|
|
end;
|
|
|
|
|
2016-06-23 23:16:34 +00:00
|
|
|
procedure TMainForm.CbAllowInplaceEditingChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpContactGrid1.AllowInplaceEditing := CbAllowInplaceEditing.Checked;
|
|
|
|
VpDayView1.AllowInplaceEditing := CbAllowInplaceEditing.Checked;
|
|
|
|
VpWeekView1.AllowInplaceEditing := CbAllowInplaceEditing.Checked;
|
|
|
|
VpTaskList1.AllowInplaceEditing := CbAllowInplaceEditing.Checked;
|
|
|
|
end;
|
|
|
|
|
2016-08-26 13:33:45 +00:00
|
|
|
procedure TMainForm.CbDragDropTransparentChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpDayView1.DragDropTransparent := CbDragDropTransparent.Checked;
|
|
|
|
end;
|
|
|
|
|
2016-07-02 23:14:26 +00:00
|
|
|
procedure TMainForm.CbDrawingStyleChange(Sender: TObject);
|
|
|
|
var
|
|
|
|
ds: TVpDrawingStyle;
|
|
|
|
begin
|
2016-08-26 13:33:45 +00:00
|
|
|
ds := TVpDrawingStyle(CbDrawingStyle.ItemIndex);
|
|
|
|
VpTaskList1.DrawingStyle := ds;
|
|
|
|
VpContactGrid1.DrawingStyle := ds;
|
|
|
|
VpDayView1.DrawingStyle := ds;
|
|
|
|
VpWeekView1.DrawingStyle := ds;
|
|
|
|
VpMonthView1.DrawingStyle := ds;
|
2016-07-02 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.CbFirstDayOfWeekChange(Sender: TObject);
|
|
|
|
begin
|
2016-09-23 11:40:39 +00:00
|
|
|
// VpWeekView1.WeekStartsOn := TVpDayType(CbFirstDayOfWeek.ItemIndex);
|
|
|
|
VpWeekView1.WeekStartsOn := dtMonday; // Always! Otherwise the small boxes are wrong.
|
2016-06-22 20:19:35 +00:00
|
|
|
VpMonthView1.WeekStartsOn := TVpDayType(CbFirstDayOfWeek.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.CbGranularityChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpDayView1.Granularity := TVpGranularity(CbGranularity.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure TMainForm.CbLanguagesChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
SetLanguage(CbLanguages.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
2016-09-12 22:25:34 +00:00
|
|
|
procedure TMainForm.CbShowEventHintsChange(Sender: TObject);
|
|
|
|
begin
|
2016-09-19 22:58:13 +00:00
|
|
|
VpDayView1.HintMode := hmPlannerHint;
|
|
|
|
VpWeekView1.HintMode := hmPlannerHint;
|
|
|
|
VpMonthView1.HintMode := hmPlannerHint;
|
|
|
|
VpContactGrid1.HintMode := hmPlannerHint;
|
2016-09-12 22:25:34 +00:00
|
|
|
|
|
|
|
VpDayView1.ShowHint := CbShowEventHints.Checked;
|
|
|
|
VpWeekView1.ShowHint := CbShowEventHints.Checked;
|
|
|
|
VpMonthView1.ShowHint := CbShowEventHints.Checked;
|
2016-09-19 22:58:13 +00:00
|
|
|
VpContactGrid1.ShowHint := CbShowEventHints.Checked;
|
2016-09-12 22:25:34 +00:00
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.CbTimeFormatChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpDayView1.TimeFormat := TVpTimeFormat(CbTimeFormat.ItemIndex);
|
|
|
|
VpWeekView1.TimeFormat := TVpTimeFormat(CbTimeFormat.ItemIndex);
|
|
|
|
VpMonthView1.TimeFormat := TVpTimeFormat(CbTimeFormat.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
2016-09-10 14:19:31 +00:00
|
|
|
// Creates a resource group at runtime
|
|
|
|
procedure TMainForm.CreateResourceGroup;
|
2016-09-11 08:14:11 +00:00
|
|
|
const
|
|
|
|
NAME_OF_GROUP = ''; // empty --> use resource description
|
2016-09-10 14:19:31 +00:00
|
|
|
var
|
|
|
|
datastore: TVpCustomDatastore;
|
2016-09-10 18:27:50 +00:00
|
|
|
grp: TVpResourceGroup;
|
2016-09-10 14:19:31 +00:00
|
|
|
begin
|
|
|
|
datastore := VpControlLink1.Datastore;
|
2016-09-11 08:14:11 +00:00
|
|
|
grp := datastore.Resources.AddResourceGroup([1, 2], NAME_OF_GROUP);
|
2016-09-11 13:35:19 +00:00
|
|
|
|
|
|
|
// Optionally uncomment these lines to get not-default behavior:
|
2016-09-11 13:46:45 +00:00
|
|
|
//grp.Pattern := opDiagCross;
|
2016-09-11 13:35:19 +00:00
|
|
|
//grp.ReadOnly := false;
|
|
|
|
//grp.ShowDetails := [odResource, odEventDescription, odEventCategory];
|
|
|
|
|
|
|
|
// Assign the resource group to the active resource of the datastore.
|
|
|
|
if datastore.Resource <> nil then
|
|
|
|
datastore.Resource.Group := grp
|
|
|
|
else
|
2016-09-10 18:27:50 +00:00
|
|
|
datastore.Resource.Group := nil;
|
2016-09-11 13:35:19 +00:00
|
|
|
|
|
|
|
// Important: This is not called internally so far!
|
2016-09-10 20:08:06 +00:00
|
|
|
datastore.RefreshEvents; // or: datastore.UpdateGroupEvents;
|
2016-09-10 14:19:31 +00:00
|
|
|
end;
|
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
|
|
begin
|
|
|
|
if CanClose then
|
|
|
|
try
|
|
|
|
WriteIni;
|
|
|
|
except
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
// Load the last resource.
|
|
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
|
|
begin
|
2016-09-02 17:58:47 +00:00
|
|
|
PopulateLanguages;
|
|
|
|
ReadIni;
|
2016-09-02 16:45:47 +00:00
|
|
|
|
2016-09-02 17:58:47 +00:00
|
|
|
// Establish connection of datastore (resides in a datamodule) to all
|
|
|
|
// dependent controls.
|
|
|
|
VpControlLink1.Datastore := DemoDM.Datastore;
|
|
|
|
|
|
|
|
with VpControlLink1.Datastore do begin
|
|
|
|
|
|
|
|
// These properties could be set also in Object Inspector.
|
|
|
|
// But we do it here at runtime because the mORMot datastore is
|
|
|
|
// created at runtime, and we want both versions to behave the same.
|
2016-09-02 16:45:47 +00:00
|
|
|
CategoryColorMap.Category0.BackgroundColor := clSkyBlue;
|
|
|
|
CategoryColorMap.Category0.Color := clNavy;
|
|
|
|
CategoryColorMap.Category0.Description := 'Appointment';
|
2017-05-23 17:39:54 +00:00
|
|
|
//CategoryColorMap.Category0.Bitmap.Transparent := true; // <-- not working
|
|
|
|
LoadGlyphFromRCDATA(CategoryColorMap.Category0.Bitmap, 'SORTASC');
|
2016-09-02 16:45:47 +00:00
|
|
|
CategoryColorMap.Category1.BackgroundColor := 13290239;
|
|
|
|
CategoryColorMap.Category1.Color := clRed;
|
|
|
|
CategoryColorMap.Category1.Description := 'Urgent';
|
|
|
|
CategoryColorMap.Category2.BackgroundColor := 16777175;
|
|
|
|
CategoryColorMap.Category2.Color := clTeal;
|
|
|
|
CategoryColorMap.Category2.Description := 'Meetings';
|
|
|
|
CategoryColorMap.Category3.BackgroundColor := 11468799;
|
|
|
|
CategoryColorMap.Category3.Color := clYellow;
|
|
|
|
CategoryColorMap.Category3.Description := 'Travel';
|
|
|
|
CategoryColorMap.Category4.BackgroundColor := 15332329;
|
|
|
|
CategoryColorMap.Category4.Color := clMoneyGreen;
|
|
|
|
CategoryColorMap.Category4.Description := 'Private';
|
2016-09-02 17:58:47 +00:00
|
|
|
|
|
|
|
PlayEventSounds := true;
|
2016-09-02 16:45:47 +00:00
|
|
|
OnPlaySound := @VpBufDSDataStore1PlaySound;
|
|
|
|
{$IFDEF WINDOWS}
|
|
|
|
MediaFolder := AppendPathDelim(SysUtils.GetEnvironmentVariable('SYSTEMROOT')) + 'media';
|
|
|
|
{$ENDIF}
|
|
|
|
|
2016-09-06 19:58:31 +00:00
|
|
|
if (Resources.Count > 0) then begin
|
|
|
|
if FResID = -1 then
|
|
|
|
Resource := Resources.Items[0]
|
|
|
|
else
|
|
|
|
ResourceID := FResID;
|
2016-09-10 14:19:31 +00:00
|
|
|
|
|
|
|
CreateResourceGroup;
|
2016-09-06 19:58:31 +00:00
|
|
|
end;
|
2016-09-02 17:58:47 +00:00
|
|
|
end;
|
2016-09-02 20:01:44 +00:00
|
|
|
|
|
|
|
Caption := Application.Title;
|
2016-06-22 20:19:35 +00:00
|
|
|
end;
|
|
|
|
|
2016-09-17 18:34:47 +00:00
|
|
|
function TMainForm.GetLanguageDir: String;
|
|
|
|
begin
|
|
|
|
if FLanguageDir = '' then
|
|
|
|
Result := ExpandFileName(AppendPathDelim(Application.Location) + LANGUAGE_DIR)
|
|
|
|
else
|
|
|
|
if FilenameIsAbsolute(FLanguageDir) then
|
|
|
|
Result := FLanguageDir
|
|
|
|
else
|
|
|
|
Result := ExpandFileName(AppendPathDelim(Application.Location) + FLanguageDir);
|
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.MnuAboutClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
F: TfrmAbout;
|
|
|
|
begin
|
|
|
|
F := TfrmAbout.Create(nil);
|
|
|
|
try
|
|
|
|
F.ShowModal;
|
|
|
|
finally
|
|
|
|
F.Free;
|
2016-06-19 22:24:29 +00:00
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2016-07-06 18:56:23 +00:00
|
|
|
procedure TMainForm.MnuEditPrintFormatsClick(Sender: TObject);
|
|
|
|
begin
|
2016-07-06 21:49:00 +00:00
|
|
|
VpPrintFormatEditDialog1.DrawingStyle := VpWeekView1.DrawingStyle;
|
2016-07-06 18:56:23 +00:00
|
|
|
VpPrintFormatEditDialog1.Execute;
|
|
|
|
end;
|
|
|
|
|
2016-07-29 15:56:52 +00:00
|
|
|
procedure TMainForm.MnuLoadPrintFormatsClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
if OpenDialog.Filename = '' then
|
|
|
|
OpenDialog.InitialDir := Application.Location else
|
|
|
|
OpenDialog.InitialDir := ExtractFileDir(OpenDialog.FileName);
|
|
|
|
if OpenDialog.Execute then
|
|
|
|
VpControlLink1.Printer.LoadFromFile(Opendialog.Filename, false);
|
|
|
|
end;
|
|
|
|
|
2016-07-07 21:15:18 +00:00
|
|
|
procedure TMainForm.MnuPrintClick(Sender: TObject);
|
2016-07-29 16:48:36 +00:00
|
|
|
var
|
|
|
|
F: TfrmReportSetup;
|
2016-07-07 21:15:18 +00:00
|
|
|
begin
|
2016-07-29 16:48:36 +00:00
|
|
|
if ReportData.StartDate = 0 then
|
|
|
|
ReportData.StartDate := VpMonthView1.Date;
|
|
|
|
if ReportData.EndDate = 0 then
|
|
|
|
ReportData.EndDate := VpMonthView1.Date;
|
|
|
|
if ReportData.Format = '' then
|
|
|
|
ReportData.Format := VpControlLink1.Printer.PrintFormats.Items[0].FormatName;
|
|
|
|
|
|
|
|
F := TfrmReportSetup.Create(nil);
|
|
|
|
try
|
|
|
|
F.ControlLink := VpControlLink1;
|
|
|
|
if not F.Execute(ReportData) then
|
|
|
|
exit;
|
|
|
|
|
|
|
|
if PrintDialog1.Execute then begin
|
|
|
|
Printer.BeginDoc;
|
|
|
|
VpControlLink1.Printer.CurFormat := VpControlLink1.Printer.Find(ReportData.Format);
|
|
|
|
VpControlLink1.Printer.Print(Printer, ReportData.StartDate, ReportData.EndDate);
|
|
|
|
Printer.EndDoc;
|
|
|
|
end;
|
|
|
|
finally
|
|
|
|
F.Free;
|
2016-07-07 21:15:18 +00:00
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2016-07-03 14:47:03 +00:00
|
|
|
procedure TMainForm.MnuPrintPreviewClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
t1, t2: TDateTime;
|
|
|
|
fmt: TVpPrintFormatItem;
|
|
|
|
fmtidx: Integer;
|
|
|
|
begin
|
|
|
|
fmtidx := VpPrintPreviewDialog1.ControlLink.Printer.CurFormat;
|
|
|
|
fmt := VpPrintPreviewDialog1.ControlLink.Printer.PrintFormats.Items[fmtidx];
|
|
|
|
case fmtidx of
|
|
|
|
0: begin // current week in DayView
|
|
|
|
t1 := StartOfTheWeek(now);
|
|
|
|
t2 := t1 + 7 - VpDayView1.NumDays mod 7; // + 7;
|
|
|
|
fmt.DayInc := VpDayView1.NumDays;
|
2016-07-06 14:23:45 +00:00
|
|
|
VpControlLink1.Printer.Granularity := gr30Min;
|
|
|
|
VpControlLink1.Printer.DayStart := h_08;
|
|
|
|
VpControlLink1.Printer.DayEnd := h_18;
|
2016-07-03 14:47:03 +00:00
|
|
|
end;
|
|
|
|
1: begin // current week in WeekView
|
|
|
|
t1 := StartOfTheWeek(now);
|
|
|
|
t2 := t1; // it all fits on one single page
|
|
|
|
end;
|
2016-07-15 17:54:33 +00:00
|
|
|
2: begin // Tasks of current week
|
|
|
|
t1 := StartOfTheWeek(now);
|
|
|
|
t2 := t1;
|
|
|
|
end;
|
2016-07-03 14:47:03 +00:00
|
|
|
end;
|
|
|
|
VpPrintPreviewDialog1.ControlLink := VpControlLink1;
|
|
|
|
VpPrintPreviewDialog1.Printer := Printer;
|
|
|
|
VpPrintPreviewDialog1.StartDate := t1;
|
2016-07-06 21:49:00 +00:00
|
|
|
VpPrintPreviewDialog1.EndDate := t2;
|
|
|
|
VpPrintPreviewDialog1.DrawingStyle := VpDayView1.DrawingStyle;
|
2016-07-03 14:47:03 +00:00
|
|
|
if VpPrintPreviewDialog1.Execute then
|
|
|
|
if PrintDialog1.Execute then begin
|
|
|
|
Printer.BeginDoc;
|
|
|
|
try
|
|
|
|
t1 := VpPrintPreviewDialog1.StartDate;
|
|
|
|
t2 := VpPrintPreviewDialog1.EndDate;
|
|
|
|
VpPrintPreviewDialog1.ControlLink.Printer.Print(Printer, t1, t2);
|
|
|
|
finally
|
|
|
|
Printer.EndDoc;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.MnuSettingsClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ShowSettings;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.MnuQuitClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
Close;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.MnuResourcesClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ShowResources;
|
|
|
|
end;
|
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure TMainForm.PopulateLanguages;
|
|
|
|
|
|
|
|
function ExtractLanguage(s: String): String;
|
|
|
|
var
|
|
|
|
p: Integer;
|
|
|
|
begin
|
|
|
|
s := ChangeFileExt(s, '');
|
|
|
|
p := RPos('.', s);
|
|
|
|
if p > 0 then
|
|
|
|
Result := Copy(s, p+1, Length(s))
|
|
|
|
else
|
|
|
|
Result := '';
|
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
|
|
L: TStrings;
|
|
|
|
po: TStringList;
|
|
|
|
lang: String;
|
|
|
|
i: Integer;
|
|
|
|
langdir: String;
|
|
|
|
begin
|
|
|
|
L := TStringList.Create;
|
|
|
|
po := TStringList.Create;
|
|
|
|
try
|
2016-09-17 18:34:47 +00:00
|
|
|
langdir := AppendPathDelim(GetLanguageDir);
|
2016-06-19 22:24:29 +00:00
|
|
|
FindAllFiles(L, langdir, '*.po');
|
|
|
|
po.Sorted := true;
|
|
|
|
po.Duplicates := dupIgnore;
|
|
|
|
for i := 0 to L.Count-1 do begin
|
|
|
|
lang := ExtractLanguage(L[i]);
|
|
|
|
case lang of
|
|
|
|
'de': po.Add('de - Deutsch');
|
|
|
|
'',
|
|
|
|
'en': po.Add('en - English');
|
|
|
|
'es': po.Add('es - Español');
|
2016-11-22 15:30:42 +00:00
|
|
|
'fi': po.Add('fi - Finnish');
|
2016-06-19 22:24:29 +00:00
|
|
|
'fr': po.Add('fr - Français');
|
|
|
|
'he': po.Add('he - Hebrew');
|
|
|
|
'hu': po.Add('hu - magyar');
|
|
|
|
'it': po.Add('it - Italian');
|
2016-07-04 15:53:06 +00:00
|
|
|
'nl': po.Add('nl - Dutch');
|
2016-06-19 22:24:29 +00:00
|
|
|
'ru': po.Add('ru - русский');
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
CbLanguages.Items.Assign(po);
|
2016-09-06 18:26:07 +00:00
|
|
|
// SetLanguage(lang);
|
|
|
|
SetLanguage(GetDefaultLang);
|
2016-06-19 22:24:29 +00:00
|
|
|
|
|
|
|
finally
|
|
|
|
po.Free;
|
|
|
|
L.Free;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2016-07-14 15:26:55 +00:00
|
|
|
procedure TMainForm.PositionControls;
|
|
|
|
var
|
|
|
|
w: Integer;
|
|
|
|
begin
|
|
|
|
// Settings page
|
|
|
|
w := MaxValue([
|
|
|
|
GetLabelWidth(LblLanguage),
|
|
|
|
GetLabelWidth(LblTimeFormat),
|
|
|
|
GetLabelWidth(LblFirstDayOfWeek),
|
2017-05-20 15:39:18 +00:00
|
|
|
GetLabelWidth(LblAddressBuilder),
|
|
|
|
GetLabelWidth(LblDrawingStyle)
|
2016-07-14 15:26:55 +00:00
|
|
|
]);
|
|
|
|
CbLanguages.Left := 24 + w + 8;
|
2017-05-20 16:03:55 +00:00
|
|
|
(*
|
2017-05-20 15:39:18 +00:00
|
|
|
// Resources page
|
|
|
|
w := MaxValue([BtnNewRes.Width, BtnEditRes.Width, BtnDeleteRes.Width]);
|
|
|
|
BtnNewRes.AutoSize := false;
|
|
|
|
BtnEditRes.AutoSize := false;
|
|
|
|
BtnDeleteRes.AutoSize := false;
|
|
|
|
BtnNewRes.Width := w;
|
|
|
|
BtnEditRes.Width := w;
|
|
|
|
BtnDeleteRes.Width := w;
|
2017-05-20 16:03:55 +00:00
|
|
|
*)
|
2016-07-14 15:26:55 +00:00
|
|
|
end;
|
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
procedure TMainForm.RbAllTasksChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpTaskList1.DisplayOptions.ShowAll := RbAllTasks.Checked;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.RbHideCompletedTasksChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpTaskList1.DisplayOptions.ShowAll := not RbHideCompletedTasks.Checked;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.ReadIni;
|
|
|
|
var
|
|
|
|
ini: TCustomIniFile;
|
|
|
|
lang: String;
|
2016-06-22 20:19:35 +00:00
|
|
|
L,T, W,H: Integer;
|
|
|
|
R: TRect;
|
2017-05-22 17:50:31 +00:00
|
|
|
n: Integer;
|
2016-06-19 22:24:29 +00:00
|
|
|
begin
|
|
|
|
ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
|
|
|
|
try
|
2016-06-22 20:19:35 +00:00
|
|
|
WindowState := wsNormal;
|
|
|
|
R := Screen.WorkAreaRect;
|
|
|
|
L := ini.ReadInteger('Form', 'Left', Left);
|
|
|
|
T := ini.ReadInteger('Form', 'Top', Top);
|
|
|
|
W := ini.ReadInteger('Form', 'Width', Width);
|
|
|
|
H := ini.ReadInteger('Form', 'Height', Height);
|
|
|
|
if L < R.Left then L := R.Left;
|
|
|
|
if L + W > R.Right then L := R.Right - W;
|
|
|
|
if L < R.Left then W := R.Right - R.Left;
|
|
|
|
if T < R.Top then T := R.Top;
|
|
|
|
if T + H > R.Bottom then T := R.Bottom - H;
|
|
|
|
if T < R.Top then H := R.Bottom - R.Top;
|
|
|
|
SetBounds(L, T, W, H);
|
|
|
|
|
|
|
|
w := ini.ReadInteger('Form', 'LeftPanel_Width', LeftPanel.Width);
|
|
|
|
if w < 200 then w := 200;
|
|
|
|
LeftPanel.Width := w;
|
|
|
|
|
|
|
|
h := ini.ReadInteger('Form', 'BottomPanel_Height', VpMonthView1.Height);
|
|
|
|
if h < 160 then h := 160;
|
|
|
|
VpMonthView1.Height := h;
|
|
|
|
|
2016-07-17 10:17:24 +00:00
|
|
|
lang := ini.ReadString('Settings', 'Language', ''); //GetDefaultLang);
|
2016-06-19 22:24:29 +00:00
|
|
|
SetLanguage(lang);
|
2016-06-22 20:19:35 +00:00
|
|
|
|
|
|
|
SetActiveView(ini.ReadInteger('Settings', 'ActiveView', 0));
|
2016-06-22 22:37:44 +00:00
|
|
|
VpNavBar1.ActiveFolder := FActiveView div 1000;
|
2016-06-22 20:19:35 +00:00
|
|
|
|
|
|
|
CbTimeFormat.ItemIndex := ini.ReadInteger('Settings', 'TimeFormat', ord(VpDayView1.TimeFormat));
|
|
|
|
CbTimeFormatChange(nil);
|
2016-06-22 21:16:10 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
CbGranularity.ItemIndex := ini.ReadInteger('Settings', 'Granularity', ord(VpDayView1.Granularity));
|
|
|
|
CbGranularityChange(nil);
|
2016-06-22 21:16:10 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
CbFirstDayOfWeek.ItemIndex := ini.ReadInteger('Settings', 'FirstDayOfWeek', ord(VpWeekView1.WeekStartsOn));
|
|
|
|
CbFirstDayOfWeekChange(nil);
|
|
|
|
|
2016-06-22 21:16:10 +00:00
|
|
|
if ini.ReadBool('Settings', 'AllTasks', VpTaskList1.DisplayOptions.ShowAll) then
|
|
|
|
RbAllTasks.Checked := true else
|
|
|
|
RbHideCompletedTasks.Checked := true;
|
|
|
|
RbAllTasksChange(nil);
|
|
|
|
|
2016-06-24 17:55:44 +00:00
|
|
|
FVisibleDays := ini.ReadInteger('Settings', 'VisibleDays', DaysTrackbar.Position);
|
|
|
|
if FActiveView = 3 then begin // DayView
|
|
|
|
DaysTrackbar.Position := FVisibleDays;
|
|
|
|
DaysTrackbarChange(nil);
|
|
|
|
end;
|
2016-06-22 21:16:10 +00:00
|
|
|
|
2016-06-29 13:55:10 +00:00
|
|
|
VpControlLink1.CityStateZipFormat := ini.ReadString('Settings', 'CityStateZip', '');
|
|
|
|
if VpControlLink1.CityStateZipFormat = '' then
|
|
|
|
CbAddressBuilder.ItemIndex := 0 else
|
|
|
|
CbAddressBuilder.ItemIndex := CbAddressBuilder.Items.Indexof(VpControlLink1.CityStateZipFormat);
|
|
|
|
|
2017-05-22 17:50:31 +00:00
|
|
|
n := ini.ReadInteger('Settings', 'DrawingStyle', ord(dsFlat));
|
|
|
|
if (n <= 0) or (n >= ord(High(TVpDrawingStyle))) then n := 0;
|
|
|
|
CbDrawingStyle.ItemIndex := n;
|
2016-08-26 13:33:45 +00:00
|
|
|
CbDrawingStyleChange(nil);
|
|
|
|
|
|
|
|
CbAllowInplaceEditing.Checked := ini.ReadBool('Settings', 'AllowInplaceEditing',
|
|
|
|
CbAllowInplaceEditing.Checked);
|
2016-06-23 23:16:34 +00:00
|
|
|
CbAllowInplaceEditingChange(nil);
|
|
|
|
|
2016-08-26 13:33:45 +00:00
|
|
|
CbAllowDragAndDrop.Checked := ini.ReadBool('Settings', 'AllowDragAndDrop',
|
|
|
|
CbAllowDragAndDrop.Checked);
|
|
|
|
CbAllowDragAndDropChange(nil);
|
|
|
|
|
|
|
|
CbDragDropTransparent.Checked := ini.ReadBool('Settings', 'DragAndDropTransparent',
|
|
|
|
CbDragDropTransparent.Checked);
|
|
|
|
CbDragDropTransparentChange(nil);
|
2016-07-01 15:19:38 +00:00
|
|
|
|
2016-09-12 22:25:34 +00:00
|
|
|
CbShowEventHints.Checked := ini.ReadBool('Settings', 'ShowEventHints',
|
|
|
|
CbShowEventHints.Checked);
|
|
|
|
CbShowEventHintsChange(nil);
|
|
|
|
|
2016-09-06 19:58:31 +00:00
|
|
|
FResID := ini.ReadInteger('Data', 'ResourceID', -1);
|
2016-06-19 22:24:29 +00:00
|
|
|
finally
|
|
|
|
ini.Free;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.WriteIni;
|
|
|
|
var
|
|
|
|
ini: TCustomIniFile;
|
|
|
|
begin
|
|
|
|
ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
|
|
|
|
try
|
2016-06-22 20:19:35 +00:00
|
|
|
if WindowState = wsNormal then begin
|
|
|
|
ini.WriteInteger('Form', 'Width', Width);
|
|
|
|
ini.WriteInteger('Form', 'Height', Height);
|
2016-09-06 18:26:07 +00:00
|
|
|
ini.WriteInteger('Form', 'Left', Left);
|
2016-06-22 20:19:35 +00:00
|
|
|
ini.WriteInteger('Form', 'Top', Top);
|
2016-06-22 22:37:44 +00:00
|
|
|
end;
|
|
|
|
if FActiveView = 0 then begin
|
2016-06-22 20:19:35 +00:00
|
|
|
ini.WriteInteger('Form', 'LeftPanel_Width', LeftPanel.Width);
|
|
|
|
ini.WriteInteger('Form', 'BottomPanel_Height', VpMonthView1.Height);
|
|
|
|
end;
|
2016-06-22 22:37:44 +00:00
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
ini.WriteString('Settings', 'Language', FLang);
|
2016-06-22 20:19:35 +00:00
|
|
|
ini.WriteInteger('Settings', 'ActiveView', FActiveView);
|
|
|
|
ini.WriteInteger('Settings', 'TimeFormat', ord(VpDayView1.TimeFormat));
|
|
|
|
ini.WriteInteger('Settings', 'Granularity', ord(VpDayView1.Granularity));
|
|
|
|
ini.WriteInteger('Settings', 'FirstDayOfWeek', ord(VpWeekView1.WeekStartsOn));
|
2016-06-29 13:55:10 +00:00
|
|
|
ini.WriteString('Settings', 'CityStateZip', VpControlLink1.CityStateZipFormat);
|
2016-08-26 13:33:45 +00:00
|
|
|
ini.WriteInteger('Settings', 'DrawingStyle', CbDrawingStyle.ItemIndex);
|
2016-06-24 17:55:44 +00:00
|
|
|
ini.WriteInteger('Settings', 'VisibleDays', FVisibleDays);
|
2016-06-22 21:16:10 +00:00
|
|
|
ini.WriteBool('Settings', 'AllTasks', VpTaskList1.DisplayOptions.ShowAll);
|
2016-06-23 23:16:34 +00:00
|
|
|
ini.WriteBool('Settings', 'AllowInplaceEditing', CbAllowInplaceEditing.Checked);
|
2016-08-26 13:33:45 +00:00
|
|
|
ini.WriteBool('Settings', 'AllowDragAndDrop', CbAllowDragAndDrop.Checked);
|
|
|
|
ini.WriteBool('Settings', 'DragAndDropTransparent', CbDragDropTransparent.Checked);
|
2016-09-12 22:25:34 +00:00
|
|
|
ini.WriteBool('Settings', 'ShowEventHints', CbShowEventHints.Checked);
|
2016-09-06 19:58:31 +00:00
|
|
|
|
|
|
|
ini.WriteInteger('Data', 'ResourceID', VpControlLink1.Datastore.ResourceID);
|
2016-06-19 22:24:29 +00:00
|
|
|
finally
|
|
|
|
ini.Free;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.SetLanguage(AIndex: Integer);
|
|
|
|
var
|
|
|
|
p: Integer;
|
|
|
|
lang: String;
|
|
|
|
begin
|
|
|
|
p := pos(' - ', CbLanguages.Items[AIndex]);
|
|
|
|
if p > 0 then
|
|
|
|
lang := Copy(CbLanguages.Items[AIndex], 1, p-1)
|
|
|
|
else
|
|
|
|
raise Exception.Create('Incorrect structure of language combobox.');
|
|
|
|
SetLanguage(lang);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.SetLanguage(ALang: String);
|
|
|
|
var
|
|
|
|
i: Integer;
|
|
|
|
langdir: String;
|
|
|
|
found: Boolean;
|
|
|
|
tfmt: TVpTimeFormat;
|
|
|
|
firstWeekDay: TVpDayType;
|
|
|
|
translator: TUpdateTranslator;
|
2016-06-22 20:19:35 +00:00
|
|
|
nf: TVpNavFolder;
|
2016-06-19 22:24:29 +00:00
|
|
|
begin
|
2016-09-17 18:34:47 +00:00
|
|
|
langdir := AppendPathDelim(GetLanguageDir);
|
2016-06-19 22:24:29 +00:00
|
|
|
|
|
|
|
// Select new language
|
|
|
|
if ALang = 'en' then
|
|
|
|
FLang := '' else
|
|
|
|
FLang := ALang;
|
|
|
|
|
|
|
|
if FLang = '' then begin
|
2016-11-22 15:30:42 +00:00
|
|
|
// Translate VisualPlanIt strings.
|
2016-06-19 22:24:29 +00:00
|
|
|
TranslateUnitResourceStrings('vpsr', langdir + 'vpsr.po');
|
|
|
|
|
|
|
|
{ NOTE: Translation of app strings back to english not working }
|
|
|
|
|
2016-11-22 15:30:42 +00:00
|
|
|
// Translate demo strings
|
2016-06-19 22:24:29 +00:00
|
|
|
TranslateUnitResourceStrings('demoMain', langDir + 'demo.po');
|
2016-11-22 15:30:42 +00:00
|
|
|
|
|
|
|
// Translate LCL strings (please copy lclstrconsts.* from Lazarus/lcl/langauges
|
|
|
|
// to tvplanit/languages.
|
2016-06-19 22:24:29 +00:00
|
|
|
TranslateUnitResourceStrings('lclstrconsts', langDir + 'lclstrconsts.po');
|
2016-07-14 23:04:23 +00:00
|
|
|
|
|
|
|
if FileExistsUTF8(langdir + 'demo.po') then begin
|
|
|
|
translator := TPOTranslator.Create(langdir + 'demo.po');
|
|
|
|
if Assigned(LRSTranslator) then
|
|
|
|
LRSTranslator.Free;
|
|
|
|
LRSTranslator := translator;
|
|
|
|
for i := 0 to Screen.CustomFormCount-1 do
|
|
|
|
translator.UpdateTranslation(Screen.CustomForms[i]);
|
|
|
|
end;
|
|
|
|
end
|
|
|
|
else
|
2016-06-19 22:24:29 +00:00
|
|
|
begin
|
|
|
|
SetDefaultLang(FLang, langdir);
|
|
|
|
TranslateUnitResourceStrings('vpsr', langdir + 'vpsr.' + FLang + '.po');
|
|
|
|
end;
|
2016-08-08 18:29:24 +00:00
|
|
|
{
|
2016-06-19 22:41:36 +00:00
|
|
|
VpDayView1.LoadLanguage;
|
|
|
|
VpWeekView1.LoadLanguage;
|
|
|
|
VpMonthView1.LoadLanguage;
|
2016-06-24 22:34:38 +00:00
|
|
|
VpTaskList1.LoadLanguage;
|
|
|
|
VpContactGrid1.LoadLanguage;
|
2016-08-08 18:29:24 +00:00
|
|
|
//VpCalendar1.LoadLanguage;
|
|
|
|
}
|
2016-06-19 22:24:29 +00:00
|
|
|
// Select language in language combobox.
|
|
|
|
if ALang = '' then ALang := 'en';
|
|
|
|
found := false;
|
|
|
|
for i:=0 to CbLanguages.Items.Count-1 do
|
|
|
|
if pos(ALang + ' ', CbLanguages.Items[i]) = 1 then begin
|
|
|
|
CbLanguages.ItemIndex := i;
|
|
|
|
found := true;
|
|
|
|
break;
|
|
|
|
end;
|
|
|
|
if not found then
|
|
|
|
CbLanguages.ItemIndex := 0;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
// Update UI strings
|
|
|
|
nf := TVpNavFolder(VpNavBar1.FolderCollection.ItemByName('NFPlanner'));
|
|
|
|
nf.Caption := RSPlanner;
|
|
|
|
nf.ItemByName('NIEvents').Caption := RSEventsOverview;
|
|
|
|
nf.ItemByName('NIEventsByMonth').Caption := RSEventsPerMonth;
|
|
|
|
nf.ItemByName('NIEventsByWeek').Caption := RSEventsPerWeek;
|
|
|
|
nf.ItemByName('NIEventsByDay').Caption := RSEventsPerDay;
|
|
|
|
nf.ItemByName('NITasks').Caption := RSTasks;
|
|
|
|
nf.ItemByName('NIContacts').Caption := RSContacts;
|
|
|
|
|
|
|
|
nf := TVpNavFolder(VpNavBar1.FolderCollection.ItemByName('NFMaintenance'));
|
|
|
|
nf.Caption := RSMaintenance;
|
|
|
|
nf.ItemByname('NIResources').Caption := RSResources;
|
|
|
|
nf.ItembyName('NISettings').Caption := RSSettings_short;
|
|
|
|
|
|
|
|
CbTimeFormat.Items.Clear;
|
|
|
|
CbTimeFormat.Items.Add(RS24hours);
|
|
|
|
CbTimeFormat.Items.Add(RS12hours);
|
|
|
|
|
|
|
|
CbGranularity.Items.Clear;
|
|
|
|
CbGranularity.Items.Add(RS5Min);
|
|
|
|
CbGranularity.Items.Add(RS6Min);
|
|
|
|
CbGranularity.Items.Add(RS10Min);
|
|
|
|
CbGranularity.Items.Add(RS15Min);
|
|
|
|
CbGranularity.Items.Add(RS20Min);
|
|
|
|
CbGranularity.Items.Add(RS30Min);
|
|
|
|
CbGranularity.Items.Add(RS60Min);
|
|
|
|
|
|
|
|
CbFirstDayOfWeek.Items.Clear;
|
|
|
|
CbFirstDayOfWeek.Items.Add(RSSunday);
|
|
|
|
CbFirstDayOfWeek.Items.Add(RSMonday);
|
|
|
|
CbFirstDayOfWeek.Items.Add(RSTuesday);
|
|
|
|
CbFirstDayOfWeek.Items.Add(RSWednesday);
|
|
|
|
CbFirstDayOfWeek.Items.Add(RSThursday);
|
|
|
|
CbFirstDayOfWeek.Items.Add(RSFriday);
|
|
|
|
CbFirstDayOfWeek.Items.Add(RSSaturday);
|
|
|
|
|
2016-07-08 10:04:20 +00:00
|
|
|
CbDrawingStyle.Items.Clear;
|
|
|
|
CbDrawingStyle.Items.Add(RSFlat);
|
|
|
|
CbDrawingStyle.Items.Add(RS3d);
|
|
|
|
CbDrawingStyle.Items.Add(RSBorderless);
|
2016-07-07 21:15:18 +00:00
|
|
|
|
2016-07-29 15:56:52 +00:00
|
|
|
OpenDialog.Filter := rsXMLFiles + '|*.xml';
|
|
|
|
|
2016-06-19 22:24:29 +00:00
|
|
|
// Next settings work correctly only for Windows.
|
|
|
|
{$IFDEF WINDOWS}
|
|
|
|
UpdateFormatSettings(ALang);
|
|
|
|
VpDayView1.DateLabelFormat := FormatSettings.LongDateFormat;
|
|
|
|
VpWeekView1.DayHeadAttributes.DateFormat := FormatSettings.LongDateFormat;
|
|
|
|
VpWeekView1.DateLabelFormat := FormatSettings.LongDateFormat;
|
|
|
|
VpMonthView1.DateLabelFormat := 'mmmm yyyy';
|
|
|
|
VpTaskList1.DisplayOptions.DueDateFormat := FormatSettings.ShortDateFormat;
|
|
|
|
tfmt := GetTimeFormat;
|
|
|
|
VpDayView1.TimeFormat := tfmt;
|
|
|
|
VpWeekView1.TimeFormat := tfmt;
|
|
|
|
VpMonthView1.TimeFormat := tfmt;
|
2016-08-08 18:29:24 +00:00
|
|
|
{$ENDIF}
|
2016-06-19 22:24:29 +00:00
|
|
|
firstWeekDay := GetFirstDayofWeek(ALang); // not correct at the moment
|
|
|
|
VpMonthView1.WeekStartsOn := firstWeekDay;
|
|
|
|
VpWeekView1.WeekStartsOn := firstWeekDay;
|
2016-08-08 18:29:24 +00:00
|
|
|
//VpCalendar1.WeekStarts := firstWeekDay;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-07-14 15:26:55 +00:00
|
|
|
PositionControls;
|
|
|
|
|
2016-06-24 22:34:38 +00:00
|
|
|
SetActiveView(1001);
|
2016-06-19 22:24:29 +00:00
|
|
|
Invalidate;
|
|
|
|
end;
|
|
|
|
|
2016-09-17 18:34:47 +00:00
|
|
|
procedure TMainForm.SetLanguageDir(const AValue: String);
|
|
|
|
begin
|
|
|
|
FLanguageDir := AValue;
|
|
|
|
PopulateLanguages;
|
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.ShowAllEvents;
|
2016-06-22 14:28:19 +00:00
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 0;
|
2016-06-22 20:19:35 +00:00
|
|
|
VpDayView1.Parent := LeftPanel;
|
|
|
|
VpMonthView1.Parent := LeftPanel;
|
|
|
|
VpMonthView1.Align := alBottom;
|
|
|
|
VpDayview1.Show;
|
|
|
|
VpMonthView1.Show;
|
|
|
|
Splitter2.Top := 0;
|
|
|
|
LeftPanel.Show;
|
|
|
|
Splitter3.Show;
|
|
|
|
Splitter3.Left := Width;
|
|
|
|
VpWeekView1.Show;
|
|
|
|
DaySelectorPanel.Hide;
|
|
|
|
VpDayView1.NumDays := 1;
|
|
|
|
TitleLbl.Caption := RSEventsOverview;
|
|
|
|
ImageList1.GetBitmap(0, Img.Picture.Bitmap);
|
2016-06-22 14:28:19 +00:00
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainform.ShowEventsPerMonth;
|
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 0;
|
2016-06-22 20:19:35 +00:00
|
|
|
LeftPanel.Hide;
|
|
|
|
Splitter3.Hide;
|
2016-07-18 22:19:33 +00:00
|
|
|
VpDayView1.Hide;
|
2016-06-22 20:19:35 +00:00
|
|
|
VpWeekView1.Hide;
|
2016-07-18 22:19:33 +00:00
|
|
|
VpMonthView1.Parent := Notebook.Page[0];
|
2016-06-22 20:19:35 +00:00
|
|
|
VpMonthView1.Align := alClient;
|
|
|
|
VpMonthView1.Show;
|
|
|
|
DaySelectorPanel.Hide;
|
|
|
|
TitleLbl.Caption := RSEventsPerMonth;
|
|
|
|
ImageList1.GetBitmap(5, Img.Picture.Bitmap);
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.ShowEventsPerWeek;
|
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 0;
|
2016-06-22 20:19:35 +00:00
|
|
|
LeftPanel.Hide;
|
|
|
|
Splitter3.Hide;
|
|
|
|
VpMonthView1.Hide;
|
|
|
|
VpDayView1.Hide;
|
|
|
|
VpWeekView1.Show;
|
|
|
|
DaySelectorPanel.Hide;
|
|
|
|
TitleLbl.Caption := RSEventsPerWeek;
|
|
|
|
ImageList1.GetBitmap(4, Img.Picture.Bitmap);
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainform.ShowEventsPerDay;
|
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 0;
|
2016-06-22 20:19:35 +00:00
|
|
|
LeftPanel.Hide;
|
|
|
|
Splitter3.Hide;
|
2016-06-25 10:56:48 +00:00
|
|
|
VpMonthView1.Hide;
|
2016-06-22 20:19:35 +00:00
|
|
|
VpWeekView1.Hide;
|
2016-07-18 22:19:33 +00:00
|
|
|
VpDayView1.Parent := Notebook.Page[Notebook.PageIndex];
|
2016-06-22 20:19:35 +00:00
|
|
|
VpDayView1.Align := alClient;
|
|
|
|
VpDayView1.Show;
|
2016-07-18 22:19:33 +00:00
|
|
|
DaySelectorPanel.Parent := Notebook.Page[Notebook.PageIndex];
|
2016-06-22 20:19:35 +00:00
|
|
|
DaySelectorPanel.Show;
|
2016-06-24 17:55:44 +00:00
|
|
|
DaysTrackbar.Position := FVisibleDays;
|
2016-06-22 20:19:35 +00:00
|
|
|
VpDayView1.NumDays := DaysTrackBar.Position;
|
|
|
|
TitleLbl.Caption := RSEventsPerDay;
|
|
|
|
ImageList1.GetBitmap(3, Img.Picture.Bitmap);
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.ShowTasks;
|
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 1;
|
2016-06-22 20:19:35 +00:00
|
|
|
titleLbl.Caption := RSTasks;
|
|
|
|
ImageList1.GetBitmap(1, Img.Picture.Bitmap);
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-07-19 23:24:09 +00:00
|
|
|
procedure TMainForm.VpBufDSDataStore1PlaySound(Sender: TObject;
|
|
|
|
const AWavFile: String; AMode: TVpPlaySoundMode);
|
|
|
|
begin
|
|
|
|
sound.PlaySound(AWavFile, AMode);
|
|
|
|
end;
|
|
|
|
|
2016-09-22 17:47:27 +00:00
|
|
|
procedure TMainForm.VpHoliday(Sender: TObject; ADate: TDateTime;
|
|
|
|
var AHolidayName: String);
|
|
|
|
var
|
|
|
|
d,m,y: Word;
|
|
|
|
tmp: Word;
|
|
|
|
easterDate: TDate;
|
|
|
|
begin
|
|
|
|
DecodeDate(ADate, y,m,d);
|
|
|
|
if (d=1) and (m=1) then
|
|
|
|
AHolidayName := 'New Year'
|
|
|
|
else
|
|
|
|
if (d = 25) and (m = 12) then
|
|
|
|
AHolidayName := 'Christmas'
|
|
|
|
else
|
|
|
|
if m = 9 then begin
|
|
|
|
tmp := 1;
|
|
|
|
while DayOfWeek(EncodeDate(y, m, tmp)) <> 2 do inc(tmp);
|
|
|
|
if tmp = d then
|
|
|
|
AHolidayName := 'Labor Day (U.S.)'; // 1st Monday in September
|
|
|
|
end
|
|
|
|
else begin
|
|
|
|
// Holidays depending on the date of Easter.
|
|
|
|
easterDate := Easter(y);
|
|
|
|
if ADate = easterDate - 2 then
|
|
|
|
AHolidayName := 'Good Friday'
|
|
|
|
else
|
|
|
|
if ADate = easterDate then
|
|
|
|
AHolidayName := 'Easter'
|
|
|
|
else
|
|
|
|
if ADate = easterDate + 49 then
|
|
|
|
AHolidayName := 'Whitsunday'
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.ShowContacts;
|
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 2;
|
2016-06-22 20:19:35 +00:00
|
|
|
TitleLbl.Caption := RSContacts;
|
|
|
|
ImageList1.GetBitmap(2, Img.Picture.Bitmap);
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.ShowResources;
|
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 3;
|
2016-06-22 20:19:35 +00:00
|
|
|
TitleLbl.Caption := RSResources;
|
|
|
|
ImageList1.GetBitmap(7, Img.Picture.Bitmap);
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.ShowSettings;
|
|
|
|
begin
|
2016-07-18 22:19:33 +00:00
|
|
|
Notebook.PageIndex := 4;
|
2016-06-22 20:19:35 +00:00
|
|
|
TitleLbl.Caption := RSSettings;
|
|
|
|
ImageList1.GetBitmap(8, Img.Picture.Bitmap);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.DaysTrackBarChange(Sender: TObject);
|
|
|
|
begin
|
2016-06-24 17:55:44 +00:00
|
|
|
if FActiveView = 3 then
|
|
|
|
FVisibleDays := DaysTrackbar.Position;
|
2016-06-22 20:19:35 +00:00
|
|
|
VpDayView1.NumDays := DaysTrackBar.Position;
|
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
|
2016-06-22 20:19:35 +00:00
|
|
|
procedure TMainForm.VpNavBar1ItemClick(Sender: TObject; Button: TMouseButton;
|
|
|
|
Shift: TShiftState; Index: Integer);
|
|
|
|
begin
|
|
|
|
SetActiveView(VpNavBar1.ActiveFolder * 1000 + Index);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TMainForm.SetActiveView(AValue: Integer);
|
|
|
|
var
|
|
|
|
folderIndex, itemIndex: Integer;
|
2016-06-19 22:24:29 +00:00
|
|
|
begin
|
2016-06-22 20:19:35 +00:00
|
|
|
FActiveView := AValue;
|
|
|
|
folderIndex := AValue div 1000;
|
|
|
|
itemIndex := AValue mod 1000;
|
|
|
|
case folderIndex of
|
|
|
|
0: case itemIndex of // All planner items
|
2016-06-19 22:24:29 +00:00
|
|
|
0: ShowAllEvents; // show all
|
|
|
|
1: ShowEventsPerMonth; // Month view only
|
|
|
|
2: ShowEventsPerWeek; // Week view only
|
|
|
|
3: ShowEventsPerDay; // Day view only
|
|
|
|
4: ShowTasks; // Tasks
|
|
|
|
5: ShowContacts; // Contacts
|
|
|
|
end;
|
2016-06-22 20:19:35 +00:00
|
|
|
1: case itemIndex of
|
|
|
|
0: ShowResources;
|
|
|
|
1: ShowSettings;
|
2016-06-19 22:24:29 +00:00
|
|
|
end;
|
2016-06-24 22:34:38 +00:00
|
|
|
end;
|
2016-06-19 22:24:29 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|
|
|
|
|