Explorar o código

adding many books at the same time and you can change book cover

Bernardo Magri %!s(int64=8) %!d(string=hai) anos
pai
achega
3d84487ee1
Modificáronse 4 ficheiros con 91 adicións e 76 borrados
  1. 10 11
      src/book.pas
  2. 1 0
      src/main.lfm
  3. 22 6
      src/main.pas
  4. 58 59
      src/myBookShelf.lps

+ 10 - 11
src/book.pas

@@ -36,7 +36,6 @@ type
       property Authors : String read mAuthors write mAuthors;
       property ISBN : String read mISBN write mISBN;
       destructor Destroy;
-      procedure BookClick(Sender:TObject);
       procedure BookDoubleClick(Sender:TObject);
       procedure BookCoverPaint(Sender:TObject);
   end;
@@ -63,6 +62,7 @@ procedure Tbook.Setfile(Avalue: String);
 begin
   if Mfilepath=Avalue then Exit;
   Mfilepath:=Avalue;
+  SetImage(ChangeFileExt(Avalue, '.png'));
   SetImage(ChangeFileExt(Avalue, '.jpg'));
 end;
 
@@ -73,15 +73,14 @@ begin
   pic:=TPicture.Create;
   mCover.Picture:=pic;
   mCover.Stretch:=true;
-  mCover.OnClick:=@BookClick;
   mCover.OnDblClick:=@BookDoubleClick;
   mCover.OnPaint:=@BookCoverPaint;
   mCover.OnMouseDown:=@Bookmousedown;
   mIsSelected:=False;
