/*Download:video.c*/
#include "struc.h"
void show_archiv(void)
{
int press;
do{
clear();
attrset(A_BOLD|COLOR_PAIR(1));
mvprintw(11,21," -1- Nach Film suchen mit Suchbegriff \n");
mvprintw(12,21," -2- Liste durchscrollen \n");
mvprintw(13,21," -3- Zurück \n");
refresh();
switch(press=mvgetch(0,0))
{
case '1': attrset(COLOR_PAIR(3));
mvprintw(11,21," -1- Nach Film suchen mit Suchbegriff \n");
refresh(); usleep(400000);
search_mask(0);
break;
case '2': attrset(COLOR_PAIR(3));
mvprintw(12,21," -2- Liste durchscrollen \n");
refresh(); usleep(400000);
show_search_scroll();
break;
case '3': attrset(COLOR_PAIR(3));
mvprintw(13,21," -3- Zurück \n");
refresh(); usleep(400000);
return;
default : break;
}
}while(press!=3);
}
void show_work_archiv(void)
{
int press;
do{
clear();
attrset(A_BOLD|COLOR_PAIR(1));
mvprintw(11,28," -1- Ändern \n");
mvprintw(12,28," -2- Neuen Titel hinzufügen \n");
mvprintw(13,28," -3- Titel löschen \n");
mvprintw(14,28," -4- Zurück \n");
refresh();
switch(press=mvgetch(0,0))
{
case '1': attrset(COLOR_PAIR(3));
mvprintw(11,28," -1- Ändern \n");
refresh(); usleep(400000);
search_mask(1);
break;
case '2': attrset(COLOR_PAIR(3));
mvprintw(12,28," -2- Neuen Titel hinzufügen \n");
refresh(); usleep(400000);
new_title();
break;
case '3': attrset(COLOR_PAIR(3));
mvprintw(13,28," -3- Titel löschen \n");
refresh(); usleep(400000);
delete_title();
break;
case '4': attrset(COLOR_PAIR(3));
mvprintw(14,28," -4- Zurück \n");
refresh(); usleep(400000);
return;
default : break;
}
}while(press!=4);
}
void show_search_scroll(void)
{
WINDOW *neu,*neu2;
ARCHIV *archiv;
int i=1, j, press;
attrset(COLOR_PAIR(4));
neu=newwin(7, 72, 0, 0); //Neues Fenster mit 5 Zeilen 70 Spalten
neu2=newwin(5, 70, 0,0);
keypad(neu2, TRUE);
mvwprintw(stdscr, 1, 14, "Scrollen mit 'Pfeil nach oben' und 'Pfeil nach unten'");
mvwprintw(stdscr, 2, 10, "Auswählen mit 'Pfeil nach rechts' und Abbrechen mit 'Escape'");
wrefresh(stdscr);
wattrset(neu, COLOR_PAIR(2));
box(neu, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
mvwin(neu, 3,5); //Fenster an die richtige Position
mvwin(neu2,4,6);
wrefresh(neu); //Fenster zeichnen
wrefresh(neu2);
if(anfang == NULL)
{
fehler_curses(" Es sind keine Filme in der Liste vorhanden!!!!!!!!! ");
return;
}
archiv=anfang;
noecho();
do{
wclear(neu2);
box(neu, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
wrefresh(neu);
wattrset(neu2, COLOR_PAIR(3));
mvwprintw(neu2, 1,1, "%s",archiv->titel);
wattrset(neu2, COLOR_PAIR(0));
if(archiv->next != NULL)
{
wmove(neu2, 2, 1);
insertln();
mvwprintw(neu2, 2, 1, "%s",archiv->next->titel);
if(archiv->next->next != NULL)
{
wmove(neu2, 3,1);
insertln();
mvwprintw(neu2, 3,1, "%s",archiv->next->next->titel);
}
}
wrefresh(neu2);
switch(press=wgetch(neu2) )
{
case KEY_DOWN : if(archiv->next != NULL)
archiv=archiv->next;
break;
case KEY_UP : if(archiv->previous != NULL)
archiv=archiv->previous;
break;
case KEY_RIGHT : output(archiv);
break;
default : break;
}
}while(press != 27);
}
void search_mask(int flag)
{
WINDOW *neu;
char film[75],input[75];
ARCHIV *found;
int i=1,press;
neu=newwin(8,76,0,0);
keypad(neu, TRUE);
wattrset(neu, COLOR_PAIR(2));
box(neu, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
mvwin(neu, 2,2); //Fenster an die richtige Position
wattrset(neu, COLOR_PAIR(4));
mvwprintw(neu, 3,3,"Filmtitel : ");
wrefresh(neu);
echo();
wgetnstr(neu, film, 75);
noecho();
if((found=searching(film)) == NULL)
{
fehler_curses(" Suche erfolglos!!! ");
return;
}
else
{
wclear(neu);
wattrset(neu, COLOR_PAIR(5));
box(neu, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
wattrset(neu, COLOR_PAIR(0));
mvwprintw(neu, 1,3,"Genere : %s",found->genere);
mvwprintw(neu, 2,3,"Titel : %s",found->titel);
mvwprintw(neu, 3,3,"Regie : %s",found->regie);
mvwprintw(neu, 4,3,"Schauspieler : %s",found->darsteller);
mvwprintw(neu, 5,3,"FSK : %s",found->fsk);
mvwprintw(neu, 6,3,"Jahr : %s",found->jahr);
wrefresh(neu);
if(flag==0)
wgetch(neu);
}
if(flag==1)
{
do{
if(i==0)
i=6;
else if(i==7)
i=1;
mvwprintw(stdscr, 0, 14, "Scrollen mit 'Pfeil nach oben' und 'Pfeil nach unten'");
mvwprintw(stdscr, 1, 10, "Ändern mit 'Pfeil nach rechts' und Abbrechen mit 'Escape'");
wrefresh(stdscr);
wattrset(neu, COLOR_PAIR(5));
box(neu, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
wattrset(neu, COLOR_PAIR(0));
wmove(neu ,i,19);
wrefresh(neu);
switch(press=wgetch(neu))
{
case KEY_DOWN : i++;
break;
case KEY_UP : i--;
break;
case KEY_RIGHT : wclrtoeol(neu);
wrefresh(neu);
echo();
wgetnstr(neu, input, 75);
noecho();
if(i==1) strcpy(found->genere, input);
if(i==2) strcpy(found->titel, input);
if(i==3) strcpy(found->regie, input);
if(i==4) strcpy(found->darsteller, input);
if(i==5) strcpy(found->fsk, input);
if(i==6) strcpy(found->jahr, input);
input[0]='\0';
break;
default : break;
}
}while(press != 27);
}
}
void new_title(void)
{
WINDOW *neu;
char genere[75],titel[75],regie[75],darsteller[75],fsk[3],jahr[5];
neu=newwin(8,76,0,0);
keypad(neu, TRUE);
wattrset(neu,COLOR_PAIR(5));
box(neu, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
wattrset(neu,COLOR_PAIR(0));
mvwin(neu, 1,2); //Fenster an die richtige Position
mvwprintw(neu, 1,3,"Genere : ");
mvwprintw(neu, 2,3,"Titel : ");
mvwprintw(neu, 3,3,"Regie : ");
mvwprintw(neu, 4,3,"Schauspieler : ");
mvwprintw(neu, 5,3,"FSK : ");
mvwprintw(neu, 6,3,"Jahr : ");
wrefresh(neu);
echo();
mvwgetnstr(neu, 1,18, genere, 75);
mvwgetnstr(neu, 2,18, titel, 75);
mvwgetnstr(neu, 3,18, regie, 75);
mvwgetnstr(neu, 4,18, darsteller, 75);
mvwgetnstr(neu, 5,18, fsk, 3);
mvwgetnstr(neu, 6,18, jahr, 5);
noecho();
sortieren(genere,titel,regie,darsteller,fsk,jahr);
}
void fehler_curses(char *message)
{
WINDOW *pop;
pop=newwin(3,75,0,0);
wattrset(pop, COLOR_PAIR(1));
box(pop, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
mvwin(pop, 20,2); //Fenster an die richtige Position
mvwprintw(pop, 1,1," %s ",message);
wrefresh(pop) ;
wgetch(pop);
wclear(pop);
wrefresh(pop);
}
void output(ARCHIV *movie)
{
WINDOW *output;
output=newwin(8,76,0,0);
wattrset(output, COLOR_PAIR(5));
box(output, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
keypad(output,TRUE);
if(movie == NULL)
{
fehler_curses(" Es sind keine Filme in der Liste vorhanden!!!!!!!!! ");
return;
}
mvwin(output, 15,2); //Fenster an die richtige Position
wattrset(output, COLOR_PAIR(0));
mvwprintw(output, 1,3,"Genere : ");
mvwprintw(output, 2,3,"Titel : ");
mvwprintw(output, 3,3,"Regie : ");
mvwprintw(output, 4,3,"Schauspieler : ");
mvwprintw(output, 5,3,"FSK : ");
mvwprintw(output, 6,3,"Jahr : ");
mvwprintw(output, 1,18,"%s",movie->genere);
mvwprintw(output, 2,18, "%s",movie->titel);
mvwprintw(output, 3,18, "%s",movie->regie);
mvwprintw(output, 4,18, "%s",movie->darsteller);
mvwprintw(output, 5,18,"%s",movie->fsk);
mvwprintw(output, 6,18, "%s",movie->jahr);
wrefresh(output);
wgetch(output);
wclear(output);
wrefresh(output);
}
void delete_title()
{
WINDOW *delete;
char search[75];
delete=newwin(5, 76, 0, 0);
wattrset(delete, COLOR_PAIR(5));
box(delete, ACS_VLINE, ACS_HLINE); //Linien um das neue Fenster
wattrset(delete, COLOR_PAIR(0));
mvwin(delete, 2, 3);
mvwprintw(delete, 2,2, "Welchen Film wollen sie entfernen : ");
wrefresh(delete);
echo();
wgetnstr(delete, search, 75);
noecho();
loesche(search);
}
int main(int argc, char **argv)
{
int press;
FILE *file;
initscr(); //Curses initialisieren
start_color(); //Farben initialisieren
if(has_colors () == TRUE) //Können wir Farben benutzen
{
init_pair(1, COLOR_WHITE, COLOR_RED); //Weiss-Rot
init_pair(2, COLOR_RED, COLOR_RED); //Schwarz-Rot
init_pair(3, COLOR_RED, COLOR_WHITE); //Rot-Weiss
init_pair(4, COLOR_RED,COLOR_BLACK);
init_pair(5, COLOR_BLUE, COLOR_BLUE);
}
cbreak(); //nur noch STRG + S, ...+Q, ...+C werden beachtet
noecho(); //keine Ausgabe auf dem Bildschirm
keypad(stdscr,TRUE); //Funk.-u.-Cursortasten als Taste behandeln
if((loading(file)) == SUCCESS);
else if((create_new_file(&file)) == SUCCESS)
{
start();
fehler_curses(" \"video.dat\" neu erstellt!!! ");
fclose(file);
}
do{
clear();
attrset(A_BOLD|COLOR_PAIR(1));
mvprintw(11,30," -1- Zum Filmarchiv \n");
mvprintw(12,30," -2- Filme verwalten \n");
mvprintw(13,30," -3- Programm beenden \n");
refresh();
switch(press=mvgetch(0,0))
{
case '1': attrset(COLOR_PAIR(3));
mvprintw(11,30," -1- Zum Filmarchiv \n");
refresh(); usleep(400000);
show_archiv();
break;
case '2': attrset(COLOR_PAIR(3));
mvprintw(12,30," -2- Filme verwalten \n");
refresh(); usleep(400000);
show_work_archiv();
break;
case '3': attrset(COLOR_PAIR(3));
mvprintw(13,30," -3- Programm beenden \n");
refresh(); sleep(1);
save_file(file);
echo();endwin();exit(0);
default: break;
}
fflush(stdin);
refresh();
}while(press!=3);
endwin(); //Curses beenden
return 0;
}
|