function varargout = bibliotek(varargin)
%% Automatgenererade kommentarer med enkel %, egna med %%
% BIBLIOTEK Application M-file for bibliotek.fig
%    FIG = BIBLIOTEK launch bibliotek GUI.
%    BIBLIOTEK('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.0 02-Feb-2004 11:56:53

if nargin == 0  % LAUNCH GUI
  
   fig = openfig(mfilename,'reuse');
        
% Generate a structure of handles to pass to callbacks, and store it. 
   handles = guihandles(fig);

%%---------------------------------------------------------------------------
%  Detta avsnitt ser till att alla komponenter får rätt text ('String')
%%---------------------------------------------------------------------------
   global boklista;        
   lasInBocker('bokfil.txt');

   listboxKomponenten = handles.listbox1;
   set(listboxKomponenten,'String',boklistaSomCelltabell);

   laneknappKomponenten = handles.laneknapp;
   set(laneknappKomponenten,'String','Låna');

   returneraknappKomponenten = handles.returneraknapp;
   set(returneraknappKomponenten,'String','Återlämna');

   sparaknappKomponenten = handles.sparaknapp;
   set(sparaknappKomponenten,'String','Spara');
%%---------------------------------------------------------------------------

   guidata(fig, handles);

   if nargout > 0
     varargout{1} = fig;
   end

   elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

     try
       [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
     catch
       disp(lasterr);
     end

   end


%%---------------------------------------------------------------------------
% Detta händer när man klickar i listboxen: 
% Visar aktuell lista med böcker och markerar vald bok.
%%---------------------------------------------------------------------------
function varargout = listbox1_Callback(h, eventdata, handles, varargin)
  global boklista;        
  listboxKomponenten = handles.listbox1;
  set(listboxKomponenten,'String',boklistaSomCelltabell);


%%---------------------------------------------------------------------------
% Detta händer när man trycker på Lana: Lånar vald bok.
%%---------------------------------------------------------------------------
function varargout = laneknapp_Callback(h, eventdata, handles, varargin)
  global boklista;
  listboxKomponenten = handles.listbox1;
  index = get(listboxKomponenten,'Value');
  lana(index);

  
%%---------------------------------------------------------------------------
% Detta händer när man trycker på Återlämna: Återlämnar vald bok.
%%---------------------------------------------------------------------------
function varargout = returneraknapp_Callback(h, eventdata, handles, varargin)
  global boklista;
  listboxKomponenten = handles.listbox1;
  index = get(listboxKomponenten,'Value');
  returnera(index);

  
%%---------------------------------------------------------------------------
% Detta händer när man trycker på Spara: Sparar boklistan på fil.
%%---------------------------------------------------------------------------
function varargout = sparaknapp_Callback(h, eventdata, handles, varargin)
  global boklista;
  sparaBocker('bokfil.txt');


%%---------------------------------------------------------------------------
% Läser in böckerna från fil
%%---------------------------------------------------------------------------
function lasInBocker(filnamn);
  global boklista;
  infil = fopen(filnamn,'r');
  nr = 1;
  while ~feof(infil)
    boklista(nr).titel = fgetl(infil);
    boklista(nr).forfattare = fgetl(infil);
    boklista(nr).lanadAv = fgetl(infil);
    fgetl(infil);
    nr = nr + 1;
  end;
  fclose(infil);


%%---------------------------------------------------------------------------
% Konverterar boklistan från struct till celltabell för visning i listboxen
%%---------------------------------------------------------------------------
 function celltabell = boklistaSomCelltabell;
  global boklista;
    for nr = 1:length(boklista)
        if boklista(nr).lanadAv == 'ingen'
            pre = '';
        else
            pre = '---UTLÅNAD:';
        end
    celltabell{nr} = strcat(boklista(nr).titel,'---', ...
                            boklista(nr).forfattare,pre);
  end;


%%---------------------------------------------------------------------------
% Sparar den ändrade boklistan på fil
%%---------------------------------------------------------------------------
  function sparaBocker(filnamn);
  global boklista;
  utfil = fopen(filnamn,'w');
  for nr = 1:length(boklista)
    fprintf(utfil, '%s\n', boklista(nr).titel);
    fprintf(utfil, '%s\n', boklista(nr).forfattare);
    fprintf(utfil, '%s\n', boklista(nr).lanadAv);
    fprintf(utfil, '\n');
  end;
  fclose(utfil);

  
%%---------------------------------------------------------------------------
% Lånar boken på plats index, ändrar i boklistan
%%---------------------------------------------------------------------------
 function lana(index);
   global boklista;
   if strcmp(boklista(index).lanadAv,'ingen') == 1
     anvandare = inputdlg('Ge ditt användarnamn:', 'Vem är du?');
     if length(anvandare)>0
       boklista(index).lanadAv = anvandare{1};
     end;
   else
     warndlg('Boken är redan utlånad','Tyvärr...','modal');
   end;

   
%%---------------------------------------------------------------------------
% Återlämnar boken på plats index, ändrar i boklistan
%%---------------------------------------------------------------------------
function returnera(index);
  global boklista;
   boklista(index).lanadAv = 'ingen';
   omtyckt = questdlg('Du har nu återlämnat boken. Tyckte du om den?');
