%% Programm Taxometer:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Grundgebühr: €2,70 Tag/ €2,80 bei Nachtfahrt
%% (wenn Checkbox "Nachtfahrt" einen Haken hat)
%% Edit-Feld "Wartezeit": pro Minute €0,05; danach €30,00 pro Stunde.
%% Bei der zweiten Checkbox "ab 5 Personen" soll ein Zuschlag 
%% von € 5,00 dazugerechnet werden (wenn der Haken gesetzt wird).
%% Slider "Angabe km": 
%% 1. km = €2,70/€2,80 bei Nachtfahrt)
%% 2.-3. km  = €2,00/€2,10 bei Nachtfahrt)
%% ab 3. km = €1,40/€1,50 bei Nachtfahrt)
%% Am Ende soll in dem Text-Feld "Fahrpreis" der Gesamtpreis rauskommen, 
%% indem vorher der Push-Button "TARIF BERECHNEN" gedrückt wurde


function varargout = TaxiRechner(varargin)
%TAXIRECHNER MATLAB code file for TaxiRechner.fig
%      TAXIRECHNER, by itself, creates a new TAXIRECHNER or raises the existing
%      singleton*.
%
%      H = TAXIRECHNER returns the handle to a new TAXIRECHNER or the handle to
%      the existing singleton*.
%
%      TAXIRECHNER('Property','Value',...) creates a new TAXIRECHNER using the
%      given property value pairs. Unrecognized properties are passed via
%      varargin to TaxiRechner_OpeningFcn.  This calling syntax produces a
%      warning when there is an existing singleton*.
%
%      TAXIRECHNER('CALLBACK') and TAXIRECHNER('CALLBACK',hObject,...) call the
%      local function named CALLBACK in TAXIRECHNER.M with the given input
%      arguments.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help TaxiRechner

% Last Modified by GUIDE v2.5 10-Jun-2016 12:22:20

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @TaxiRechner_OpeningFcn, ...
                   'gui_OutputFcn',  @TaxiRechner_OutputFcn, ...
                   'gui_LayoutFcn',  [], ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
   gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before TaxiRechner is made visible.
function TaxiRechner_OpeningFcn(hObject, eventdata, handles, varargin)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Zeige Bild
image(imread('taxi.jpg'),'Parent',handles.Logo)
axis(handles.Logo,'off')

% Choose default command line output for TaxiRechner
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes TaxiRechner wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = TaxiRechner_OutputFcn(hObject, eventdata, handles)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
set(handles.figure1,'Name','Taxometer')
varargout{1} = handles.output;


function Fahrtpreis_Callback(hObject, eventdata, handles)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch hObject
   case handles.Wegstrecke_Slider
      Wegstrecke  = floor(get(handles.Wegstrecke_Slider,'Value'));
      set(handles.Wegstrecke,'string',Wegstrecke)
      sliderValue = get(handles.Wegstrecke_Slider,'Value');
      y=round(sliderValue/1)*1;
      set(handles.Wegstrecke_Slider,'Value', y);
      guidata(hObject, handles) 
   case handles.Wegstrecke
      Wegstrecke  = max(0,min(500,str2double(get(handles.Wegstrecke,'string'))));
      set(handles.Wegstrecke,'string',Wegstrecke)
      set(handles.Wegstrecke_Slider,'Value',Wegstrecke) % 'max',500
end
Wegstrecke  = floor(get(handles.Wegstrecke_Slider,'Value'));
%
Nachtfahrt = get(handles.OptionNachtfahrt,'Value');
if Wegstrecke == 1
   KmKosten = 2.70 + 0.10 * Nachtfahrt;
elseif Wegstrecke <= 3
   KmKosten = 2.00 + 0.10 * Nachtfahrt;
else
   KmKosten = 1.40 + 0.10 * Nachtfahrt;
end
GrundGebuehr = 2.70 + 0.10 * Nachtfahrt;
%
Wartezeit   = str2double(get(handles.Wartezeit,'string'));
WarteKosten = fix(Wartezeit/60)*30 + rem(Wartezeit,60)*0.05;
%
PersonenZuschlag = 5.00 * get(handles.OptionPersonen,'Value');
%
Fahrtpreis = GrundGebuehr + Wegstrecke * KmKosten + WarteKosten + PersonenZuschlag;
if isnan(Fahrtpreis)
   set(handles.Fahrtpreis,'string','Error','Foregroundcolor',[1 0 0])
else
   set(handles.Fahrtpreis,'string',Fahrtpreis,'Foregroundcolor',[0 0 0])
dlmwrite('data.out',Fahrtpreis);
end


% --- Executes on button press in NeueFahrt.
function NeueFahrt_Callback(hObject, eventdata, handles)
% hObject    handle to NeueFahrt (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%%% Zurücksetzen des GUI

%set(handles.Wegstrecke,'String',0)
%set(handles.Wartezeit,'String',0)
%set(handles.Wegstrecke_Slider,'Value',0)
%set(handles.OptionPersonen,'Enable',off)
%set(handles.OptionNachtfahrt,'Enable',off)
%set(handles.Fahrtpreis,'String',0)
hf=findobj('Name','Taxometer')
close(hf)
Taxometer
