home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-
- #include <exec/types.h>
- #include <graphics/gfxbase.h>
- #include <intuition/gadgetclass.h>
-
- #include <clib/alib_protos.h>
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/dos_protos.h>
-
- #include "Videothek.h"
- #include "Videothek_AppStruct.h"
- #include "Videothek_MyFunctions.h"
-
- /*************************************************************************/
- /* */
- /* Unterprogramme ListeAnzeigen() */
- /* */
- /*************************************************************************/
-
- void ListeAnzeigen(struct Window *win,struct Gadget *wingads[],struct App *userdata)
- {
- char string[80];
- Eintrag *E;
-
- FreeNameNodes(userdata->Eintraege);
- NewList(userdata->Eintraege);
-
- for (E=userdata->ListeEintraege.anfang;E;E=E->next)
- {
- sprintf(string, "%4d %4d Minuten %s",E->Kassette,E->Minuten,E->Filmtitel);
- AddName(userdata->Eintraege,string);
- }
-
- GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Labels,~0,TAG_END);
- GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Labels,userdata->Eintraege,GTLV_Selected,userdata->EintragAKTUELL,TAG_END);
- GT_RefreshWindow(win,NULL);
- }
-
- /* Functions for Hauptfenster */
-
- void UserSetupHauptfenster(struct Window *win,struct Gadget *wingads[],APTR userdata)
- {
- ListeAnzeigen(win,wingads,userdata);
- }
-
- void ListviewClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- ((struct App *)userdata)->EintragAKTUELL=messagecode;
- }
-
- void NeuClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- SleepWindow(win);
- ((struct App *)userdata)->Mode=Neu;
- strcpy(((struct App *)userdata)->NeuerEintrag.Filmtitel,"");
- ((struct App *)userdata)->NeuerEintrag.Minuten=0;
- HandleEintrag(win->WScreen,-1,-1,userdata);
- ListeAnzeigen(win,wingads,userdata);
- WakenWindow(win);
- }
-
- void AendernClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
- {
- int i;
- Eintrag *E=((struct App *)userdata)->ListeEintraege.anfang;
- ((struct App *)userdata)->Mode=Aendern;
- SleepWindow(win);
-
- for (i=0;i<((struct App *)userdata)->EintragAKTUELL;i++) E=E->next;
-
- strcpy(((struct App *)userdata)->NeuerEintrag.Filmtitel,E->Filmtitel);
- ((struct App *)userdata)->NeuerEintrag.Kassette = E->Kassette;
- ((struct App *)userdata)->NeuerEintrag.Minuten = E->Minuten;
- ((struct App *)userdata)->NeuerEintrag.Quelle = E->Quelle;
- ((struct App *)userdata)->NeuerEintrag.Art = E->Art;
-
- HandleEintrag(win->WScreen,-1,-1,userdata);
-
- Loeschen(((struct App *)userdata)->ListeEintraege,E);
-
- ListeAnzeigen(win,wingads,userdata);
- WakenWindow(win);
- }
- else DisplayBeep(NULL);
-
- }
-
- void LoeschenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
- {
- int i;
- Eintrag *E=((struct App *)userdata)->ListeEintraege.anfang;
- for (i=0;i<((struct App *)userdata)->EintragAKTUELL;i++) E=E->next;
- Loeschen(((struct App *)userdata)->ListeEintraege,E);
- ((struct App *)userdata)->EintragAKTUELL-=1;
- if (((struct App *)userdata)->EintragAKTUELL<0) ((struct App *)userdata)->EintragAKTUELL=0;
- ListeAnzeigen(win,wingads,userdata);
- }
- else DisplayBeep(NULL);
- }
-
- void ListeLoeschenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
- {
- AllesLoeschen(((struct App *)userdata)->ListeEintraege);
- Init(((struct App *)userdata)->ListeEintraege);
- ((struct App *)userdata)->EintragAKTUELL=0;
- ListeAnzeigen(win,wingads,userdata);
- }
- else DisplayBeep(NULL);
- }
-
- void DruckenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- char INITIALIZE[] = " #1";
- char ITALIC_ON[] = " [3m" ;
- char ITALIC_OFF[] = " [23m";
- char DOUBLE_ON[] = " [4\"z" ;
- char DOUBLE_OFF[] = " [3\"z" ;
-
- INITIALIZE[0]=27;
- ITALIC_ON[0] =27;
- ITALIC_OFF[0]=27;
- DOUBLE_ON[0] =27;
- DOUBLE_OFF[0]=27;
-
- SleepWindow(win);
-
- if (((struct App *)userdata)->ListeEintraege.anfang!=NULL)
- {
- int i=0,l=0,seite=0;
- char string[20];
- Eintrag *E=NULL;
- BPTR fp=Open("PRT:",MODE_NEWFILE);
- if (fp)
- {
- FPrintf(fp,"%s =====================================\n",DOUBLE_ON);
- FPrintf(fp," = L I S T E V I D E O F I L M E =\n");
- FPrintf(fp," =====================================%s\n\n",DOUBLE_OFF);
- FPrintf(fp," Kass. | Minuten | Filmtitel | Art\n");
- FPrintf(fp,"--------------------------------------------------------------------------------\n");
-
- for (E=((struct App *)userdata)->ListeEintraege.anfang;E;E=E->next)
- {
- FPrintf(fp," %4ld | %4ld | %s",E->Kassette,E->Minuten,E->Filmtitel);
- for (i=0;i<42-strlen(E->Filmtitel);i++) FPrintf(fp," ");
- FPrintf(fp," | %15s\n","Art");
- l+=1;
- if (l==((struct App *)userdata)->SeitenLAENGE-8) // Seite ist zu Ende
- {
- seite+=1;
- sprintf(string,"Seite: %d",seite);
- FPrintf(fp,"--------------------------------------------------------------------------------\n");
- FPrintf(fp,"%s%77s%s\n",ITALIC_ON,string,ITALIC_OFF);
- FPrintf(fp,"%s =====================================\n",DOUBLE_ON);
- FPrintf(fp," = L I S T E V I D E O F I L M E =\n");
- FPrintf(fp," =====================================%s\n\n",DOUBLE_OFF);
- FPrintf(fp," Kass. | Minuten | Filmtitel | Art\n");
- FPrintf(fp,"--------------------------------------------------------------------------------\n");
- l=0;
- }
- }
- for (i=0;i<((struct App *)userdata)->SeitenLAENGE-8-l;i++) FPrintf(fp,"\n");
- seite+=1;
- sprintf(string,"Seite: %d",seite);
- FPrintf(fp,"--------------------------------------------------------------------------------\n");
- FPrintf(fp,"%s%77s%s\n",ITALIC_ON,string,ITALIC_OFF);
- Close(fp);
- }
- else GUICreatorErrorReport(NULL,IoErr());
- }
- else DisplayBeep(NULL);
- WakenWindow(win);
-
- }
-
- void SpeichernClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- SaveData(userdata);
- Signal(FindTask(NULL),SIGBREAKF_CTRL_C);
- }
-
-
- /* Functions for Eintrag */
-
- void UserSetupEintrag(struct Window *win,struct Gadget *wingads[],APTR userdata)
- {
- struct Eintrag *E=userdata;
-
- if (((struct App *)userdata)->Mode==Neu)
- {
- GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,((struct App *)userdata)->QuelleAKTUELL,TAG_END);
- GT_SetGadgetAttrs(wingads[CYID_Art ],win,NULL,GTCY_Active,((struct App *)userdata)->ArtAKTUELL ,TAG_END);
- GT_RefreshWindow(win,NULL);
- ActivateGadget(wingads[STID_Filmtitel],win,NULL);
- }
- else
- {
- GT_SetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GTST_String,((struct App *)userdata)->NeuerEintrag.Filmtitel,TAG_END);
- GT_SetGadgetAttrs(wingads[INID_Kassette ],win,NULL,GTIN_Number,((struct App *)userdata)->NeuerEintrag.Kassette ,TAG_END);
- GT_SetGadgetAttrs(wingads[INID_Minuten ],win,NULL,GTIN_Number,((struct App *)userdata)->NeuerEintrag.Minuten ,TAG_END);
- GT_SetGadgetAttrs(wingads[CYID_Quelle ],win,NULL,GTCY_Active,((struct App *)userdata)->NeuerEintrag.Quelle ,TAG_END);
- GT_SetGadgetAttrs(wingads[CYID_Art ],win,NULL,GTCY_Active,((struct App *)userdata)->NeuerEintrag.Art ,TAG_END);
- GT_RefreshWindow(win,NULL);
- ActivateGadget(wingads[STID_Filmtitel],win,NULL);
- }
-
- }
-
- BOOL EintragCloseWindow(struct Window *win,struct Gadget *wingads[],APTR userdata)
- {
- if (((struct App *)userdata)->Mode==Aendern) // gelöschten Eintrag wieder einfügen
- {
- Einfueg(((struct App *)userdata)->ListeEintraege,&((struct App *)userdata)->NeuerEintrag);
- }
- return TRUE;
- }
-
- void FilmtitelClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- strcpy(((struct App *)userdata)->NeuerEintrag.Filmtitel,((struct StringInfo *)wingads[gadgetid]->SpecialInfo)->Buffer);
- ActivateGadget(wingads[INID_Kassette],win,NULL);
- }
-
- void KassetteClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- ((struct App *)userdata)->NeuerEintrag.Kassette=atoi(((struct StringInfo *)wingads[gadgetid]->SpecialInfo)->Buffer);
- ActivateGadget(wingads[INID_Minuten],win,NULL);
- }
-
- void MinutenClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- ((struct App *)userdata)->NeuerEintrag.Minuten=atoi(((struct StringInfo *)wingads[gadgetid]->SpecialInfo)->Buffer);
- }
-
- void QuelleClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- ((struct App *)userdata)->QuelleAKTUELL=messagecode;
- ((struct App *)userdata)->NeuerEintrag.Quelle=((struct App *)userdata)->QuelleAKTUELL;
- }
-
- void ArtClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- ((struct App *)userdata)->ArtAKTUELL=messagecode;
- ((struct App *)userdata)->NeuerEintrag.Art=((struct App *)userdata)->ArtAKTUELL;
- }
-
- void WeiterClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,APTR userdata)
- {
- if (strcmp(((struct App *)userdata)->NeuerEintrag.Filmtitel,"") && ((struct App *)userdata)->NeuerEintrag.Minuten>0)
- {
- Einfueg(((struct App *)userdata)->ListeEintraege,&((struct App *)userdata)->NeuerEintrag);
- Signal(FindTask(NULL),SIGBREAKF_CTRL_C);
- }
- else
- {
- DisplayBeep(NULL);
- ActivateGadget(wingads[STID_Filmtitel],win,NULL);
- }
- }
-