CURRENT STATS: - 20566 net code lines (only h, hpp, hxx, c, cpp, cxx files). ************************************************************************************************** TODO: - bug: problems with paths longer than MAX_PATH. Allow skipping files. - bug: problems with saving folder shortcuts ;/ Sometimes they're saved sometimes not. - BUG: explorer toolbar buttons Copy To & MoveTo does not check the operation type (at me it does copying and someone reports that it moves) - BUG: when moving data and in the dst directory some of the files exist and we skip copying the files then program after moving should not delete the source files that has not been copied (currently it erases every file in the src dir). - BUG: some errors (ie. deleting files) does not allow user to skip or sth. - ADD: when cancelling the task - ask if the user would like to keep the unfinished files. - ADD: replace the shutdown after finished with executing programs/scripts/commands/... on a specific events (copying finished, copying started, all finished, ...). - BUG: in custom copy dialog the arrows up/down in the count of copies edit disappears. - BUG: problems with directories being locked by the program - MOD: problems with detecting if the mapped drive is network one or local one. - MOD?: change the file rating from size-based to filedate-based ? - ADD: additonal options: delete, secure delete. - MOD: change the way the help is being handled - f1, shift+f1, ... - MOD: change the way the configuration items are added to the options dialog - they should be autmatically added , so the registering properties would be the only step needed to view a new config option - allow headers to be registered too. - auto adding the config items to the options list - BUG: program hangs up when trying to pause the task while the feedback dialog is being shown - ADD: Log strings for main log file - MOD: optimization of sending cfg property change notifications - ADD: add new w32 based component as a replacement for lists in status dialog, miniview and options dlg - ADD: program auto-update - ADD: profiles handling in options dlg - ADD: Log file - if the strings should begin with a [ms] - MOD: change the way data is being kept in CPluginContainer - add the vector (ordering) - ADD: dialog for managing plugins - MOD: status i ministatus dialogs redesign. - MOD: get rid of MFC - MOD: obsługa dodatkowych streamów w NTFS - BackupRead/BackupWrite/BackupSeek(?) - MOD: jeśli rozpoczyna się nowe zadanie i jest otwarty duży status i nie jest zaznaczone żadne zadanie, to nowe zadanie ma się zaznaczyć. - ADD: pełna obsługa windowego ctrl+z - MOD: konfigurowalne nazwy następnych kopii plików (czyli np. 'kopia (%c) %p') - ADD: opcja cofania o bufor przy dokopiowywaniu (jak w SRECopy) - ADD?MOD - optymalizacja dostępu do nośników danych (jeśli coś korzysta z cd'ka, to inny wątek nie powinien). - ADVANCED: spróbować zaimplementować samo 'core' kopiowania jako interfejs dostępny z każdej aplikacji. Trzeba się zastanowić, czy dialogi potwierdzeń powinny się pojawiać wewnątrz dllki z interfejsem, czy w programie. To samo dotyczy dialogów kopiowania... ??? OGÓLNE ZAŁOŻENIA: - ma umożliwiać kopiowanie całego dysku (np. kopiuj dysk C:\ na E:\ co spowoduje skopiowanie wszystkiego z c na e) - obsługa wielku ścieżek docelowych - kolejno/równocześnie - ftp/net support - download/upload - multistream read/write (konfigurowalna ilość streamów)+multisource reading (wiele kopii tego samego źródła) - obsługa skrótów - pobieranie maksymalnej ilości informacji już z dll'ki - zaznaczanie (flagą) plików, które z pewnych względów nie zostały przetworzone (do wykorzystania przy końcowym kasowaniu/tworzeniu raportu) - automatyczna korekacja wielkości pliku podczas kopiowania (z aktualizacją wszystkich liczników) - synchronizacja dwóch lub więcej folderów (jedno- lub wielostronnie) - command-line/script support - ograniczenie transferu - zmiana ścieżek źródłowych w locie - rozpoczęcie przetwarzania już w momencie otrzymania cząstkowych danych o operacji - np. wyszukiwanie plików w momencie otrzymania pierwszej ścieżki źródłowej) - wyładowanie danych po zakończeniu operacji - możliwość weryfikacji skopiowanych danych - swobodna regulacja wielkości buforów w locie (w zależności od aktualnie przetwarzanej ścieżki źródłowej/docelowej) - konkretne operacje (kopiowanie/przenoszenie/synchronizacja) tworzone na bazie skryptowej np. przenoszenie = wyszukiwanie+kopiowanie+usuwanie - ograniczenie ilości jednocześnie wykonywanych zadań (z możliwością przełączenia aktywnego zadania /niezależnego wznowienia) - rejestrowanie callbacków - info o zmianach statusów zadań (pojedynczych/zbiorowych) - identyfikacja woluminów źródłowych przez jakiś rodzaj identyfikatora - opcja wypełniania błędnych obszarów pliku np. zerami (jeśli napotkano np. bad sektor) - bezpieczna obsługa save-state'ów - kody CRC (przeciwdziałanie wychrzanianiu się podczas ładowania save'a) - konfigurowanie domyślnej akcji dla kopiowań - ADD: jesli zabraknie miejsca na kopiowane pliki - ma sie pojawiac opcja zmiany folderu docelowego. - CHANGE: spróbować zmienić wszystkie dialogi wyboru folderu na ten "porządny" - VISUAL APPEARANCE: przeprowadzić dość radykalne zmiany wyglądu CStatusDlg - aktualnie jest do wyświetlenia za dużo danych, zaś na dialogu jest za mało miejsca. Zmienić widok zaawansowanych albo poprzez dorzucenie tooltipów do aktualnie istniejących kontrolek (łatwiejsze, ale zdecydowanie gorszy efekt), lub zamienić całą prawą stronę okna w jedną wielką w pełni konfigurowalną listę (CListCtrl), która będzie wyświetlać tylko to, czego będize życzył sobie użytkownik (coś a'la właściwości w Delphi ?) - advanced view po prawej stronie bazowany na clistview lub czymś podobnym - kolumny w CListView po lewej stronie statusu w pełni konfigurowalne - FEATURE EXPAND: miniview zawiera na razie jedynie minimum danych - dane dodatkowe typu transfer, ..., powinny zostać pokazane w tooltipie(w pełni konfigurowalnym) odświeżającym się razem z całym miniview. - ADV. FEATURE - używanie skryptów do kopiowania, ew. obsługa z linii poleceń... - FEATURE: uwzglednianie wszystkich zadan(tych z listy) przy obliczaniu miejsca wolnego. - FEATURE: wykrywanie nowych wersji CH'a, auto-update - FEATURE: linki w aboutboxie mają być linkami... - FEATURE: jeśli możliwe - zmienić obsługę na unikod - NEW FEATURE: obsługa ftp'a ? - BUG: podczas przenoszenia po sieci również można używać MoveFile (nie tylko lokalnie) - jak określić ? - ADVANCED: kopiowanie b.malych plikow w b.duzych ilosciach trwa b.dlugo. gdyby udalo sie przetwarzac dane na niskim poziomie (aby zachowac transfer nominalny dysku) byloby lepiej. DONE: - poprawić wyświetlanie nazwy pliku źródłowego i ścieżki docelowej na tzw. ellipsis (tak aby były widoczne początki i końce ścieżki - patrz help lub codeguru-static controls) - napisać usuwanie folderów dla ST_MOVE - rozłożyć ThrdProc na coś mniejszego - łatwiejszego do analizy - napisać kawałek kodu kopiującego atrybuty pliku/folderu źródłowego - napisać obsługę błędów - zmienić obsługę CConfig - nie odczytywać wartości za każdym razem z pliku - zmiana w configu i nie tylko - interwały podawać w ms zamiast w s - przerobić okno statusu na mniejsze z przyciskiem rozszerzającym dialog o prawą stronę - pokazywanie ilości skopiowanych/przeniesionych megabajtów (ile zostało) - zabezpieczyć program przed wielokrotnym poklazywaniem okna statusu - zmienić texty operacji np. na Kopiowanie - błąd - niech położenie okna statusu będzie stałe - w prawym dolnym rogu ekranu - zabezpieczyć program przed uruchamianiem jego wielu kopii na jednym komputerze - zaimplementować obsługę Auto-retry - zoptymalizować wyświetlanie postępu w CStatusDlg - migotanie, CStaticFilespec 2krotnie zmienia stan - uwzględnić przenoszenie w obrębie jednej partycji - ominąć niepotrzebne wyszukiwanie, MoveFile, ... - wrzucić do każdego CTaska oznaczenie, z jakich dysków logicznych (a co za tym idzie również fizycznych) korzysta dane kopiowanie - jeśli plik został już skopiowany (i zostały zmienione jego atrybuty (pliku docelowego)) i następuje próba ponownego kopiowania - na plik ze zmienionymi atrybutami (np. Read only) pliki nie mają być nawet otwierane. - FLAGA W KONFIGURACJI - jeśli użytkownik chce (flaga) należy odtworzyć dźwięk po zakończeniu kopiowania (string) i przy wystąpieniu błędu - FLAGA W KONFIGURACJI - czy chronić pliki z atrybutami read-only przed usunięciem i nadpisaniem (odnośnie SetFileAttributes przed skasowaniem pliku, przed kopiowaniem pliku) - obsługa auto-complete files w CustomCopy - tylko na życzenie - FLAGA W KONFIGURACJI - dodatkowa FLAGA W KONFIGURACJI oznaczająca potrzebę ustawiania atrybutów - zaimplementować ustawianie czasu dla skopiowanego właśnie pliku (dla katalogu się nie da) wg czasu źródłowego pliku - dodatkowa FLAGA W KONFIGURACJI określająca konieczność kopiowania tych atrybutów - sposób na implementację 8/10 funkcji - (pauza/wznów, anuluj, usuń, restart) dla zaznaczenia i wszystkich - auto-retry nie powinno wznawiać zakończonych elementów - do poniższego - zabezpieczyć przed wywalaniem się programu - jeśli wywalany element jest właśnie zaznaczony w StatusDlg/listctrl i nastąpi parę innych czynników - program się wysypuje. Dokładnie w ApplyButtonsState, ... - wywalić automatyczne wywalanie zakończonych zadań z CStatusDlg - przenieść do CMainFrame - tylko na wyraźne życzenie użytkownika - FLAGA W KONFIGURACJI - w tooltipie w trayu ma się pojawiać ogólny postęp - tak samo jak w nagłówku okna statusu - w onpopupshowstatus krzaczy się, jeśli podczas wyłączania aplikacji jest pokazane okno statusu - porządna obsługa CListCtrl - kliknięcie na danym elemencie nie będzie powodowało zaznaczenia tylko na chwilę, obsługa przycisków up/down, spacja (pause/resume), delete (delete) - klawiatura - w CListCtrl dodać (zamiast LP) "ikonki" oznaczające stan danego itemu (pauza, błąd, processing, ...) - zmienić size'owanie dialogu statusu na zależne od wielkości czcionki - dołożyć edycję konfiguracji z automatycznym odświeżeniem (po zmianie ustawienia program ma korzystać z nowych ustawień) - implementować auto restart programu po uruchomieniu systemu (rejestr, określenie ścieżki do programu) - zmniejszyć ilość danych przechowywanych w pamięci podczas działania programu - relPath - sprawdzić, jak wygląda sprawa transferu kompresji kompresji w stosunku do ciągnięcia po sieci - nie opłaca się - dla filmu wsp. kompresji wynosi ok.99%, więc overhead spowodowany kompresją i dekompresją jest zbyt duży i nie opłaca się (dla innych plików może być inaczej, ale to znów oznacza dodatkowy overhead na wykrywanie rozszerzeń plików, które nadają się do kompresji , program zwiększa swoją objętość - konieczność obsługi sieci - TCP/IP, jest bardziej zawodny...) - poprawić tzw open shared files - w związku ze zmianą current indexu po zakończonym kopiowaniu na wielkość tablicy z plikami poprawić DeleteFiles tak, aby nie chrzaniła się - aktualnie korzysta z current indexu jako pierwszego elementu do usunięcia - poprawić złe zliczanie wielkości - foldery mają wielkość - zrobić coś z OnCopyData - podczas kreacji MainFrame'a zarejestrować klasę okna z określoną nazwą - aby pewniej identyfikować okno - autorejestracja .dll podczas uruchomienia (zapis do rejestru HKCU\JFS Application Factory\Copy Handler\Registered=1 jeśli zarejestrowano) - dodatkowe komendy do shell context menu i drag&drop context menu - napisać bibliotekę DLL (tzw. in-process server) - dodatkowy licznik czasu ogólnego i pozostałego - poprawić: jeśli item w liście zadań traci focus, a po dłuższej chwili go odzyskuje - transfer może sięgać bardzo wysoko (kilkaset MB/s) - poprawić aby wyświetlał 0 - po reloadzie danych z plików - powinny być odczytywane również ostatnie położenia postępu - jeśli transfer po pobraniu focusu przez item w liście zadań wynosi 0 - zmień go na średni transfer, który występował do tej pory (estetyka) - błąd zliczania wielkości (podczas odczytu danych z pliku progressu nie jest update'owana zmienna m_uhPosition w CTaskArray) - poprawić błąd występujący przy zamykaniu programu (może procedura okna (AfxWndProc) ma coś wspólnego - poprawić usuwanie zakończonych zadań z listy nie usuwa wszystkich od razu (dziwne) - dodatkowo występuje Access Violation, jeśli podczas usuwania wszystkich zakończonych był zaznaczony jakiś element z listy (pojedyncze usuwanie tego nie powoduje) - BUG: program wywalił się raz przy usuwaniu elementów z listctrl w status dialogu - dokładnie w procedurze obsługi OnTimer, przy ApplyButtonsState - przy GetStatus - klasa CTask została usunięta - poprawić - wstawić TRACE na we i wy OnTimer w StatusDlg i w CMainFrame na usuwanie automatyczne elementów z tablicy (chyba też timer) i zobaczyć, czy nachodzą na siebie - jeśli tak, zastosować blokowanie (jakiś bool ?), jeśli nie - problem znika (sprawdzono - ok) - wymyślić coś, aby na zmianę selekcji w status liście natychmiast odświeżał się status - aktualnie odświeża się co określony interwał oraz na l-click - poprawić zapis konfiguracji na "od razu" - inaczej na sypnięcie się systemu konfiguracja nie jest zapisywana - dodatek - malutkie okno wywoływane z poziomu okna statusu (zamiast zmiany ikony w tray'u na pasek postępu oraz zamiast - oznaczyć sygnałami wizualnymi rozpoczęcie i zakończenie kopiowania) - pokazujące progress bar dla każdego kopiowania (odpowiednim kolorem) oraz progress dla wszystkiego - OPCJE KONFIGURACJI - [mini view] - show filenames, show single tasks, display refresh interval - przeróbka miniview tak, aby nie używało kontrolek CProgressCtrl (rysowanie ręczne) - OPCJA konfiguracji - ograniczenie ilości kopiowanych elementów - zmienić cmainframe tak, aby pokazywał tylko jedno okno miniview - przerobić funkcje kontrolujące wątek z CTask tak, aby nie następowało w nich zerowanie - powinno się ono odbywać w wątku (za tzw. oczekiwaniem) - dodać dodatkowy kolor itemu w StatusDlg (np. szary) dla oczekiwania (niebieski) - OPCJA konfiguracji - shutdown after copying all (sprawdzić, czy ilość aktualnie przetwarzanych operacji w ctaskarray != 0 oraz czy nie ma już operacji ze statusem ST_WAITING - jeśli te warunki są spełnione - wyłączamy sprzęt (wymyślić coś z ST_ERROR ??? - aktualnie poza kolejnością - jeśli error - system zostanie wyłączony) - poprawić - jeśli użytkownik zapuści kopiowanie, ale nie włączy status dialogu - nie jest odświeżany czas kopiowania (i tym samym ogólny transfer) - wyłączyć możliwość rezise'u miniview - FLAGA - auto show miniview (po włączeniu programu) - FLAGA - autoukrywanie miniview jeśli nie ma nic ciekawego do pokazania - program zakleszcza się na sekcji krytycznej - wątek koliduje z funkcją CMainFrame usuwającą zakończone zadania - wątek ustawia flagę zakończenia, cmainframe wykrywając zakończenie próbuje zakończyć wątek i wszystko się blokuje - tymczasowo w cmainframe w oncopydata dorzucić informowanie o otrzymanych z dll'ki pustych stringach - wywalić TEMP command z menu trayowego - quick access listbox ma być wypełniany danymi z quick acces file.ini z folderu, gdzie jest uruchamiany program, lub z c:\windows ? - zapis quick data na wyjście z formy CFolderDlg - przeróbka okna wyboru folderu na 'bardzej' - dołożyć dodatkowe "zakładki" (domyślne "filmy", "instalki", ...), always on top, w nagłówku - list plików - dodatek - okno dialogowe w którym można podać ścieżkę źródłową i docelową jako stringi a nie tylko z explorera. Jeśli okaże się, że można programu używać do ciągnięcia z NET'u - rozbudować dialog obsługujący, oraz napisać coś, co pozwalać będzie ciągnąć pliki z NET'u wielostrumieniowo. Jeśli *nie* - to nie. - przechwytywanie ctrl-v, r-drag, i innych tego typu w explorerze - przekierowane do copy handlera NIE MA PO CO - użytkownik musi mieć możliwość wyboru kopiowiania - explorer lub CH - ulepszyć aboutbox'a - uzupełnić dialog ręcznego podawania danych tak, aby akceptował maski plików, i wiele innych ... - kopiowanie/przenoszenie z maską (np. *.jpg), własciwie to chodzi o kopiownie 'specjalne' z duza iloscia opcji :) - poprawka w onCopyData w CMainFrame - przechwycić rodzaj kopiowania. Jeśli 'specjalne' - wyświetl uzupełniony dialog ręcznego podawania danych. - GetSnapshot ma pobierać również maskę - modyfikacja CCustomCopyDlg tak, aby uwzględniało chceckboxy opcji specjalnych + ustawianie flag specjalnych przy wychodzeniu z CCustomCopyDlg + modyfikacja stringów określających rodzaj kopiowania - dodatek - implementacja kopiowania danych do jednego folderu (modyfikacja przy okreslaniu sciezki docelowej dla danego pliku - już podczas właściwego kopiowania - chyba w ProcessFiles) - dodatek - implementacja kopiowania pustych plików - modyfikacja CustomCopyFile - kopiowanie zawartosci tylko jeśli flaga nie będzie podana - usuwanie plików przy przenoszeniu ma być realizowane w trakcie kopiowania (lub nie, jeśli podamy odpowiednią flagę) - wychrzania się miniviewdlg podczas wychodzenia z programu - CMainFrame już nie istnieje, wiele innych elementów też, a podczas wychodzenia z tzw. Modal Loop następuje wychrzanienie - spróbować modeless dialogs - poprawić chrzaniącą się czcionkę w CPropertyListCtrl - dodać Init (niektóre np. OnCreate nie są w ogóle wywoływane) - zabezpieczyć modeless dialogs przed wielokrotnym włączaniem (np. 30 okien statusu) - zmienić nieco tekst określający operację tak, aby wyświetlał maskę - dodatkowy przycisk ADVANCED - z listą funkcji zaawansowanych - zamiana części (np. początków) ścieżek źródłowych na inne stringi - np. jeśli zmieniła się nazwa udziału siecowego w czasie kopiowania należy zmienić we wszystkich znalezionych plikach kawałek ścieżki który określa udział - wyłączanie programu przy włączonym oknie specjalnego kopiowania chrzani się - parent skasowany a dialog próbuje wywołać CFrameWnd::OnCopyData - upewnić się, że wszystkie wyświetlane dialogi są wyświetlane na wierzchu wszystkich okien bez stylu wndtopmost (za wyjątkiem jednego) - chodzi zwłaszcza o dialog specjalnego kopiowania - przerobić okno miniview tak, aby nie migało przy włączaniu, jeśli pokazywanie nie jest potrzebne - w związku z poprzednią poprawką pojawił się problem braku wndTopMost w przypadku pojawiania się okna miniview za sprawą pojawienia się dodatkowych wpisów w tablicy tasków (np.dane z explorera) - poprawić beta4: - czasem coś się chrzani przy kopiowaniu danych (puste ścieżki) - poprawiono błąd CopyHandlerShellExt.dll - dane pobierane ze schowka (oraz z IDataObject) były przesyłane bez kończącego znaku '\0', przez co niektóre kopiowania chrzaniły się (puste pliki) - poprawiono w dll-ce wpisy do rejestru - aktualnie dll-ka jest rejestrowana pod 'Folder'-em, co - pozwala używać opcji kopiowania również dla moich dokumentów i innych specjalnych folderów beta 5: - NEW FEATURE: dokopiowywanie powinno sprawdzać datę pliku źródłowego i docelowego ???: +===================+========================================+===================================+==============================+==============================+ | WE | WY | 0 | 1 | 2 | +-------------------+----------------------------------------+-----------------------------------+------------------------------+------------------------------+ * |brak (folder/plik) | brak | błąd |Pomiń/czekaj/ponów próbę* |Pomiń/czekaj/ponów próbę* | |brak (folder) | jest | pomiń |pomiń |pomiń | * |brak (plik) | jest (odpowiada zapamiętanemu stanowi) | pomiń |pomiń |pomiń/kopiuj od nowa | * |brak (plik) | jest (różne od zapamiętanego stanu) | błąd |pomiń/czekaj/ponów próbę* |pomiń/czekaj/ponów próbę* | * |jest (folder/plik) | brak | kopiuj od nowa |kopiuj od nowa |kopiuj od nowa | |jest (folder) | jest | pomiń |pomiń |pomiń | * |jest (plik) | jest (odpowiada zapamiętanemu stanowi) | pomiń |pomiń |pomiń/kopiuj od nowa | * |jest (plik) | jest (mniejszy od zapamiętanego stanu) | dokopiuj (kopiuj od nowa - flaga) |dokopiuj/pomiń/kopiuj od nowa*|dokopiuj/pomiń/kopiuj od nowa*| * |jest (plik) | jest (większy od zapamiętanego stanu) | kopiuj od nowa |kopiuj od nowa |pomiń/kopiuj od nowa | +===================+========================================+===================================+==============================+==============================+ - rozbudować flagę wizualnych potwierdzeń (nie zaimplementowaną) tak, aby akceptowała trzy stopnie szczegółowości (ok) - dodatkowe dwie FLAGI - czy dialogi potwierdzeń mają wybierać określoną opcję po pewnym czasie (bool) i odpowiednio czas oczekiwania (UINT) (ok) - utworzyć dialog odpowiedzialny za wyświetlanie potwierdzeń: - Pomiń/Pomiń wszystkie/czekaj/ponów próbę (ok) - dokopiuj/dokopiuj wszystkie/pomiń/pomiń wszystkie/kopiuj od nowa/kopiuj od nowa (wszystkie) (ok) - pomiń/pomiń wszystkie/kopiuj od nowa/kopiuj od nowa (wszystkie) (ok) - zastanowić się nad implementacją Kopiuj od nowa wszystko, ... wszystko - czy będzie to flaga wewnątrz CTask'a (*tak*) (i czy ew. będzie zapisywana (*nie*)), może tylko lokalna flaga dotycząca tylko aktualnego uruchomienia programu - BUG: Czas wykonywania operacji przy >kilku operacjach jest pokazywany źle (wartości ujemne oraz obejmujące conajmniej parę lat (np 17000 dni) - powód - po przechwyceniu wyjątku jest wykonywany update czasu bez rozpatrywania, czy powinien być wykonany - BUG: każdy dialog używa jednego identyfikatora timera - sprawdzić, czy nie będą ze sobą kolidować (prawdopodobnie będą) - nie chrzanią się (dziwne) - na razie działają - BUG: oczekiwanie nie spełnia całkowicie wymagań - zajmuje za dużo czasu procesora (każde oczekiwanie to wątek, który używa czasu (wprowadzono więc opóźnienie 100 ms między sprawdzeniami flagi kill) - transfer może spaść np. 10-krotnie) i nie jest niezawodne - dla ograniczenia do 1 kopiowania włączają się czasem 2. Poza tym bardzo często żaden nie chce się załączyć (???). (poprawiono) - BUG: zmiana opcji konfiguracji dot. usuwania zakończonych zadań oraz tzw. autoretry on error działa dopiero po restarcie programu - PERFORMANCE FIX: obsługa wpisywania danych do CProgressListBox'a ma się odbywać na wskaźnikach do struktur danych, zamiast przepisywania za każdym razem danych ze struktury do tablicy - FEATURE: dołożyć w miniview trochę przycisków kontrolujących - pauza, resume, ... beta6: - ADDITION: dodać obsługę pause all, resume all, ... w miniview - FEATURE: dopisać klasę obsługującą bufor używany do kopiowania (z operatorem void*, unsigned char*, ...) tak, aby można było bez problemu zmieniać typ alokacji (np. na VirtualAlloc) - PERFORMANCE FIX: poprawić GetFileName i GetFileRoot w CFileInfo tak, aby nie wywoływać dwa razy _tsplitpath. - CHANGE: zmiana wielkości bufora dla danego taska nie ma powodować bezsensownego wpisywania wartości nowego bufora do edit'a w szczegółach okna statusu - ma być odświeżone po zmianie tak, aby błąd podczas realokowania bufora (i tym samym jego odtworzenie do poprzedniej wartości, lub alokowanie bezpiecznej wartości 64kB) powodował pokazanie prawidłowej wartości - PERFORMANCE FIX: wywalić zbędne resource - menu, string table, accel table - USER EXPERIENCE: podczas kopiowania w CStatusDlg pokazuje się chwilowy transfer - wartość transferu nie jest dokładna - pomiędzy kolejnymi update'ami nie jest mierzony czas, a jedynie pobierana jest wartość opóźnienia timera odświeżającego - poprawić beta7: - VISUAL APPEARANCE: wywalić 'Schowek' jako określenie pliku (ok) - BUG: użycie CFileInfo::Exist pociągnęło za sobą brak wykrywania dysków - brak folderu dla c:\ poprawić (ok) - OPTIMIZATION: zmienić sposób zapisu danych (nie progressu) w pamięci (i jednocześnie w pliku) aktualnie dla każdego pojedynczego pliku zapisywana jest pełna ścieżka dostępu (co przy kopiowaniu 1000 plików spod ścieżki c:\program files oznacza stratę ok.15kB miejsca). Zmienić tak, aby każdy plik zapisany w tablicy plików miał odnośnik do ścieżki znajdującej się w m_clipboard (ZMIANA FORMATU PLIKÓW ATP i ATD). - zmienić skład klas CFileInfo, CFileInfoArray, dopisać CClipboardEntry i CClipboardArray (ok) - dopisać funkcję wyszukującą dla danego katalogu lub pliku substytut (zamienną nazwę - np. dla c:\windows -> c:\ zmieniamy 'windows' na np. 'kopia windows' lub coś w tym stylu) (ok) - dopisać w CFileInfo funkcję GetDstPath(LPCTSTR dstFolder, iCopy) generującą stringa z nazwą elementu docelowego (do użycia bezpośrednio w CreateFile) (ok) - implementacja obsługi m_ucCurrentCopy w CTasku - CalcSize, CalcProcessed mają zwracać odpowiednie wartości (powiększone o aktualną ilość wykonanych już kopii), ilość plików nie ma być mnożona +FEATURE: kopiowanie w to samo miejsce ma zmieniać nazwę na Kopia (tylko przy drag&dropie?)+ +FEATURE: dodatkowa opcja specjalnego kopiowania - robienie kilku kopii źródła w miejscu docelowym: - dodać unsigned char'a w CTask'u oznaczającego ilość kopii do wykonania (standardowo 1, można zmienić w ccustomcopydlg) (+Store/Load w sekcji danych) (ok.) - edit w oknie ccustomcopy określające ilość kopii + implementacja wpisu do ctask'a (ok) - implementacja getstatusstring i getsnapshot w ctask'u tak, aby przy większej ilości kopii (>1) pokazywały odpowiedni string. (ok) - SMALL BUG: podczas kopiowania plików bez zawartości nie jest update'owany licznik wielkości plików - FEATURE: jeśli podczas kopiowania naciśniemy pauzę, po czym wznowimy taska, oraz jest włączona opcja wizualnych potwierdzeń będziemy zapytani o kontynuację. Należy to naprawić poprzez zapamiętanie indeksu pliku podczas włączania pauzy i jeśli będziemy rozpatrywać dany index to pomijamy wszelkie okna kopiowania (po restarcie programu pytanie będzie się pojawiać). - SMALL BUG: podczas sprawdzania atrybutów pliku docelowego (aby porównać ze źródłowymi) następuje błędne odczytanie atrybutów (na =0), przez co porównanie wypada niepomyślnie i plik jest kopiowany od nowa (głupota - najpierw są kasowane atrybuty, a później odczytywane) - GREAT BUG (tylko wersja Release): podczas kopiowania w konfiguracji Release (w Debugu nie !!!) następuje błędne kopiowanie plików (w teście kopiowania plików o wielkości 1B pliki docelowe były puste). Prawdopodobnie ma to również związek z błędnym wyświetlaniem transferu i wielkością danych wejściowych w stosunku do oczekiwanych (kopiowanie zakończyło się dokładnie na 2500 %) - SIMPLE SOLUTION: okazało się, że program nie sprawdzał, czy próba pobrania danych dotyczących pliku wyjściowego (ogólnie czy istnieje) zakończyła się sukcesem Jeśli nie zakończyła się sukcesem - opis pliku zawierał przypadkowe dane (m.in. wielkość na podstawie której program próbował przenieść wskaźnik pliku do jakiejś kosmicznej wartości) - FEATURE: dorzucić LOGI - lista działań podjętych podczas kopiowania plików - nazwa taka jak dla plików .atp i .atd, tylko z rozszerzeniem .log (lub .txt) - dodatkowa opcja - tworzenie logów - dodatkowa opcja w CStatusDlg - ViewLogFile (pewnie gdzieś w szczegółach jako button) - SMALL BUG: jeśli program podczas kopiowania napotka już plik i zdecyduje się go dokopiować przesuwa wskaźniki plików źródłowego i docelowego do wartości 'wielkość pliku docelowego'. Seek odbywa się tylko na wartościach 32-bitowych, co ogranicza wielkość pominiętego kawałka do 2GB - poprawić na pełną 64-bitową obsługę. - APPEARANCE: po naciśnięciu w statusDlg jednego z przycisków pauza, wznowienie, ... należy natychmiast odświeżyć listę zadań, tak samo jak podczas usuwania zakończonych zadań, aby nikomu nie przyszło do głowy naciskać jakiegoś przycisku i natychmiast innego tak aby wychrzanić program - VISUAL APPEARANCE: określanie postępu procentowego przy braku jakiejkolwiek wielkości (size all == 0), lub przy tworzeniu pustych plików wyjściowych powinno określać postęp na podstawie indexu (a nie jak do tej pory albo ustawiano na 0 % albo na podstawie wielkości plików wejściowych (II przypadek)) - niestety przerobienie wyświetlania procentów dla całości mija się nieco z celem. Aby to zrobić, za każdym sprawdzeniem procentów trzebaby przeszukać wszystkie zadania z listy, sprawdzić w każdym stopień zaawansowania w stosunku do innych zadań, ... co niepotrzebnie obciążyłoby procesor - może kiedyś ... - BUG ? - podczas kopiowania po sieci w oknie statusu w transferze pojawia się co jakiś czas coś w stylu 1#.J (lub coś podobnego) - DZIELENIE double PRZEZ 0 daje takie rezultaty beta 8: - SMALL BUG: podczas wystąpienia błędu pokazywane jest operacja zakończona pomyślnie, czyżby GetLastError() kasował kod błędu po pierwszym wywołaniu i każde następne zwraca 0 ? (nie - OTF ze swoim CreateFile i SetFilePointer zmianiają) - VISUAL APPEARANCE: określanie chwilowego transferu powinno być dokładniejsze. Aktualnie jest sprawdzany co określony w opcjach interwał czasu, ale różnica czasu pomiędzy ostatnim odświeżeniem statusu a aktualnym jest podawana w sekundach (zaś w opcjach podaje się milisekundy), więc może wynosić 0. W takim przypdaku pobierany jest czas z opcji i przeliczany transfer (przeważnie źle, ponieważ można podać 1 ms opóźnienia a w rzeczywistości minie np. 55 ms przez co wyliczony transfer wzrośnie 55 razy) - przerzucić obliczanie interwału na GetTickCount() zamiast time() (w milisekundach) - SMALL BUG: Odświeżanie statusu w StatusDlg odbywa się przypadkowo za często (może ma na to wpływ message wysyłany z ListView, który powoduje automatyczne odświeżenie) - właściwie listview nie miał z tym nic wspólnego - winne były dwie opcje: automatyczne wznawianie i automatyczne usuwanie zakończonych, które to wysyłały do StatusDlg message o update statusu - niestety w przypadku Automatycznego usuwania nie było sprawdzane, czy coś usunięto, a w przypadku wznawiania - trzeba było dołożyć parametr określający, czy wznawiać tylko itemy z błędem czy też wszystkie możliwe. beta 8a: - BUG ?: Pojawiły się sygnały, że pod systemem Windows 98 nie działa poprawnie dialog wyboru folderu docelowego (a poza tym i tak nie jest w pełni sprawne - np. podanie adresu sieciowego nie powoduje wyszukania, a tylko zaznaczenie otoczenia sieciowego) - teraz pod Win98 działa, ale tylko wyszukiwanie w obrębie Mojego komputera, po sieci mija się to z celem - przeważnie jest ona tak wolna, że przywieszałoby to komputer - FEATURE: przerobić wizualny interfejs użytkownika (niech to wygląda profesjonalnie, ale niech nie będzie przepakowane bitmapami i innym śmieciem) - dot. gł. przycisków w status dialogu. Chwilowo nie wygląda profesjonalnie i mam wrażenie, że jeszcze długo nie będzie (nie mam zdolności graficznych) - na początek menu z alternatywnym rysowaniem (a'la XP) (ok) - poprawić wyświetlanie przycisków w miniview (znikanie przy LButtonDown, zrobić płaskie) (ok) - wypłaszczyć elementy GUI (listview w statusdialogu nie - głupio wygląda) (ok) - FEATURE: w StatusDialogu dołożyć coś w PD rogu - umieszczanie w PD rogu ekranu (może w miniview tez ? - chyba raczej nie) - SMALL BUG: podczas włączonego usuwania zakończonych zadań (może nie dlatego) program po zakończeniu kopiowania wysypuje się - nie zawsze - (???) - powód: Autousuwanie zakończonych zadań wykrywa zakończone zadanie poprzez sprawdzenie flagi ST_FINISHED. Niestety po ustawieniu tej flagi wątek wykonuje jeszcze parę operacji - m.in. zapis do pliku .log, odegranie dźwięku. - VISUAL APPEARANCE: wywalić # przy nazwach plików do kopiowania (oznaczenie wyswietlania danych z tablicy schowka zamiast z tablicy plików). - VISUAL APPEAANCE: poprawić wyświetlanie tekstu w statusDlg - aktualnie jest za blisko brzegu Initial release 1.0 (internal release #9): - FEATURE: dorzucić obsługę różnych języków (głównie angielskiego) - wywalić wszystkie używane stringi z kodu do STRING TABLE'a (niestety LoadString jest około 6 razy wolniejszy niż zwykłe przypisanie stringa, ale nie jest to wartość duża (w debugu: 100000 przypisań zajmuje ok. 222 ms, zaś 100000 ładowań string resource'a ok 1450 ms, w połączeniu z odświeżaniem np. miniview co 55 ms daje to stratę ok 1.2 s na ponad 1.5 godziny, więc nie warto wczytywać tekstu wcześniej do bufora). (ok) - wrzucić po dodatkowej kopii dialogów, menu i string table'a jako język angielski (ok) - przerobić kod programu tak, aby wczytywał zasoby (dialogi, menu...) poprzez FindResourceEx i LoadResource, zamiast np. LoadMenu. (ok) - przetłumaczyć wszystkie zasoby angielskie na angielski (ok) - poprawić OTF - funkcja używana do prowadzenia LOGów tak, aby wczytywała stringi wg aktualnie ustawionego języka (ok) - BUG: w związku z dodawaniem obsługi języków do optionsDlg nie jest dodawana opcja priorytetu - VISUAL APPEARANCE: jeśli wybrano jakieś zadanie w CStatusDlg, ale w konfiguracji wyłączyliśmy kreowanie logów - przycisk pokaż dziennik jest dalej aktywny, ale i tak nie można nic zrobić - poprawić stan w takim przypadku na disabled. ## internal release #10 ## - BUG: poprawić "kopia (33) ..." - ten string nie został wrzucony do string table, tylko jest w kodzie programu - wyrzucić do ST, przerobić funkcję wykorzystującą tak, aby z niego ładowała. - OVERHEAD: funkcja GetConfig() w CTask'u używa sekcji krytycznej, a nie powinna (wskaźnik do klasy z konfiguracją jest ustawiany tylko raz, zaś odczytywany często, co aktualnie powoduje "blokowanie" na krótki czas większości operacji na CTasku - wywalić sekcję krytyczną. - OPTION: podczas ograniczania ilości kopiowań np. do 1 i włączeniu kilku tasków - nie są one doliczane do ogólnej puli wielkości plików do skopiowania - flaga ma określać, czy tak właśnie ma sprawa wyglądać, czy mają być przed blokowaniem zadań zliczane wielkości. - DLL UPDATE: właściwie już w internal release #9 zmienił się sposób działania DLL'ki - elementy menu kontekstowego shella pojawiają się tylko i wyłącznie jeśli jest uruchomiony Copy handler (wiąże się to z odczytywaniem aktualnie ustawionego języka w Copy handlerze). Usunąłem również możliwość ponowienia próby kopiowania (jeśli wcześniej nie było uruchomionego CH). Nie ma to teraz sensu - uruchomienie komendy menu kontekstowego jest możliwe tylko jeśli jest uruchomiony copy handler. Version 1.01 (Internal release #11) - BUG: pokazywanie dialogu z błędem otwierania pliku źródłowego powoduje wychrzanienie się programu (w wersji debug pokazuje okno z dziwną wielkością znalezionego pliku źródłowego, zaś w Release po prostu występuje nieprawidłowa operacja - poprawić. - STRANGE BUG ?: Na Duronie 800 z myszką A4Tech'a podczas kopiowania danych po sieci przycina się kursor myszy. (zawsze mówiłem że nie ma to jak P100 :) ), na innych komputerach tego nie zanotowano (tzn. na Celeronie 450 i Duronie 1000). - brak dostępu do środowiska w którym program zwalnia - (???) - coś z siecią - ustawienie bufora na 1kB usuwa problemy - BUG: Custom Copy dialog nie wyświetla tekstu w rodzaju operacji - BUG: pod systemem Windows XP nie działa poprawnie DLL'ka (pod NT i 2000 również). Powodem jest specyficzne przetwarzanie przez nią zawartości schowka (CF_HDROP). Nie stosuje ona DragQueryFile, tylko zwykłego kopiowania zawartości bloku pamięci (HGLOBAL), przez co stringi w formacie UNICODE nie są przekształcane na postać ANSI, tak jak to robi DragQueryFile. - BUG: nie działa pokazywanie log files'ów (teraz znów działa, wprowadzić wyświetlanie błędu, jeśli ShellExecute zakończyło się błędem). - BUG: nie zlokalizowany string w CStatusDlg::OnShowLogButton() - zmienić - FEATURE: W oknie wyboru folderu docelowego powinna pokazywać się pojemność dysku. - APPEARANCE: jeśli wystąpi błąd kopiowania, należy odliczać ustalony czas do automatycznego wznowienia od momentu jego wystąpienia, a nie jak dotychczas tak sobie (nie musi być zbyt dokładne) - FEATURE: Sprawdzać, czy jest wystarczająca ilość miejsca na dysku na skopiowanie danej rzeczy, wyświetlać dialog w zależności od ustawień wizualnych potwierdzeń (Normal+) - wywalić funkcje formatujące wielkość (xxx GB/kB/...) do globalnych funkcji dostępnych dla kilku różnych miejsc w programie. (ok) - dorzucić dialog wyświetlający info o braku miejsca - pomijać sytuację, gdy coś jest przenoszone w obrębie jednej partycji (nie trzeba, gdyż dla takiego przenoszenia wielkość plików łącznie wynosi 0, więc nie zajmuje to miejsca). - BUG: w explorerze jako opis komend z context menu pokazywane są chińskie (chyba) znaki zamiast normalnych (krótko mówiąc trzeba obsłużyć osobno GCS_HELPTEXTA i GCS_HELPTEXTW). 1.01a (internal #12): - poprawiono współpracę z wersjami ANSI Windows (98/Me) 1.02 (internal #13): - wprowadzono do programu wersję 3.02 BCMenu (niestety, nie będzie w tej chwili cieniowania bitmap w menu, bo jest ich trochę za mało, a po drugie itemy menu robią się trochę za wysokie (próbowałem to zmodyfikować, ale zmniejszając wysokość itemu psuje się efekt cieniowania). - BUG: przenoszenie plików(nie folderów) w obrębie jednej partycji (MoveFile) powoduje wyświetlanie po zakończeniu 0% postępu, ponieważ wielkości plików nie są doliczane do ogólej puli wykonanych już zadań. (np.: 2/2 (0 B/59.00 MB)) (ok - jeśli zwykłe przenoszenie - zerowanie zawartości pliku (tylko jako dane, nie rzeczywiście). - FEATURE: dołożyć do programu kopiowanie z flagą FILE_FLAG_NOBUFFERING: - przerobić CDataBuffer tak, aby dla danej wielkości alokacji alokowało bufor o wielkości będącej najbliższą (w górę) wielokrotnością 64kB. Napisać makro, która zwraca najbliższą wartość zaokrągloną w górę do najbliższych 64kB. (ok) - w CustomCopyFile dołożyć seek na 4096 boundary, a na końcu obcinanie nadwyżki (zaokrąglanie do 4096 (największa dozwolona wielkość sektora)) (ok) - opcje dostosowania - czy i dla jakich plików nie buforować (ok) - FEATURE: w menu głównym programu wrzucić item oznaczony jako 'monitoruj schowek' z check boxem - OPTIMIZATION: w CConfig każda funkcja Get... stosuje sekcję krytyczna w celu zabezpieczenia danych. Nie jest to potrzebne (wręcz zbędne), gdyż może lekko przyblokowywać kopiowanie (gdy np. okno statusu próbuje użyskać dostęp do jednej zmiennej - wątek kopiujący (jeśli nie był pierwszy) zostanie na małą chwilkę zblokowany. Zostawić sekcje krytyczne w funkcjach Set... oraz w funkcjach Get..., które zwracają CString'a. - APPEARANCE: poprawić tab order w niektórych oknach 1.03 (Internal #14): - BUG: tekst w CStaticFilespec w trybie czeni wysokokontrastowej jest niewidzialny (czarny) - poprawić - IMPROVEMENT: poprawić obsługę FILE_FLAG_NO_BUFFERING tak, aby nie był tworzony plik docelowy o wielkości większej od źródłowego, a dopiero w późniejszej fazie obcinany, ale tak aby resztka pliku źródłowego, która nie zajmuje całego sektora (czy klastra,...) była dokopiowywana osobno. - FEATURE: w głównym menu dołożyć wyłączanie komputera po zakończeniu kopiowania - BUG: jeśli jakieś pliki zostaną skopiowane do miejsca docelowego tak, że po przerwaniu w połowie pozostanie na dysku docelowym mniej miejsca niż wynosi CAŁOŚĆ kopiowanych plików powoduje, że pokazywany jest dialog braku miejsca na dysku, a nie powinien - poprawić - APPEARANCE: okna wizualnych potwierdzeń są do bani - przeprojektować (teraz dalej wyglądają do bani, ale są nieco lepsze niż poprzednie) - BUG: poprawić chzanienie się opcji ograniczania max ilości operacji - w niektórych przypadkach pomimo, że wątek kopiujący działa nie jest zwiększana ilość aktualnie przeprowadzanych operacji. Zatem przerwanie działania wątku w tym miejscu i wygenerowanie wyjątku powoduje zmniejszenie ilości operacji o 1 (czyli do wartości ponad 4 mld - (unsigned long)(-1)) - STRANGE BUG: kopiowanie jakiegoś folderu (np. c:\windows) do innego katalogu, w którym istnieje już katalog o nazwie takiej jak kopiowana powoduje wygenerowanie błędu, że katalog już istnieje (a powinno po prostu pominąć błąd i kontunuować kopiowanie) - nie zawsze - teoretycznie zabezpieczona jest powyższa sytuacja (kiedy próbujemy utworzyć istniejący już folder, po prostu pomijamy tworzenie)(???) (#183 - prawdopodobnie odnosi się tylko do folderów kopiowanych w obrębie jednej partycji tak, że jest używane MoveFile zamiast CustomCopyFile). (Nawet na pewno. Przenoszenie za pomocą MoveFile jest wadliwe, zaś MoveFileEx nie istnieje na zwykłych Windowsach) - poprawiono poprzez sprawdzenie w fazie wyszukiwania plików, czy istnieje plik/folder docelowy - jeśli tak, to blokuje się działanie MoveFile i zamiast niego wywoływana jest standardowa obsługa - CustomCopyFile i Delete). - BUG: przy włączonym czarno-białym schemacie kolorów z wysokim kontrastem w miniview nie pokazują się napisy określające nazwy plików. - BUG: poprawić wyświetlanie buttonów w miniview - jeśli włączony jest jakiś duży schemat ekranu przyciski wystają poza okno - są niewidoczne, poprawić też ich rysowanie. - BUG: przy ustawieniu większego rozmiaru czcionki we właściwościach ekranu (tzn. np 200% normy, to tekst w opcjach i w miniview jest obcięty, zmienić kod rysujący captiona dla miniview tak aby używał czcionki przeznaczonej do rysowania captiona (a nie czcionki dialogu). Dodatkowo w opcjach otwarcie combobox'a powoduje pokazanie trochę dziwnego widoku jego zawartości. - BUG: poprawiono złe wykazywanie procentów (a kto wie co jeszcze w związku z tym) wprowadzone w poprzedniej wersji razem z FFNB (drugie przejście kopiowania pliku nie odczytywało ponownie wielkości pliku docelowego i w związku z tym były kredki). - APPEARANCE: kolejne poprawki tab orderu 1.1 (Internal #15) - BUG: poprawiono współpracę programu z WinXP/NT/2000 - podczas odczytu resztki danych z pliku, który nie był wielokrotnością czegoś program wykazywał błąd 'Nieprawidłowy parametr'. Powód - odczyt wskaźnika pliku dla pliku otwartego z flagą FFNB za pomocą SetFilePointer (tak jak to opisano w MSDNie) jest nierealny. - APPEARANCE: header w listview w CStatusDlg nie jest rozmieszczany równomiernie, jeśli zwiększy się np. wielkość czcionki (na 200 %) - część miejsca jest nieużywana. - UNIQUE: dorzucić w kodzie programu informację o autorze (niezbyt łatwą do zdekodowania), która będzie jednoznacznie identyfikować. - BUG: pod WinXP program dziwnie zwalnia, a kopiuje z taką prędkością, że aż strach (dla kopiowania w obrębie jednego dysku fizycznego) (już nie), jeśli używa się wyłączonego buforowania dla dużych plików, to efekt zwalniania nie ma już miejsca. (Ale pauza, ... dalej chodzi dziwnie) - BUG: ustawianie folderu tymczasowego - brak odpowiedniego dołączenia '\\' na końcu jeśli nie ma - FEATURE: w IDD_CUSTOM_COPY_DIALOG zmienić atrybut listbox'a na multiselect, oraz przerobić usuwanie (może coś jeszcze) - VISUAL APPEARANCE: zmienić wielkości buforów w menu wyboru - status dialog - dołożyć 8MB i jeszcze coś (512k) - FEATURE: zrobić coś w związku z kopiowaniem dysk-dysk; dysk-inny dysk, dysk lokalny-sieć, ... tzw.autodetect buffer size (co ?) - wykrywać typ kopiowania i odpowiednio ustawiać bufor (wg DODATKOWYCH OPCJI określających wielkość bufora dla kopiownia CD-dysk, siec-dysk, ...) - zreorganizować konfigurację - wyrzucić bufor z Wątku kopiującego (ok) - dołożyć dodatkowe opcje w konfiguracji - buffer size for: (OK) - kopiowanie w obrębie jednego dysku fizycznego - kopiowanie pomiędzy dwoma różnymi dyskami fizycznymi - kopiowanie CD->dysk (w drugą stronę też, ale normalnie się nie da) - kopiowanie sieć<->coś innego - inny domyślny bufor - zmienić sposób przechowywania ścieżki docelowej - klasa CDestPath, która będzie zawierać info o miejscu docelowym (numer dysku, typ ścieżki(dysku), ...) (ok) - zmienić nieco CClipboardEntry tak, aby przechowywały również info o dysku fizycznym, z którego pochodzi dana ścieżka, typ dysku (sieć, ...), tak, aby odwołania w CFileInfo połączonego z CClipboardEntry powodowały odwołanie właśnie do klasy CCE (jak np. ustalanie numeru dysku na którym znajduje się dany plik). (dodatkowo poprawa konstruktora kopiującego - pomija podczas kopiowania m_bMove) (ok) - zmodyfikować funkcję getdrivetypeex - ma ona ustalać rodzaj podanej ścieżki: (ok) - jeśli wykryto numer dysku (0...27?) wywołać GetDriveType (sieć, dysk, ...) - jeśli nie wykryto numeru dysku - za pomocą PathIsUNC sprawdzić, czy jest to sieć. Jeśli tak - wiadomo, jeśli nie - rodzaj ścieżki nieznany (bufor domyślny) - przenieść obsługę CDataBuffer z \MODULES do katalogu programu i zmienić - dołożyć kilka dodatkowych zmiennych - wielkość bufora (dla kopiowania dysk-dysk, dysk-cd, ...) (ok) - coś podobnego zrobić w CTask'u - kilka różnych wielkości buforów (+funkcje obsługujące), update Serialize, zmienić funkcję Set(Get)BufferSizes. (ok) - zmienić okno podawania wielkości bufora tak, aby zawierało kilka wielkości bufora, razem z możliwością podawania wielkości w kB i MB. (ok) - zmienić sposób wyświetlania wielkości bufora w CustomCopyDlg - zamiast jednego edita walnąć tylko przycisk 'ustawienia bufora', lub oprócz przycisku w edicie umieścić wszystkie wielkości. Ustawienia bufora ma wywołać dialog wyboru bufora. (ok) - poprawić obsługę OnCopyData i OnPopupCustomCopy aby uwzględniały wielkość bufora ustawioną w powyższym dialogu. (ok) - zmienić obsługę wielkości bufora w CStatusDlg - zamiast menu ma być wyświetlany dialog wyboru wielkości bufora (właściwie sześciu) - wywalić menu z zasobów, obsługę z CStatusDlg (OnCommand) (ok) - FEATURE: w oknie wyboru wielkości buforów, jeśli wielkość bufora jest wielokrotnością 1024 lub 1024*1024, to pokazana wielkość powinna być w kB lub MB zamiast w B, dodatkowo należy zmodyfikować dialog tak, aby można było wskazać który edit ma być aktywny (ważne w konfiguracji i w CStatusDlg) - FEATURE: zmodyfikować CStatusDlg tak, aby przesyłało do CBufferSizeDlg dane o aktualnie używanym indexie bufora (aby ten mógł zaznaczyć go) - BUG: Win2000 ma problemy z ładowaniem ikon z 16.8M kolorów (pluje się o stos i nadpisywanie danych poza dozwolony obszar) - wina bibliotek WinNT5 lub struktury ikon (pod WinXP i Win98/Me problem nie występuje) - przerobiono ikony na 256 kolorów z indexowaniem (zwiększyły wielkość o ok. 100% - trudno) - BUG: podanie zbyt wysokiego bufora (64MB) nie generuje wyjątku a powoduje wygenerowanie błędu (GetLastError) dopiero podczas odczytu - za mało zasobów systemowych (#1450) - poprawiono błąd odtwarzania bufora, jeśli nowa wielkość jest za duża. - FEATURE: w głównym menu programu dołożyć opcje rejestracji/derejestracji dll'ki - BUG: jeśli pokazane jest okno miniview i włączymy normalny status - małe okno powinno zostać ukryte - zasłania część widoku. - FEATURE: w wyborze wielkości bufora powinna istnieć możliwość podawania wielkości w kB i MB (w konfiguracji oraz w oknie wyboru custom buffer size) - jeszcze tylko konfig. - FEATURE: w konfiguracji (właściwie wszędzie, gdzie jest potrzebne ustawianie ścieżki dostępu) ustawianie ścieżek powinno interpretować coś w stylu . Dodać funkcję ExpandPath, która zamieni coś na prawidłową ścieżkę: - - GetWindowsDirectory - - GetTempPath - - GetSystemDirectory - - CSIDL_APPDATA - - CSIDL_DESKTOPDIRECTORY - - CSIDL_PERSONAL - Funkcja, ze względu na szybkość działa na razie tylko dla folderu docelowego dla tymczasowych danych programu oraz dla nazw plików z dźwiękami (jedyne 3 ścieżki w konfiguracji) - Opcja jest traktowana jako zaawansowana, więc jest dostępna tylko poprzez edycję ręczną pliku .ini. - zamieniona w powyższy sposób ścieżka nie zawiera końcowego '\\', więc ścieżka podana za pomocą powyższych skrótów powinna mieć postać np. \media\chord.wav - BUG: wyłączanie programu trwa za długo pod NT, 2000, XP - coś z cs'ami - spróbować w pętlach wyłączających thready wrzucić nieznaczne opóźnienie (10-100 ms). - Zmieniono nieco obsługę monitorowania schowka i wyłączania systemu po zakończeniu koopiowań (co przyspieszyło wyłączanie wątku monitorującego, w każdym punkcie programu, gdzie następowała próba killnięcia taska w while'u dodano opóźnienie pomiędzy sprawdzaniami ok. 10ms - przyspieszyło to operacje pauzy, anulowania, ... oraz w znaczący sposób wyłączanie programu (w debugu z ok. 4s. na <1s.) - FEATURE: poprawić nieco estetykę log'a - na początku threada ma być dorzucone coś w stylu nowa linia/------------ przed wypisaniem rozpoczęcia - FEATURE FIX: aktualnie nie działa wyłączanie autodetekcji bufora - jeśli ta opcja jest wyłączona, to program powinien korzystać tylko z bufora domyślnego. - BUG: shutdown systemu nie działa pod serią NT - FEATURE FIX: jeśli zaznaczymy opcję automatycznego shutdownu po zakończeniu wszystkich zadań a żadne zadanie nie jest uruchomione, to następuje automatyczne zamknięcie systemu. Powinno poczekać, aż przynajmniej jedno z nich zostanie choć trochę skopiowane. - FEATURE: podczas zamykania systemu (z opcji automatycznego zamykania systemu po zakończeniu wszystkich zadań) powinien na jakiś czas pokazać się dialog z możliwością anulowania. - Dodatkowe opcje - czas pokazywania okna oraz wybór rodzaju (force/nie force) - VISUAL APPEARANCE: dodatkowe poprawki UI - BUG: problem z wygaszaniem editów w CBufferDlg - w konfiguracji pojawiają się zaciemnione edity, mimo iż nie powinny - skleroza - zapomniałem wpisać bOnlyDefault w COptionsDlg do nowo otwieranego CBufferDlg. - BUG: pod Win2000 nie działa poprawnie miniview - caption bar nie zmienia się po kliknięciu,..., wiąże się to z nieco odmiennym rysowaniem w 2000 i 9x - 2000 ma bardziaj zoptymalizowane wykorzystanie grafiki - FEATURE: jeśli chcemy forsować kontynuowanie zadania, pomimo, iż przez to będzie przekroczona max. ilość jednocześnie wykonywanych zadań to powinno być to możliwe. - zmienić nieco układ przycisków w CStatusDlg tak, aby dla ST_WAITING była możliwość pauzowania oraz wznowienia - FEATURE FIX: wywalić napis NOT IMPLEMENTED z konfiguracji - FEATURE FIX: zadania (przy ograniczeniu max ilości jednocześnie wykonywanych zadań) powinny załączać się w kolejności, w jakiej zostały wpisane do tablicy. (???) - dołożyć dodatkową flagę do CTaska zezwalającą na kontynuację z WaitState (force || ta flaga) (ok) - zmienić funkcję CanBegin tak, aby uwzględniała flagę force oraz nową flagę, zaś sprawdzanie czy ilość aktualnie wykonywanych zadańwznowienie) - poprawić - BUG: jeśli wystąpi sytuacja typu read-only - program powinien wyświetlić dodatkową informację o atrybucie read-only. (najlepiej przerobić kod CProcessingException tak, aby od razu formatowało stringa z opisem błędu - w związku z tym - zmiana formatu pliku .atp). - przerobić wszystkie throw new CPE oznaczające error na nowe - do angielskiego strtable dołożyć tłumaczone stringi z polskiego - w CStatusDlg przerobić wyświetlanie błędu do edit'a zamiast CStaticFilespec (z możliwością przewijania ...) - to jeszcze nie jest to, ale na razie nie mam pomysłu, więc musi zostać - BUG: poprawiono błąd związany z automatycznym wyłączeniem systemu po zakończeniu kopiowania, (oczywiście nie uwzględniłem oczywistego przypadku zakończenia zadania w sposób normalny, a jedynie poprzez naciśnięcie pauzy, ...). - BUG: jeśli miniview jest ukryty (ale włączony) i jest umiejscowiony w RB rogu, a zostanie zmieniona rozdzielczość, miniview po odkryciu pojawia sie na miejscu odpowiadającemu starej rozdzielczosci ekranu. Zmienić - przy odkrywaniu miniview ma on być automatycznie przesuwany do RB rogu. - FEATURE: trzeba w jakiś sposób dać użytkownikowi znać, jakie pliki są skojarzone z określonym zadaniem - OPTIMIZATION: miniview korzysta z funkcji GetSnapshot, z której korzysta również normalny status (tylko że on korzysta z wielu zmiennych, które nie są potrzebne w miniview). Zrobić GetMiniSnapshot() i strukturę TASK_MINI_DISPLAY_DATA. (Dzięki temu odpada każdorazowe (std 5xsekundę) przetwarzanie łańcuchów znaków (określenie słowne statusu), kopiowanie stringa z opisem błędu i ponad 10 innych zmiennych) (w Debugu przyspieszyło ok 15 razy z 750ms dla 10000 wywołań GetSnapshot() do 50ms dla 10000 wywołań GetMiniSnapshot()) - w sumie jest to i tak niezauważalne, ale zawsze powoduje mniejsze obciążenie pamięci dając innym programom większą przepustowość. - BUG: najprawdopodobniej nie jest zapisywany stan bufora. Po zakonczeniu i przeladowaniu access violation (getcurrentbufferindex korzysta z indexu cfileinfo spoza zakresu - należy w takim przypadku skorzystać z '0' zamiast ???) 1.10 Final (#16?) - BUG: poprawić detekcję partycji leżących na jednym dysku fizycznym - aktualnie partycje są wykrywane jako jeden dysk fizyczny tylko pod warunkiem, że mają tę samą literę dysku (musi istnieć) oraz oba są dyskami typu fixed - rozwiazanie troche dziwne - pod 9x i NT dziala na innej zasadzie, nie wiem, czy dziala w 100% przypadkow - nie wiem, czy obsluguje poprawnie SCSI, ... - u mnie dziala - NEW FEATURE: dodać instalatora i deinstalatora do programu. Instalacja ma pozwalać na rejestrowanie rozszerzeń shella, kopiowanie readme, programu (required), naprawianie instalacji (niestety nie), doinstalowywanie(niestety nie), zaś deinstalacja - kompletne lub częściowe odinstalowywanie. - VA: w aboutboxie dolozyc info o mailu - ok. - REMOVE CODE: wywalono kod odpowiadający za automatyczne rejestrowanie dll'ki - dzięki temu nie będzie zbędnych wpisów w rejestrze, a rejestracją zajmie się setup. - SMALL BUG: jeśli w opcjach ustawiona jest wartość 1 przy reloadzie after restart, to zostanie to uwzględnione dopiero po otwarciu i zamknięciu okna konfiguracji - poprawić (teraz przy odczytywaniu konfiguracji również będzie aplikowany stan). 1.11 (#20) - NF: dodano opcję pozwalającą wybrać rodzaj progressu w miniview (płynny/kostkowy) 1.12 (#21) beta 1 - FE: w oknie wyboru ścieżki docelowej (CFolderDlg) w listboxie quick access - podczas usuwania ma być zaznaczany kolejny item - FEATURE EXPAND: w oknie zaawansowaniego kopiowania w miejscu podawania filtra (np. *.jpg) zaznaczyć, że można używać większej ilości filtrów - np. *.jp*;*.bm*, oraz zastosować to w kodzie. Funkcja sprawdzająca czy plik zgadza się z maską jest zawarta gdzieś w źródłach Visuala. Rozszerzyć też możliwości filtrowania: np. wg daty, rozmiaru, atrybutów (może coś w stylu wyrażeń regularnych, czegoś w stylu linuxowego (0-9). (Wild.c)) - wg daty(?), rozmiaru (?), atrybutów (tri-state checks), maski (edit/combo) - nowa klasa CFileFilter służąca do sprawdzania, czy dany CFileInfo jest zgodny z zawartą maską, datą, ... (ok) - dodać do typu daty dodatkowe wpisy (<=, <, =, >, >=) zamiast (przed, po) (ok) - dopisać resztę kodu odpowiedzialną za wyświetlanie w lisctrl danych o filtrze - jeszcze data i atrybuty (ok) - VA: po l-clicku na ikonie trayowej programu powinno nastąpić pokazanie wszystkich pkazanych okien)-bringtofront - CODE: zmieniono nieco obsługę dialogów - teraz są bazowane na CLanguageDialog, więc można było pozbyć się paru linii zbędnego kodu - BUG: jeśli w czasie wyświetlania okna wyboru wielkości buforów zadanie się skończy - to po zamknięciu okna buforów program się wychrzania - po prostu sprawdzić, czy po zamknięciu okna buforów dalej jest zaznaczony dany item. - FE: w dialogu statusu przy przycisku usuń dodać informację o anulowaniu zadania, jeśli nie jest w stanie pozwalającym na normalne usunięcie - pamiętać, aby po zamknięciu dialogu sprawdzić, czy dany item jest dalej zaznaczony. 1.12 beta 2 (#22) - DATA: napisać od nowa (całkowicie) CListView wyświetlający drzewo katalogów, oraz od nowa dialog CFolderDlg - niezależne od głównego projektu - wywalić zbędne pliki: - ShellTree.h/cpp - QuickAccessDlg.h/cpp - FolderDlg.h/cpp - NewFolderDlg.h/cpp - coś się wywala podczas kreowania dialogu wyboru folderu docelowego- zbadać... - wina dwukrotnego wywołania InitControl w CDirTreeCtrl ?? - dołożyć opcje konfiguracyjne dla folder dialogu - to co w BROWSEDATASTRUCT + recent paths - dodatkowa sekcja w konfigu - [Shortcuts] - będzie używana w folder dialogu i w shell ext. - BUG: nie działa pod NTkiem ze względu na SHGetSpecialFolderPath - zamienić zgodnie ze wzkazówkami z codeguru (dodatkowo sprawdzić eksporty). 1.12 beta3 (#23): - BUG: poprawić mały drobiazg - obsługa dysków nieaktywnych (np. podmapowany dysk sieciowy ale nie podłączony) powoduje wyświetlenie po kilka razy komunikatu systemowego 'włóż plyte do napedu' albo 'nie znaleziono udziału sieciowego' - BUG: okno wyboru folderu docelowego nie wyświetla się na wierzchu. - ABOUT: dopisać greetings dla Venkata Sundaram za modeless dialogs that behave like modal ??, jednocześnie wywalić Seloma Ofori, ponieważ już nie korzystam z jego kodu. - BUG: poprawić obsługę themów - wywala się w cfolderdialog w wersji debug, więc w release zrobi jeszcze większe szkody - CORRECTION: poprawić współpracę z win95 (nie osr) poprzez eliminację GetDiskFreeSpaceEx - BUG: poprawić polski tekst na polski a nie pl-en - teraz wygląda dopiero głupio - OVERDATA: wywalic niepotrzebne texty z resource'ów - zaledwie kilka sztuk, ale zawsze 1.12 beta 4 (#24) - CHANGE: spróbować zmienić wpisy w structs.h - CConfig handling - zmienić na makra pobierające set parametrów i zawierające odpowiednie funkcje (udało się, ale aby standaryzacji stało się zadość należało zmianić opcję automatyczny wybór wielkości bufora na używaj tylko domyślnego bufora) - DEVELOPER NEED: połączyć oba projekty (dll i program w jeden workspace), dodatkowo dorzucić folder Common gdzie będą się znajdować współdzielone pliki (np def. struktur używanych do przesyłu danych między programem a dll'ką. 1.12 beta 5 (#25) - FEATURE EXPAND: dodatki w .dll - pobieranie danych z programu, wyświetlenie odpowiednio skonfigurowanych komend w explorers' context menus. - *komendy - drag&drop: - Kopiuj Copy Handlerem - Przenieś Copy handlerem - Kopiuj/Przenieś specjalnie Copy Handlerem - *komendy - explorers' context menus: - Wklej Copy Handlerem (folder&background) - Wklej specjalnie Copy Handlerem (folder&background) - Kopiuj do > (folder only&all files) - Przenieś do > (folder only&all files) - Kopiuj/przenieś specjalnie do > (folder only&all files) - *opcje: - po jednym checku dla każdej komendy - check - kaskadowe menu - dla obu menu na raz - check - czy pokazywać wolne miejsce przy nazwie skrótu - uint - max. liczba skrótów do umieszczenia w menu - *texty wypisywane w menu mają być pobierane za pośrednictwem WM_COPYDATA i innych message'y z aktualnie uruchomionej instancji programu - i tu zaczynają sie schodki - komunikacja exe->dll (złożona - dynamiczna wielkosc danych, gdyz inaczej trzeba by było zastosować bufory o kosmicznych wielkościach). - *w każdym z podmenu '... >' należy zawrzeć wszystkie (choć to może przesada) shortcuty pobrane z programu - *struktura COPYDATASTRUCT::dwData : - wartość określa ID komendy wybranej z menu - paste/paste special/kopiuj do/przenieś do/kopiuj-przenieś do specjanie - określone podczas przekazywania danych z programu do dll'ki; dodatkowo w przypadku paste i paste special najstarszy bit będzie zawierał info o rodzaju wklejania - kopiowanie czy przenoszenie - tak jak dotychczas. - *przenieść sprawdzanie wolnego miejsca w inne miejsce (once per initialize ?). - *zmienić measureItem tak aby uwzględniało szerokość textu - skorzystać z czcionki parenta - jeśli się da - jeśli nie - trzeba kombinować jak obliczyć szerokość textu. (NONCLIENTMETRICS) - *wywalić wszystkie niepotrzebne texty z resource'ów dllki, jak również dołączanie obsługi języków - BUG: wyświetlanie komend w explorer.ctx.menu jest dziwne - czasem wszystko znika - efekt pamięciowy - właściwie moje niedopatrzenie - trzeba wyzerować m_bGroupFiles. - CORRECTION: doprowadzić do porządku przesył danych program->DLL (pobieranie danych z konfiga a nie tylko stałych/wymyślonych). - *dorzucić dodatkowe texty do string table - nazwy komend - CODE: wywalić z dllki otf'y - są w sumie całkowicie niepotrzebne (teraz) - FEATURE: dll'ka, a właściwie drag'n'drop handler (składowa dllki) może przechwytywać domyślną operację z menu (oznacza to jednocześnie możliwość przechwycenia przeciągania l-buttonem !!!) ale jest to sztuczka, o której pisze iż 'nie wolno' - wprowadzić dodatkową flagę w konfigu określającą przechwytywanie kopiowania - przyciski ctrl, alt i shift będą określać domyślny rodzaj operacji (odpowiednio kopiowanie, kopiowanie/przenoszenie specjalne, przenoszenie), jako zamiennik alta można zastosować ctrl+shift - jedyny problem stanowi standardowa obsługa (tzn. bez naciśnietego żadnego przycisku z klawiatury), nie chodzi tu o problem z implementacją, ale o wykrycie domyślnej akcji jaką przyjmuje explorer - czasem jest to kopiowanie, czasem przenoszenie, a czasem tworzenie skrótu; aktualnie bez względu na to co wyświetli explorer, jeśli nie naciśniemy żadnego buttona na klawiaturze domyślną akcją będzie kopiowanie - CHANGE: zmienić numerację wersji dla programu i dllki - (major.minor.release.build) - CHANGE: przenieść recent paths do osobnej sekcji - będą się odnosić nie tylko do folder dialogu, ale tez do dialogów typu podaj parametry kopiowania/przenoszenia. 1.12 beta 6 (release #26) - OPTION: dodatkowa flaga w FileDialogu - czy pokazywać dodatkowe okna shellowe - *dodatkowa opcja konfiguracji - ignoreshelldialogs - *dodatkowa flaga w BROWSESTRUCT - *zaaplikować flagę w momencie wywołania okna - *zaaplikować flagę do tree ctrl'a - *zaaplikować przeniesienie flagi z dialogu do kontrolki 1.12 beta 7 (release #27), (dll release #10) - BUGS: sprawdzić działanie ::InsertMenuItem - jak zachowuje się w w95 - występuje błąd podczas dodawania itemów do głównego explorerowego menu - sprawdzić co zwraca GetLastError po wywołaniu tej funkcji, może da się temu zaradzić - w sumie głupio, żeby w explorer ctx menu nie pojawaiły się żadne itemy, pomimo, że w d&d się pojawiają - poprawiono poprzez zmianę na InsertMenu. Dzięki temu najprawdopodobniej po W95 zaczną się wreszcie pokazywać itemy w expl.ctx.menu - poprzednio też było to zrealizowane na nie do końca działających funkcjach, więc może wreszcie zadziała. - BUG INFO: przechwytywanie przeciągania lewym przyciskiem działa tylko na wybranych systemach - nie działa na w98, w95, zaś działa na pewno na w2000. Podobnie sprawa ma się z ikonami przy skrótach - rysowanie działa w w2000, nie działa w NT4, W95, zaś na W98 dziąła połowicznie - działa dla wszystkich obiektów za wyjątkiem skrótów, dla których nie występuje rysowanie. 1.12 Final (release #28) - ADDITION: w oknie CFolderDialog dodać obsługę buttona delete jako kasowania skrótu - CHANGE: zmienić obsługę ścieżki docelowej w dialogu 'podaj parametry kopiowania/przenoszenia' - combobox zamiast edita, z którego można wybrać jedną z poprzednio zatwierdzonych ścieżek. - FEATURE: dbl click w miniview ma rozwijać duży status - STD CHANGE: zmienić początkową ścieżkę dostępu do plików tymczasowych z c:\ na \ co spowoduje zapis danych w c:\windows\temp (zakładając ANSI Windows version i instalację w standardowym katalogu) - FEATURE EXCHANGE: zmienić obsługę dialogu konfiguracji - najlepiej full dynamika - sterowanie wszystkim za pomocą ustandaryzowanych makr tak, aby dodawanie kolejnych opcji konfiguracyjnych wymagało pojedynczych linii kodu zamiast kilkunastu/kilkudzisięciu w których mogą pojawić się setki błędów (dodatkowo nie będzie trzeba powiększać resource'ów programu znów o kolejne kilogramy związane z dialog template'ami) - na razie zastępcze rozwiązanie - rozbudowa aktualnie wykorzystywanej konfiguracji - dodać obsługę skrótów i recent paths w oknie opcji - dodatkowe dialogi do obsługi tego i wykorzystać opcję callbacka wyświetlającego dialogi do edycji 1.13 (release #29) (dll release #11) - CHANGE: zmienić sposób zapisywania danych tymczasowych - pliki zakończone, których stan został już zapisany nie muszą być zapisywane (tak samo spauzowane i cancelled). Dodatkowo przy zmianie priorytetu i buf sizes wyłączonego zadania należy włączyć jednokrotny zapis. - BUG: poprawiono bug związany z wyświetlaniem komend w menu 'Plik' explorera - wiązał się z poprawkami wprowadzonymi w celu poprawy współpracy ze starszymi wersjami Windows (prawdopodobnie wiąże się to z niemożnością wprowadzenia ID dla itemu menu, który zawiera submenu). 1.13b (release #30) (dll release #12) - BUG: poprawic angielski tekst menu kontekstowych - brak 'special'... - BUG: eksperymentalna opcja przechwytywania l-mouse drag&drop powoduje przechwytywanie rónież ctrl+c/v. Niestety działanie jest zawsze takie samo (kopiowanie) bez względu na to, czy naciśnięto ctrl+c czy ctrl+x - poprawić - BUG: w dialogu statusu submenu z wartościami priorytetu jest wyświetlane po angielsku (czyżby pomyłka PL<->EN ?) 1.13c (release #31) (dll release #13) - ADDITION: dodać możliwość importowania ścieżek z plików tekstowych - opcja importuj w dialogu custom copy dlg 1.13d (release #32) (dll release #14) - ADD: wykrywanie restartu explorera i autoumieszczanie nowej ikony w trayu (jeśli zniknie) 1.13e (release #33) (dll release #15) - ADD: dodatkowa opcja do wyboru domyślnej akcji podczas przeciągania lewym buttonem mychy (aktualnie tylko kopiuj) albo prawdziwe wykrywanie operacji pod kursorem - ADD: opcja forsownego tworzenia katalogów - względem roota dysku źródłowego 1.13f (release #34) (dll release #16) - CHG: zmienić rok w about-boxie na 2003 i wpis autorski z JFS na Ixen Gerthannes - BUG: funkcja Kopiuj do (i pochodne) nie działa - poprawić - ADD: regulacja priorytetu aplikacji - setpriorityclass - CHANGE: zmienić nieco obsługę threada z zadaniem - żadnej dynamicznej zmiany priorytetu przez windę - setthreadpriorityboost - BUG!!!: program wychrzania się jeśli data+czas pliku mieści się poza zakresem 1970...2038 - BUG: przy obliczaniu wolnego miejsca występuje błąd off by 1B. 1.13g (release #35) (dll release #16) - MOD: okna definiowania skrótów i ścieżek docelowych - po pierwsze - powinno dać się definiować kolejność w jakiej pojawiają się w menu kontekstowym - MOD: jeśli po kompresji programu UPX'em działa pod XP'kiem manifest - skompresować exe'ka i dll'ke. 1.13h (release #36) (dll release #16) - BUG: błędne wykrywanie identyczności dysku pod RAIDem... - zbyt mały bufor na urządzenia - zwiększyć - MOD: lekkie zmiany textu - np. w angielskim one disk zamiast OD - BUG: w dialogu wyboru foldera docelowego niepoprawnie jest wykrywana obecność stacji/ścieżki dostępu do dyskietki. 1.13i (release #37) (dll release #16) - MOD: poprawiono niektóre okna dialogowe tak, aby wyświetlały się w taskbarze - BUG: w oknie wyboru folderu docelowego podczas wpisywania ręcznego ścieżki dostępu w comboboxex ilość wprowadzonego textu zależy od wielkości okna - poprawić. - NEW: added french language resources thanx to Julien xxx ? - MOD: change string table entries to be sorted in sections Sections: - INTERNAL PLUGIN ENTRIES (5000) 0...4999 - MAIN STRINGS - UNIVERSAL (1000) 5000...5999 - FREE MSG BOX SECTION (1000) 6000...6999 - LOG ENTRIES (1000) 7000...7999 - CONFIG NAMES/DESCRIPTIONS (1000) 8000...8999 - SHELL EXTENSION SECTION (1000) 9000...9999 - RESERVED (3000) 10000...12999 - DIALOG SECTION (500/dialog) 13000...??? // DIALOG - Browse for folder dialog 13000...13499 // DIALOG - Folder Dialog (wo resource template) 13500...13999 // DIALOG - AboutBox dialog 14000-14499 // DIALOG - Buffer size dialog 14500-14999 // DIALOG - Custom copy dialog 15000-15499 // DIALOG - IDD_FEEDBACK_DSTFILE_DIALOG 15500-15999 // DIALOG - IDD_FEEDBACK_IGNOREWAITRETRY_DIALOG 16000-16499 // DIALOG - IDD_FEEDBACK_NOTENOUGHPLACE_DIALOG 16500-16999 // DIALOG - IDD_FEEDBACK_REPLACE_FILES_DIALOG 17000-17499 // DIALOG - IDD_FEEDBACK_SMALL_REPLACE_FILES_DIALOG 17500-17999 // DIALOG - Filter Dialog (IDD_FILTER_DIALOG) 18000-18499 // DIALOG - MiniView 18500-18999 // DIALOG - Options dialog 19000-19499 // DIALOG - Recent paths editing (IDD_RECENTEDIT_DIALOG) 19500-19999 // DIALOG - Replace Paths dialog 20000-20499 // DIALOG - Shortcut edit dialog (IDD_SHORTCUTEDIT_DIALOG) 20500-20999 // DIALOG - Shutdown dialog (IDD_SHUTDOWN_DIALOG) 21000-21499 // DIALOG - Status dialog 21500-21999 1.20 (release #38) (dll release #17) - ADD: Integrate v2 modules into v1: * integrate config manager, res manager, log file, ... * corrent some strings in string table - unneeded \r\n and incorrect formatting * saving configuration in places where it should be saved - ADD/MOD: introduce plugin-system - ie. with external languages handling - PROJECT: copy the language dll into the right place in release builds - OPT: optimized tray restart detection - MOD: modify the about dialog to display version based on VERSION resource instad of static data entered manually. - PROJECT: change the program for building count-automodify of resources - PROJECT: reorganize pleacement of readme's, todo's and other common files - PROJECT: add a header for each file used in program - gnu gpl - MOD: modify the about dialog to make it smaller (but to display more information). - MOD: replace CStaticFilespec and CHyperlinkStatic to a new combined w32 component - MOD: modify GetSizeSTring to get the kB strings from resources and not from code - MOD: modify the CLanguageDialog - when dynamically changing language it calculates width and height of a window&font bad way. - MOD: correct the configuration work (+apply button) - MOD: correct all dialogs to properly refresh after language has been changed. - MOD: change all the comments to the english - BUG: removed nasty gdi leak in staticex - MOD: FRENCH - ABOUTBOX MODIFICATIONS, ADDITIONAL STRINGS INSERTED AT 5014 (GB, TB, PB) - MOD: modify clanguagedialog or miniview to properly count the height of a new dialogs - MOD: returning error code when (un)registering dll - OPT: change RegisterShellExtDll and unregister funcs into one with a param. - MOD: when there's no clipboard monitoring enabled the clipboard shouldn't be cleared from within dll - BUG: there was a bug when using error Log functions - CHANGE: zmienić installera/uninstallera na coś 'bardziej' ? Albo poprawić usuwanie dll'ki... - BUG: when icon has been dbl-clicked more than once then status dialog appear more than once!!! 1.25 (release #39) (dll release #17) - BUG: corrected missing tooltip for page sponsor - BUG: changed size of static texts components in status dialog - some letters were not visible. - ADD: options dialog - option for html help file dir - BUG: when in help mode (arrow with an '?') the hyperlinks in aboutbox are being activated on clicking. - OPT: add DisableThreadLibraryCalls to the dlls (look at func description). - TEXT: - ADDED: Main Menu->Help (command in menu to translate) - ADDED: IDS_CFGHELPDIR_STRING, IDS_CFGHELPDIRCHOOSE_STRING, IDS_HELPERR_STRING - ADDED: in Dialogs - Help buttons (IDC_HELP_BUTTON) - STYLES: added many styles Help ID for controls with the help (and context help for dialogs) - BUG: the entry in registry (run with system) does not have the '\\' before the program name. - ADD: add the help files to the project * when the help file is opened and the language changes - help file should be closed * help is invoked for the progress bars in the status dialog - it shouldn't - STRINGS: IDS_ABOUTVERSION_STRING, - BUG: in folder dialog the shortcuts added to the list are not being saved 1.26 (release #40) (dll release #18) - MOD: add the new style to the static ex control - "use multiline", enable only if needed (about dlg) - MOD: changed the style of the staticex control in the aboutbox (license note) (0x50000010 to 0x50000090) - BUG: ctrl+drag causes bad explorer option to be selected. - BUG: ctrl+V causes file to be copied even if there was ctrl+x before it (ctrl and drag problem) - BUG: error updating header in task list (status dialog) - MOD: languages has to be isolated to text-based files * add config option - languages directory (added IDS_LANGUAGESFOLDER_STRING, IDS_LANGSFOLDERCHOOSE_STRING) * mod config option - current language - has to be file(string)-based * current language distinguishing by language file name * interpreting path of type for language directory * remove all references to a resource plugin * modify the CIniFile to handle properly '#' signs (partial - read only support) * interpretation on escape sequences * modification of CLanguageDialog * change loading the thanx text from resources (remove the IDS_ABTNOTHANX_STRING/14000 string - unused) * help handling (name got from lng file) * status dialog - resize controls to give the maximum size needed * translation of \r, \n and \t - BUG: selecting folder for use in options dialog doesn't append the '\\' to the path - BUG: Drawing text in property listbox causes & to be trated as underline - TEXT: change "" to " in string table in all languages - BUG: thanks text is not being translated (\r\n\t) - ADD: when not enough room dialog appears and in some moment there is enough place the dialog should disappear with continue effect - MOD: status dialog modification not worth mentioning - TEXT: button id 1122 - erased text - BUG: when no language is available - program displays info and then crashes - MOD: change the names of the program and the of files to the 8.3 standard (changed strings 6001-6004) - MOD: when selecting the new language - make it relative to a program dir (if possible) - PROJECT: change the names of the build counter files to something shorter - MOD: make help managing a bit simpler - STRINGS: 14002, 14003 added, modified the external text-based string - MOD: do sth with the translations/thanx stuff - MOD: modify the documentation (history, options, mainmenu, thanx, [a]faq, keyword faq, added faq to index) 1.27 (release #41) - MOD: isolated the internal stuff of CWinApp to CAppHelper - MOD: make the CLanguageDialog separate module for use in other applications * remove replacing STATICEX with value 0x0086 * replace MESSAGE MAP with WindowProc handling - make the STATICEX change the value when needed - MOD: many changes to exception modules C...Exception(Ex), macros support, ... - MOD: added serialization support for CFileEx (with crc checking) - not used in program - BUG: problem with copying folders with a dot as a first char of name - MOD: changed stl to the stlPort from http://www.stlport.com