-  mTitle:='null';
-  mAuthors:='null';
-  mISBN:='null';
-  mImagePath:='null';
+  mTitle:='';
+  mAuthors:='';
+  mISBN:='';
+  mImagePath:='';
 end;
 
 procedure Tbook.Bookmousedown(Sender: Tobject; Button: Tmousebutton;
@@ -98,6 +97,11 @@ begin
         mIsSelected:=False;
         mCover.Repaint;
      end;
+  if Button = TMouseButton.mbLeft then
+     begin
+        mIsSelected:= not mIsSelected;
+        mCover.Repaint;
+     end;
 End;
 
 
@@ -106,11 +110,6 @@ begin
   FreeAndNil(mCover);
 end;
 
-procedure Tbook.Bookclick(Sender: Tobject);
-begin
-  mIsSelected:= not mIsSelected;
-  mCover.Repaint;
-end;
 
 procedure Tbook.Bookdoubleclick(Sender: Tobject);
 begin

+ 1 - 0
src/main.lfm

@@ -737,6 +737,7 @@ object Form1: TForm1
   object OpenDialog1: TOpenDialog
     DefaultExt = '.pdf'
     Filter = 'PDF Books|*.pdf|DJVU Books|*.djvu|EPUB Books|*.epub'
+    Options = [ofAllowMultiSelect, ofEnableSizing, ofViewDetail]
     left = 257
     top = 184
   end

+ 22 - 6
src/main.pas

@@ -118,16 +118,20 @@ End;
 procedure Tform1.Buttonaddclick(Sender: Tobject);
 var
   book:TBook;
+  i:Integer;
 begin
 
 if OpenDialog1.Execute then
 begin
+  for i:= 0 to Opendialog1.Files.Count-1 do
+  begin
   book:=TBook.Create(PanelBackground);
-  book.FilePath:= OpenDialog1.Filename;
+  book.FilePath:= OpenDialog1.Files.Strings[i];
   BookList.AddBook(book);
   book.Cover.Width:=bookWidth;
   book.Cover.Height:=bookHeight;
   book.Cover.Parent:=PanelBackground;
+  end;
   RearrangeBooksOnScreen();
 end;
 End;
@@ -169,15 +173,27 @@ begin
  background:=TPicture.Create;
  background.LoadFromLazarusResource('back');
 
- //works only for linux and MacOS
- DataPath:= GetEnvironmentVariable('HOME') + '/.mybookshelf/data.dat'; //fix the data store dir
+ {$IFDEF MSWINDOWS}
+ DataPath:= GetEnvironmentVariableUTF8('appdata') + '\mybookshelf'; //fix the data store dir
+
+if not DirectoryExistsUTF8(dataPath) then
+    CreateDirUTF8(dataPath);
+
+dataPath:= dataPath + '\data.dat';
+ {$ENDIF}
+
+ {$IFDEF UNIX}
+ DataPath:= GetEnvironmentVariableUTF8('HOME') + '/.mybookshelf/';
+
+ if not DirectoryExistsUTF8(DataPath) then
+    CreateDirUTF8(dataPath);
 
-if not DirectoryExists(GetEnvironmentVariable('HOME') + '/.mybookshelf/') then
-    CreateDir(GetEnvironmentVariable('HOME') + '/.mybookshelf/');
+ dataPath:= dataPath + 'data.dat';
+ {$ENDIF}
 
  BookList:=TBookCollection.Create;
 
- if FileExists(dataPath) then
+ if FileExistsUTF8(dataPath) then
     BookList.LoadData(dataPath, PanelBackground);
 
 

+ 58 - 59
src/myBookShelf.lps

@@ -8,7 +8,7 @@
         <Filename Value="myBookShelf.lpr"/>
         <IsPartOfProject Value="True"/>
         <CursorPos Y="21"/>
-        <UsageCount Value="49"/>
+        <UsageCount Value="53"/>
         <Loaded Value="True"/>
       </Unit0>
       <Unit1>
@@ -18,9 +18,9 @@
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <EditorIndex Value="4"/>
-        <TopLine Value="100"/>
-        <CursorPos X="25" Y="70"/>
-        <UsageCount Value="49"/>
+        <TopLine Value="197"/>
+        <CursorPos X="47" Y="197"/>
+        <UsageCount Value="53"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit1>
@@ -28,10 +28,11 @@
         <Filename Value="book.pas"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="Book"/>
+        <IsVisibleTab Value="True"/>
         <EditorIndex Value="2"/>
-        <TopLine Value="63"/>
-        <CursorPos X="27" Y="98"/>
-        <UsageCount Value="49"/>
+        <TopLine Value="49"/>
+        <CursorPos X="24" Y="75"/>
+        <UsageCount Value="53"/>
         <Loaded Value="True"/>
       </Unit2>
       <Unit3>
@@ -39,9 +40,8 @@
         <IsPartOfProject Value="True"/>
         <UnitName Value="bookCollection"/>
         <EditorIndex Value="3"/>
-        <TopLine Value="102"/>
         <CursorPos X="22" Y="125"/>
-        <UsageCount Value="46"/>
+        <UsageCount Value="50"/>
         <Loaded Value="True"/>
       </Unit3>
       <Unit4>
@@ -51,11 +51,10 @@
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="UnitBookDialog"/>
-        <IsVisibleTab Value="True"/>
         <EditorIndex Value="5"/>
         <TopLine Value="48"/>
         <CursorPos X="2" Y="67"/>
-        <UsageCount Value="27"/>
+        <UsageCount Value="31"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit4>
@@ -64,28 +63,28 @@
         <EditorIndex Value="-1"/>
         <TopLine Value="354"/>
         <CursorPos Y="378"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit5>
       <Unit6>
         <Filename Value="/usr/lib/lazarus/1.6.4/lcl/include/lclintf.inc"/>
         <EditorIndex Value="-1"/>
         <TopLine Value="254"/>
         <CursorPos Y="275"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit6>
       <Unit7>
         <Filename Value="/usr/lib/lazarus/1.6.4/lcl/interfaces/gtk2/gtk2winapi.inc"/>
         <EditorIndex Value="-1"/>
         <TopLine Value="4718"/>
         <CursorPos Y="4740"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit7>
       <Unit8>
         <Filename Value="/usr/lib/lazarus/1.6.4/lcl/interfaces/gtk2/gtk2widgetset.inc"/>
         <EditorIndex Value="-1"/>
         <TopLine Value="5406"/>
         <CursorPos Y="5428"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit8>
       <Unit9>
         <Filename Value="/usr/lib/lazarus/1.6.4/lcl/dynhasharray.pp"/>
@@ -93,26 +92,26 @@
         <EditorIndex Value="-1"/>
         <TopLine Value="598"/>
         <CursorPos Y="620"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit9>
       <Unit10>
         <Filename Value="/usr/lib/lazarus/1.6.4/lcl/include/customform.inc"/>
         <EditorIndex Value="-1"/>
         <TopLine Value="133"/>
         <CursorPos Y="161"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit10>
       <Unit11>
         <Filename Value="/usr/lib/lazarus/1.6.4/lcl/include/application.inc"/>
         <EditorIndex Value="-1"/>
         <TopLine Value="2183"/>
         <CursorPos Y="2203"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit11>
       <Unit12>
         <Filename Value="main.lfm"/>
         <EditorIndex Value="1"/>
-        <UsageCount Value="16"/>
+        <UsageCount Value="18"/>
         <Loaded Value="True"/>
         <DefaultSyntaxHighlighter Value="LFM"/>
       </Unit12>
@@ -122,129 +121,129 @@
         <EditorIndex Value="-1"/>
         <TopLine Value="200"/>
         <CursorPos Y="238"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit13>
     </Units>
     <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="9" Column="26" TopLine="2"/>
+        <Caret Line="36" Column="11" TopLine="7"/>
       </Position1>
       <Position2>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="36" Column="11" TopLine="7"/>
+        <Caret Line="9" Column="26" TopLine="2"/>
       </Position2>
       <Position3>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="9" Column="26" TopLine="2"/>
+        <Caret Line="25" Column="18" TopLine="2"/>
       </Position3>
       <Position4>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="25" Column="18" TopLine="2"/>
+        <Caret Line="47" Column="54" TopLine="10"/>
       </Position4>
       <Position5>
-        <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="47" Column="54" TopLine="10"/>
-      </Position5>
-      <Position6>
         <Filename Value="book.pas"/>
         <Caret Line="84" Column="51" TopLine="58"/>
-      </Position6>
-      <Position7>
+      </Position5>
+      <Position6>
         <Filename Value="unitbookdialog.pas"/>
         <Caret Line="24" Column="36"/>
-      </Position7>
-      <Position8>
+      </Position6>
+      <Position7>
         <Filename Value="book.pas"/>
         <Caret Line="84" Column="41" TopLine="62"/>
+      </Position7>
+      <Position8>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="50" Column="46" TopLine="12"/>
       </Position8>
       <Position9>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="50" Column="46" TopLine="12"/>
+        <Caret Line="51" Column="46" TopLine="12"/>
       </Position9>
       <Position10>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="51" Column="46" TopLine="12"/>
+        <Caret Line="50" Column="46" TopLine="12"/>
       </Position10>
       <Position11>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="50" Column="46" TopLine="12"/>
+        <Caret Line="58" Column="10" TopLine="17"/>
       </Position11>
       <Position12>
-        <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="58" Column="10" TopLine="17"/>
-      </Position12>
-      <Position13>
         <Filename Value="bookcollection.pas"/>
         <Caret Line="94" Column="26" TopLine="77"/>
-      </Position13>
-      <Position14>
+      </Position12>
+      <Position13>
         <Filename Value="unitbookdialog.pas"/>
         <Caret Line="67" Column="29" TopLine="26"/>
-      </Position14>
-      <Position15>
+      </Position13>
+      <Position14>
         <Filename Value="book.pas"/>
         <Caret Line="84" Column="22" TopLine="55"/>
+      </Position14>
+      <Position15>
+        <Filename Value="unitbookdialog.pas"/>
+        <Caret Line="62" Column="37" TopLine="32"/>
       </Position15>
       <Position16>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="62" Column="37" TopLine="32"/>
+        <Caret Line="63" Column="37" TopLine="33"/>
       </Position16>
       <Position17>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="63" Column="37" TopLine="33"/>
+        <Caret Line="82" Column="38" TopLine="41"/>
       </Position17>
       <Position18>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="82" Column="38" TopLine="41"/>
+        <Caret Line="71" Column="9" TopLine="45"/>
       </Position18>
       <Position19>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="71" Column="9" TopLine="45"/>
+        <Caret Line="72" Column="9" TopLine="46"/>
       </Position19>
       <Position20>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="72" Column="9" TopLine="46"/>
+        <Caret Line="73" Column="9" TopLine="47"/>
       </Position20>
       <Position21>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="73" Column="9" TopLine="47"/>
+        <Caret Line="74" Column="9" TopLine="48"/>
       </Position21>
       <Position22>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="74" Column="9" TopLine="48"/>
+        <Caret Line="75" Column="9" TopLine="49"/>
       </Position22>
       <Position23>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="75" Column="9" TopLine="49"/>
+        <Caret Line="76" Column="9"/>
       </Position23>
       <Position24>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="76" Column="9"/>
+        <Caret Line="54" Column="28" TopLine="35"/>
       </Position24>
       <Position25>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="54" Column="28" TopLine="35"/>
+        <Caret Line="55" Column="3" TopLine="52"/>
       </Position25>
       <Position26>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="55" Column="3" TopLine="52"/>
+        <Caret Line="54" Column="3" TopLine="51"/>
       </Position26>
       <Position27>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="54" Column="3" TopLine="51"/>
+        <Caret Line="55" Column="3" TopLine="52"/>
       </Position27>
       <Position28>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="55" Column="3" TopLine="52"/>
+        <Caret Line="61" Column="3" TopLine="42"/>
       </Position28>
       <Position29>
         <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="61" Column="3" TopLine="42"/>
+        <Caret Line="65" Column="64" TopLine="43"/>
       </Position29>
       <Position30>
-        <Filename Value="unitbookdialog.pas"/>
-        <Caret Line="65" Column="64" TopLine="43"/>
+        <Filename Value="book.pas"/>
+        <Caret Line="97" Column="26" TopLine="73"/>
       </Position30>
     </JumpHistory>
   </ProjectSession>