コード例 #1
0
ファイル: editor.cs プロジェクト: nahooda/cmdpls
 public static void start()
 {
     int intCursorStartPos = Constants.DEFAULT_CURSOR_START_Y_POS;
     int intCursorCurrentPos = intCursorStartPos;
     int intMaxNumberOfItems = Console.WindowHeight - Constants.NUM_OF_ITEMS_OFFSET; // 3 for top, 3 for bottom
     int playlistStateCounter = 0;
     Playlist objPlaylist = new Playlist ();
     Filelist objFilelist = new Filelist ();
     // Get Files
     objFilelist = getFiles ();
     // Build Screen
     buildScreen();
     objFilelist.showFilelist (((Console.WindowWidth - 1) / 2) + Constants.FILELIST_X_OFFSET , Constants.FILELIST_Y_OFFSET);
     Util.WritePos (((Console.WindowWidth - 1) / 2) + Constants.FILELIST_PAGE_OFFSET, Console.WindowHeight - 1, " 1/" + objFilelist.getPages().ToString(), ConsoleColor.DarkRed, Util.BACKGROUND);
     Util.WritePos(((Console.WindowWidth - 1) / 2) + Constants.DEFAULT_CURSOR_START_X_POS , intCursorStartPos, "-->", ConsoleColor.Blue, Util.BACKGROUND);
     do {
         while(! Console.KeyAvailable) {
             switch(Console.ReadKey(true).Key) {
                 case ConsoleKey.DownArrow:
                         intCursorCurrentPos++;
                         if(intCursorCurrentPos > (intMaxNumberOfItems + intCursorStartPos - 1)) { intCursorCurrentPos = (intMaxNumberOfItems + intCursorStartPos - 1); }
                         if(objFilelist.getFilelist().Count <= (intCursorCurrentPos - intCursorStartPos) + (intMaxNumberOfItems * objFilelist.getPageOffset())) {
                             intCursorCurrentPos--;
                         }
                         Util.WritePos(((Console.WindowWidth - 1) / 2) + Constants.DEFAULT_CURSOR_START_X_POS, intCursorCurrentPos - 1, "   ", ConsoleColor.Blue, Util.BACKGROUND);
                         Util.WritePos(((Console.WindowWidth - 1) / 2) + Constants.DEFAULT_CURSOR_START_X_POS , intCursorCurrentPos, "-->", ConsoleColor.Blue, Util.BACKGROUND);
                 break;
                 case ConsoleKey.UpArrow:
                         intCursorCurrentPos--;
                         if(intCursorCurrentPos < intCursorStartPos) { intCursorCurrentPos = intCursorStartPos; }
                         Util.WritePos(((Console.WindowWidth - 1) / 2) + Constants.DEFAULT_CURSOR_START_X_POS, intCursorCurrentPos + 1, "   ", ConsoleColor.Blue, Util.BACKGROUND);
                         Util.WritePos(((Console.WindowWidth - 1) / 2) + Constants.DEFAULT_CURSOR_START_X_POS , intCursorCurrentPos, "-->", ConsoleColor.Blue, Util.BACKGROUND);
                     break;
                 case ConsoleKey.LeftArrow:
                     break;
                 case ConsoleKey.RightArrow:
                     break;
                 case ConsoleKey.Delete:
                     break;
                 case ConsoleKey.W:
                         // TODO: Switch windows: File list to play list and vice versa
                     break;
                 case ConsoleKey.F1:
                         objPlaylist.pageOffsetInc();
                         if(objPlaylist.getPageOffset() > (objPlaylist.getPages() - 1)) { objPlaylist.setPageOffset(objPlaylist.getPages() - 1); }
                         objPlaylist.showPlaylist (Constants.PLAYLIST_X_OFFSET, Constants.PLAYLIST_Y_OFFSET);
                         Util.WritePos (Constants.FILELIST_PAGE_OFFSET, Console.WindowHeight - 1, " " + (objPlaylist.getPageOffset() + 1).ToString() + "/" + objPlaylist.getPages().ToString() + " ", ConsoleColor.DarkRed, Util.BACKGROUND);
                     break;
                 case ConsoleKey.F2:
                         objPlaylist.pageOffsetDec();
                         if(objPlaylist.getPageOffset() < 0) { objPlaylist.setPageOffset(0); }
                         objPlaylist.showPlaylist (Constants.PLAYLIST_X_OFFSET, Constants.PLAYLIST_Y_OFFSET);
                         Util.WritePos (Constants.FILELIST_PAGE_OFFSET, Console.WindowHeight - 1, " " + (objPlaylist.getPageOffset() + 1).ToString() + "/" + objPlaylist.getPages().ToString() + " ", ConsoleColor.DarkRed, Util.BACKGROUND);
                     break;
                 case ConsoleKey.F6:
                         objFilelist.pageOffsetInc();
                         intCursorCurrentPos = intCursorStartPos;
                         if(objFilelist.getPageOffset() > (objFilelist.getPages() - 1)) { objFilelist.setPageOffset(objFilelist.getPages() - 1); }
                         objFilelist.showFilelist (((Console.WindowWidth - 1) / 2) + Constants.FILELIST_X_OFFSET , Constants.FILELIST_Y_OFFSET);
                         Util.WritePos (((Console.WindowWidth - 1) / 2) + Constants.FILELIST_PAGE_OFFSET, Console.WindowHeight - 1, " " + (objFilelist.getPageOffset() + 1).ToString() + "/" + objFilelist.getPages().ToString() + " ", ConsoleColor.DarkRed, Util.BACKGROUND);
                         Util.WritePos(((Console.WindowWidth - 1) / 2) + Constants.DEFAULT_CURSOR_START_X_POS , intCursorCurrentPos, "-->", ConsoleColor.Blue, Util.BACKGROUND);
                     break;
                 case ConsoleKey.F7:
                         objFilelist.pageOffsetDec();
                         intCursorCurrentPos = intCursorStartPos;
                         if(objFilelist.getPageOffset() < 0) { objFilelist.setPageOffset(0); }
                         objFilelist.showFilelist (((Console.WindowWidth - 1) / 2) + Constants.FILELIST_X_OFFSET , Constants.FILELIST_Y_OFFSET);
                         Util.WritePos (((Console.WindowWidth - 1) / 2) + Constants.FILELIST_PAGE_OFFSET, Console.WindowHeight - 1, " " + (objFilelist.getPageOffset() + 1).ToString() + "/" + objFilelist.getPages().ToString() + " ", ConsoleColor.DarkRed, Util.BACKGROUND);
                         Util.WritePos(((Console.WindowWidth - 1) / 2) + Constants.DEFAULT_CURSOR_START_X_POS , intCursorCurrentPos, "-->", ConsoleColor.Blue, Util.BACKGROUND);
                     break;
                 case ConsoleKey.S:
                         if(objPlaylist.getName() == "") {
                             Util.WritePos(Constants.PLAYLIST_NAME_X_OFFSET, Constants.PLAYLIST_NAME_Y_OFFSET, "Enter playlist name: ");
                             objPlaylist.setName(Console.ReadLine());
                         }
                         if(objPlaylist.getName().Substring(objPlaylist.getName().LastIndexOf(".") + 1) == objPlaylist.getName()) {
                             objPlaylist.setName(objPlaylist.getName() + "." + objPlaylist.getFileFormat());
                         } else {
                             objPlaylist.setFileFormat(objPlaylist.getName().Substring(objPlaylist.getName().LastIndexOf(".") + 1));
                         }
                         Writer objWriter = new Writer(objPlaylist);
                         objWriter.writeFile();
                     break;
                 case ConsoleKey.Enter:
                         playlistStateCounter++;
                         if(playlistStateCounter > intMaxNumberOfItems) {
                             playlistStateCounter = 1; objPlaylist.pageOffsetInc();
                             Util.WritePos (Constants.FILELIST_PAGE_OFFSET, Console.WindowHeight - 1, " " + (objPlaylist.getPageOffset() + 1).ToString() + "/" + objPlaylist.getPages().ToString() + " ", ConsoleColor.DarkRed, Util.BACKGROUND);
                         }
                         PlaylistItem objPlaylistItem = new PlaylistItem();
                         objPlaylistItem.setFilename(objFilelist.getFilelist()[(intCursorCurrentPos - intCursorStartPos) + (intMaxNumberOfItems * objFilelist.getPageOffset())].getFilename());
                         objPlaylistItem.setFullPath(objFilelist.getFilelist()[(intCursorCurrentPos - intCursorStartPos) + (intMaxNumberOfItems * objFilelist.getPageOffset())].getFullPath());
                         objPlaylist.addItem(objPlaylistItem);
                         objPlaylist.showPlaylist (Constants.PLAYLIST_X_OFFSET, Constants.PLAYLIST_Y_OFFSET);
                     break;
                 case ConsoleKey.Escape:
                         Console.BackgroundColor = ConsoleColor.Black;
                         Console.Clear();
                         Environment.Exit(-1);
                     break;
             }
         }
     } while(Console.ReadKey(true).Key != ConsoleKey.Escape);
 }