Browse Source

dialog to edit book metadata

Bernardo Magri 8 years ago
parent
commit
3e4ba5ae45
5 changed files with 145 additions and 78 deletions
  1. 29 2
      src/book.pas
  2. 20 4
      src/bookcollection.pas
  3. 9 1
      src/myBookShelf.lpi
  4. 2 1
      src/myBookShelf.lpr
  5. 85 70
      src/myBookShelf.lps

+ 29 - 2
src/book.pas

@@ -5,7 +5,7 @@ unit Book;
 interface
 
 uses
-  Classes, Sysutils, Graphics, ExtCtrls, LCLIntf;
+  Classes, Sysutils, Graphics, ExtCtrls, LCLIntf, Controls;
 
 type
 
@@ -14,6 +14,8 @@ type
   TBook = class(TObject)
     private
       mTitle : String;
+      mAuthors:String;
+      mISBN:String;
       mFilePath : String;
       mCover : TImage;
       mImagePath : String;
@@ -24,10 +26,15 @@ type
       procedure Setimage(Avalue: String);
     public
       constructor Create(parent:TComponent);
+      procedure Bookmousedown(Sender: Tobject; Button: Tmousebutton;
+        Shift: Tshiftstate; X, Y: Integer);
       property Cover : TImage read mCover;
-      property ImagePath : String write SetImage;
+      property ImagePath : String read mImagePath write SetImage;
       property FilePath : String read mFilePath write SetFile;
       property isSelected : Boolean read mIsSelected write mIsSelected;
+      property Title : String read mTitle write mTitle;
+      property Authors : String read mAuthors write mAuthors;
+      property ISBN : String read mISBN write mISBN;
       destructor Destroy;
       procedure BookClick(Sender:TObject);
       procedure BookDoubleClick(Sender:TObject);
@@ -36,6 +43,8 @@ type
 
 implementation
 
+uses UnitBookDialog;
+
 { TBook }
 
 procedure Tbook.Setimage(Avalue: String);
@@ -67,9 +76,26 @@ begin
   mCover.OnClick:=@BookClick;
   mCover.OnDblClick:=@BookDoubleClick;
   mCover.OnPaint:=@BookCoverPaint;
+  mCover.OnMouseDown:=@Bookmousedown;
   mIsSelected:=False;
+  mTitle:='null';
+  mAuthors:='null';
+  mISBN:='null';
+  mImagePath:='null';
 end;
 
+procedure Tbook.Bookmousedown(Sender: Tobject; Button: Tmousebutton;
+  Shift: Tshiftstate; X, Y: Integer);
+var  dialog:TBookEditDialog;
+begin
+  if Button = TMouseButton.mbRight then
+     begin
+        dialog:= TBookEditDialog.Create(nil);
+        dialog.LoadBook(Self);
+        dialog.ShowModal;
+     end;
+End;
+
 
 destructor Tbook.Destroy;
 begin
@@ -100,5 +126,6 @@ begin
     end;
 end;
 
+
 end.
 

+ 20 - 4
src/bookcollection.pas

@@ -87,7 +87,12 @@ begin
     for i:=0 to mList.Count-1 do
         begin
           temp:= (TBook(mList[i]));
-          writeln(tfOut, temp.FilePath);
+          writeln(tfOut, temp.Title);
+          WriteLn(tfOut, temp.Authors);
+          WriteLn(tfOut, temp.ISBN);
+          writeLn(tfOut, temp.FilePath);
+          writeLn(tfOut, temp.ImagePath);
+          writeLn(tfOut, '**********************');
         end;
 
     CloseFile(tfOut);
@@ -102,7 +107,8 @@ end;
 
 procedure Tbookcollection.Loaddata(Path: String; Parent: Tcomponent);
 var tempBook:TBook;
-    tempPath:String;
+    title,filepath,imagepath:String;
+    authors,isbn:String;
     dataFile:TextFile;
 begin
   AssignFile(dataFile, path);
@@ -111,9 +117,19 @@ begin
     Reset(dataFile);
     while not EOF(dataFile) do
     begin
-      readln(dataFile, tempPath);
+      readln(dataFile, title);
+      readln(datafile, authors);
+      readln(datafile, isbn);
+      readln(datafile, filepath);
+      readln(datafile, imagepath);
+      readln(datafile);
+
       tempBook:=TBook.Create(parent);
-      tempBook.FilePath:=tempPath;
+      tempbook.Title:=title;
+      tempbook.Authors:=authors;
+      tempbook.ISBN:=isbn;
+      tempBook.FilePath:=filepath;
+      tempBook.ImagePath:=imagepath;
       mList.Add(tempBook);
     end;
 

+ 9 - 1
src/myBookShelf.lpi

@@ -31,7 +31,7 @@
         <PackageName Value="LCL"/>
       </Item1>
     </RequiredPackages>
