Subversion Repositories stackman

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. unit main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  7.   StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
  8.   ActnList, ToolWin, ImgList, ShellAPI;
  9.  
  10. type
  11.   TMainForm = class(TForm)
  12.     MainMenu1: TMainMenu;
  13.     Window1: TMenuItem;
  14.     Help1: TMenuItem;
  15.     WindowCascadeItem: TMenuItem;
  16.     WindowTileItem: TMenuItem;
  17.     WindowArrangeItem: TMenuItem;
  18.     HelpAboutItem: TMenuItem;
  19.     WindowMinimizeItem: TMenuItem;
  20.     StatusBar: TStatusBar;
  21.     ActionList1: TActionList;
  22.     FileKategorien1: TAction;
  23.     FileExit1: TAction;
  24.     WindowCascade1: TWindowCascade;
  25.     WindowTileHorizontal1: TWindowTileHorizontal;
  26.     WindowArrangeAll1: TWindowArrange;
  27.     WindowMinimizeAll1: TWindowMinimizeAll;
  28.     HelpAbout1: TAction;
  29.     WindowTileVertical1: TWindowTileVertical;
  30.     WindowTileItem2: TMenuItem;
  31.     ToolBar2: TToolBar;
  32.     ToolButton3: TToolButton;
  33.     ToolButton9: TToolButton;
  34.     ToolButton8: TToolButton;
  35.     ToolButton10: TToolButton;
  36.     ToolButton11: TToolButton;
  37.     N1: TMenuItem;
  38.     Beenden1: TMenuItem;
  39.     Kategorie1: TMenuItem;
  40.     N2: TMenuItem;
  41.     JournalOpen: TMenuItem;
  42.     Timer1: TTimer;
  43.     Timer2: TTimer;
  44.     Neu1: TMenuItem;
  45.     AufUpdatesprfen1: TMenuItem;
  46.     FileNeu1: TAction;
  47.     FileJournal1: TAction;
  48.     ToolButton1: TToolButton;
  49.     ToolButton2: TToolButton;
  50.     HelpUpdates1: TAction;
  51.     ImageList2: TImageList;
  52.     procedure FileKategorien1Execute(Sender: TObject);
  53.     procedure HelpAbout1Execute(Sender: TObject);
  54.     procedure FileExit1Execute(Sender: TObject);
  55.     procedure FormCreate(Sender: TObject);
  56.     procedure JournalOpenClick(Sender: TObject);
  57.     procedure Timer1Timer(Sender: TObject);
  58.     procedure Timer2Timer(Sender: TObject);
  59.     procedure FormResize(Sender: TObject);
  60.     procedure Neu1Click(Sender: TObject);
  61.     procedure AufUpdates1Click(Sender: TObject);
  62.   private
  63.     CloseTimerInitialized: boolean;
  64.     CloseTimerMin: Integer;
  65.   end;
  66.  
  67. var
  68.   MainForm: TMainForm;
  69.  
  70. implementation
  71.  
  72. {$R *.dfm}
  73.  
  74. uses
  75.   about, categories, global, journal;
  76.  
  77. procedure TMainForm.FileKategorien1Execute(Sender: TObject);
  78. begin
  79.   openCategoriesWindow();
  80. end;
  81.  
  82. procedure TMainForm.HelpAbout1Execute(Sender: TObject);
  83. begin
  84.   AboutBox.ShowModal;
  85. end;
  86.  
  87. procedure TMainForm.JournalOpenClick(Sender: TObject);
  88. var
  89.   i: integer;
  90.   somethingfound: boolean;
  91. begin
  92.   somethingfound := false;
  93.  
  94.   for i := Screen.FormCount - 1 downto 0 do
  95.   begin
  96.     if Screen.Forms[i] is TMDIJournalForm then
  97.     begin
  98.       Screen.Forms[i].BringToFront;
  99.       Screen.Forms[i].WindowState := wsNormal;
  100.       somethingfound := true;
  101.       break;
  102.     end
  103.   end;
  104.  
  105.   if not somethingfound then
  106.   begin
  107.     TMDIJournalForm.Create(Application);
  108.   end;
  109. end;
  110.  
  111. procedure TMainForm.Neu1Click(Sender: TObject);
  112. var
  113.   i: integer;
  114.   somethingfound: boolean;
  115. begin
  116.   somethingfound := false;
  117.  
  118.   for i := Screen.FormCount - 1 downto 0 do
  119.   begin
  120.     if Screen.Forms[i] is TMDICategories then
  121.     begin
  122.       TMDICategories(Screen.Forms[i]).DoNew;
  123.       somethingfound := true;
  124.       break;
  125.     end
  126.   end;
  127.  
  128.   if not somethingfound then
  129.   begin
  130.     newDialog(''); // Aus der Wurzel erstellen
  131.   end;
  132. end;
  133.  
  134. procedure TMainForm.Timer1Timer(Sender: TObject);
  135. begin
  136.   // timer1.Enabled := false;
  137.  
  138.   if not CloseTimerInitialized then
  139.   begin
  140.     CloseTimerMin := Screen.FormCount;
  141.   end;
  142.  
  143.   if Screen.FormCount <= CloseTimerMin then
  144.   begin
  145.     if not CloseTimerInitialized then
  146.     begin
  147.       Kategorie1.Click; // Im OnShow ist das Ergebnis anders (Fenster zu klein, schwarze Ränder an abgerundeten Fensterkanten)
  148.     end
  149.     else
  150.     begin
  151.       if CfgOpenCatWhenEverythingClosed then Kategorie1.Click; // Das Fenster soll immer geöffnet werden, wenn alles andere geschlossen ist
  152.     end;
  153.   end;
  154.  
  155.   if not CloseTimerInitialized then
  156.   begin
  157.     CloseTimerInitialized := true;
  158.   end;
  159. end;
  160.  
  161. procedure TMainForm.Timer2Timer(Sender: TObject);
  162. begin
  163.   StatusBar.Panels.Items[1].Text := DateTimeToStr(Now());
  164. end;
  165.  
  166. procedure TMainForm.AufUpdates1Click(Sender: TObject);
  167. const
  168.   abbreviation = 'stackman';
  169.   thisversion = '5.1';
  170. resourcestring
  171.   lng_no_new_version = 'Es ist keine neue Programmversion vorhanden.';
  172.   lng_update_error = 'Ein Fehler ist aufgetreten. Wahrscheinlich ist keine Internetverbindung aufgebaut, oder der der ViaThinkSoft-Server temporär offline.';
  173.   lng_caption_error = 'Fehler';
  174.   lng_caption_information = 'Information';
  175.   lng_update_new_version = 'Eine neue Programmversion (%s) ist vorhanden. Möchten Sie diese jetzt herunterladen?';
  176. const
  177.   url_comparison = 'http://www.viathinksoft.de/update/?id=%s&expect_version=%s';
  178.   url_version = 'http://www.viathinksoft.de/update/?id=%s';
  179.   url_download = 'http://www.viathinksoft.de/update/?id=@%s';
  180.   res_nothing = 'NO_UPDATES';
  181.   res_updates = 'UPDATE_AVAILABLE';
  182. var
  183.   temp: string;
  184. begin
  185.   temp := GetHTML(Format(url_comparison, [abbreviation, thisversion]));
  186.  
  187.   if temp = res_nothing then
  188.   begin
  189.     Application.MessageBox(PChar(lng_no_new_version), PChar(lng_caption_information), MB_OK + MB_ICONASTERISK);
  190.   end
  191.   else if temp = res_updates then
  192.   begin
  193.     temp := GetHTML(Format(url_version, [abbreviation]));
  194.     if Application.MessageBox(PChar(Format(lng_update_new_version, [temp])), PChar(lng_caption_information), MB_YESNO + MB_ICONASTERISK) = ID_YES then
  195.     begin
  196.       ShellExecute(application.handle, 'open', pchar(Format(url_download, [abbreviation])), '', '', sw_normal);
  197.     end;
  198.   end
  199.   else
  200.   begin
  201.     Application.MessageBox(PChar(lng_update_error), PChar(lng_caption_error), MB_OK + MB_ICONERROR)
  202.   end;
  203. end;
  204.  
  205. procedure TMainForm.FileExit1Execute(Sender: TObject);
  206. begin
  207.   Close;
  208. end;
  209.  
  210. procedure TMainForm.FormCreate(Sender: TObject);
  211. begin        
  212.   if not DirectoryExists(getDataPath()) then
  213.   begin
  214.     ForceDirectories(getDataPath());
  215.   end;
  216. end;
  217.  
  218. procedure TMainForm.FormResize(Sender: TObject);
  219. begin
  220.   StatusBar.Panels.Items[0].Width := StatusBar.Width - StatusBar.Panels.Items[1].Width;
  221. end;
  222.  
  223. end.
  224.