-    <Units Count="4">
+    <Units Count="5">
       <Unit0>
         <Filename Value="myBookShelf.lpr"/>
         <IsPartOfProject Value="True"/>
@@ -53,6 +53,14 @@
         <IsPartOfProject Value="True"/>
         <UnitName Value="bookCollection"/>
       </Unit3>
+      <Unit4>
+        <Filename Value="unitbookdialog.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="BookEditDialog"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="UnitBookDialog"/>
+      </Unit4>
     </Units>
   </ProjectOptions>
   <CompilerOptions>

+ 2 - 1
src/myBookShelf.lpr

@@ -7,7 +7,7 @@ uses
   Cthreads,
   {$ENDIF}{$ENDIF}
   Interfaces, // this includes the LCL widgetset
-  Forms, main, book, bookCollection
+  Forms, main, book, bookCollection, UnitBookDialog
   { you can add units after this };
 
 {$R *.res}
@@ -16,6 +16,7 @@ begin
   Requirederivedformresource:=True;
   Application.Initialize;
   Application.Createform(Tform1, Form1);
+  Application.Createform(Tbookeditdialog, Bookeditdialog);
   Application.Run;
 end.
 

+ 85 - 70
src/myBookShelf.lps

@@ -3,12 +3,12 @@
   <ProjectSession>
     <Version Value="10"/>
     <BuildModes Active="Default"/>
-    <Units Count="13">
+    <Units Count="14">
       <Unit0>
         <Filename Value="myBookShelf.lpr"/>
         <IsPartOfProject Value="True"/>
-        <CursorPos Y="20"/>
-        <UsageCount Value="42"/>
+        <CursorPos Y="21"/>
+        <UsageCount Value="45"/>
         <Loaded Value="True"/>
       </Unit0>
       <Unit1>
@@ -17,11 +17,10 @@
         <ComponentName Value="Form1"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-        <IsVisibleTab Value="True"/>
         <EditorIndex Value="4"/>
-        <TopLine Value="61"/>
+        <TopLine Value="82"/>
         <CursorPos X="25" Y="70"/>
-        <UsageCount Value="42"/>
+        <UsageCount Value="45"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit1>
@@ -30,8 +29,9 @@
         <IsPartOfProject Value="True"/>
         <UnitName Value="Book"/>
         <EditorIndex Value="2"/>
-        <CursorPos X="71" Y="30"/>
-        <UsageCount Value="42"/>
+        <TopLine Value="62"/>
+        <CursorPos X="16" Y="83"/>
+        <UsageCount Value="45"/>
         <Loaded Value="True"/>
       </Unit2>
       <Unit3>
@@ -39,9 +39,9 @@
         <IsPartOfProject Value="True"/>
         <UnitName Value="bookCollection"/>
         <EditorIndex Value="3"/>
-        <TopLine Value="45"/>
-        <CursorPos X="15" Y="48"/>
-        <UsageCount Value="39"/>
+        <TopLine Value="102"/>
+        <CursorPos X="22" Y="125"/>
+        <UsageCount Value="42"/>
         <Loaded Value="True"/>
       </Unit3>
       <Unit4>
@@ -97,7 +97,7 @@
       <Unit11>
         <Filename Value="main.lfm"/>
         <EditorIndex Value="1"/>
-        <UsageCount Value="13"/>
+        <UsageCount Value="14"/>
         <Loaded Value="True"/>
         <DefaultSyntaxHighlighter Value="LFM"/>
       </Unit11>
@@ -109,127 +109,142 @@
         <CursorPos Y="238"/>
         <UsageCount Value="10"/>
       </Unit12>
+      <Unit13>
+        <Filename Value="unitbookdialog.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="BookEditDialog"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="UnitBookDialog"/>
+        <IsVisibleTab Value="True"/>
+        <EditorIndex Value="5"/>
+        <TopLine Value="50"/>
+        <CursorPos X="9" Y="76"/>
+        <UsageCount Value="23"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
+      </Unit13>
     </Units>
     <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
-        <Filename Value="main.pas"/>
-        <Caret Line="60" Column="61" TopLine="39"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="34" Column="3"/>
       </Position1>
       <Position2>
-        <Filename Value="main.pas"/>
-        <Caret Line="123" Column="9" TopLine="97"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="36" Column="3"/>
       </Position2>
       <Position3>
-        <Filename Value="main.pas"/>
-        <Caret Line="122" Column="9" TopLine="96"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="37" Column="3"/>
       </Position3>
       <Position4>
-        <Filename Value="main.pas"/>
-        <Caret Line="27" Column="25" TopLine="7"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="38" Column="3"/>
       </Position4>
       <Position5>
-        <Filename Value="main.pas"/>
-        <Caret Line="57" Column="45" TopLine="44"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="39" Column="3"/>
       </Position5>
       <Position6>
-        <Filename Value="main.pas"/>
-        <Caret Line="27" Column="26" TopLine="6"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="40" Column="3"/>
       </Position6>
       <Position7>
-        <Filename Value="main.pas"/>
-        <Caret Line="60" Column="29" TopLine="25"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="44" Column="38" TopLine="5"/>
       </Position7>
       <Position8>
-        <Filename Value="main.pas"/>
-        <Caret Line="63" TopLine="45"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="9" Column="26" TopLine="2"/>
       </Position8>
       <Position9>
-        <Filename Value="main.pas"/>
-        <Caret Line="64" TopLine="45"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="36" Column="11" TopLine="7"/>
       </Position9>
       <Position10>
-        <Filename Value="main.pas"/>
-        <Caret Line="66" TopLine="45"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="9" Column="26" TopLine="2"/>
       </Position10>
       <Position11>
-        <Filename Value="main.pas"/>
-        <Caret Line="67" Column="32" TopLine="45"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="25" Column="18" TopLine="2"/>
       </Position11>
       <Position12>
-        <Filename Value="main.pas"/>
-        <Caret Line="61" Column="61" TopLine="49"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="47" Column="54" TopLine="10"/>
       </Position12>
       <Position13>
         <Filename Value="book.pas"/>
-        <Caret Line="31" Column="27" TopLine="12"/>
+        <Caret Line="84" Column="51" TopLine="58"/>
       </Position13>
       <Position14>
-        <Filename Value="book.pas"/>
-        <Caret Line="34" Column="31" TopLine="23"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="24" Column="36"/>
       </Position14>
       <Position15>
         <Filename Value="book.pas"/>
-        <Caret Line="95" Column="61" TopLine="55"/>
+        <Caret Line="84" Column="41" TopLine="62"/>
       </Position15>
       <Position16>
-        <Filename Value="main.pas"/>
-        <Caret Line="27" Column="39"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="50" Column="46" TopLine="12"/>
       </Position16>
       <Position17>
-        <Filename Value="main.pas"/>
-        <Caret Line="74" Column="11" TopLine="51"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="51" Column="46" TopLine="12"/>
       </Position17>
       <Position18>
-        <Filename Value="main.pas"/>
-        <Caret Line="180" Column="31" TopLine="155"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="50" Column="46" TopLine="12"/>
       </Position18>
       <Position19>
-        <Filename Value="main.pas"/>
-        <Caret Line="133" Column="34" TopLine="123"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="58" Column="10" TopLine="17"/>
       </Position19>
       <Position20>
-        <Filename Value="main.pas"/>
-        <Caret Line="93" Column="43" TopLine="64"/>
+        <Filename Value="bookcollection.pas"/>
+        <Caret Line="94" Column="26" TopLine="77"/>
       </Position20>
       <Position21>
-        <Filename Value="main.pas"/>
-        <Caret Line="127" Column="4" TopLine="102"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="67" Column="29" TopLine="26"/>
       </Position21>
       <Position22>
-        <Filename Value="main.pas"/>
-        <Caret Line="91" Column="43" TopLine="68"/>
+        <Filename Value="book.pas"/>
+        <Caret Line="84" Column="22" TopLine="55"/>
       </Position22>
       <Position23>
-        <Filename Value="main.pas"/>
-        <Caret Line="27" Column="79"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="62" Column="37" TopLine="32"/>
       </Position23>
       <Position24>
-        <Filename Value="main.pas"/>
-        <Caret Line="170" Column="4" TopLine="135"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="63" Column="37" TopLine="33"/>
       </Position24>
       <Position25>
-        <Filename Value="main.pas"/>
-        <Caret Line="171" Column="22" TopLine="139"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="82" Column="38" TopLine="41"/>
       </Position25>
       <Position26>
-        <Filename Value="bookcollection.pas"/>
-        <Caret Line="25" Column="37"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="71" Column="9" TopLine="45"/>
       </Position26>
       <Position27>
-        <Filename Value="bookcollection.pas"/>
-        <Caret Line="49" Column="6" TopLine="22"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="72" Column="9" TopLine="46"/>
       </Position27>
       <Position28>
-        <Filename Value="main.pas"/>
-        <Caret Line="145" Column="32" TopLine="139"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="73" Column="9" TopLine="47"/>
       </Position28>
       <Position29>
-        <Filename Value="main.pas"/>
-        <Caret Line="123" Column="23" TopLine="121"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="74" Column="9" TopLine="48"/>
       </Position29>
       <Position30>
-        <Filename Value="main.pas"/>
-        <Caret Line="135" Column="34" TopLine="135"/>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="75" Column="9" TopLine="49"/>
       </Position30>
     </JumpHistory>
   </ProjectSession>