• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Noch ein kleines Fehlerchen...

Engywuck

Geowizard
So zwischendrin bei meinen Testaktionen mit der Positionierung in der Liste aufgefallen:
Man markiere einige Caches und lasse sie über "Markierte ausfiltern" verschwinden. So weit so gut.
Wenn man jetzt einen Cache auf die Blackliste setzt, so erscheinen die zuvor ausgefilterten Caches wieder am Schluß der Liste.

Wenn das Wetter nicht so schön wird, werd ich mich mal drum kümmern...

Grüße,
Engywuck
 

maierkurt

Geowizard
Diesen Fehler kann ich auch nachstellen.

Das Problem liegt hier:
1) Caches werden ausgefiltert
2) Ein Cache wird auf Black gesetzt
Jetzt kommt MainTab.java ins Spiel:
Ab Zeile 194:
Code:
if (detP.hasBlackStatusChanged()) {
				// Restore the filter status (this automatically sets the status for blacklisted caches)
		======>		Global.getProfile().restoreFilter( true );
				tbP.refreshTable();

Ok, schauen wir uns Profile.java an:
Code:
void restoreFilter(boolean clearIfInactive) {
		boolean inverted=filterInverted; // Save it as doFilter will clear filterInverted
		Filter flt=new Filter();
		if (filterActive==Filter.FILTER_ACTIVE) {
			flt.setFilter();
			flt.doFilter();
			if (inverted) {
				flt.invertFilter();
				filterInverted=true; // Needed because previous line inverts filterInverted
			}
		} else if (filterActive==Filter.FILTER_CACHELIST) {
			Global.mainForm.cacheList.applyCacheList();
			//flt.filterActive=filterActive;
		} else if (filterActive==Filter.FILTER_INACTIVE) {
			if (clearIfInactive) {
=======>				flt.clearFilter();
			}
		}
	}
flt.clearFilter() wird aufgerufen, da clearIfInactive == true (es ist ja noch kein Filter aktiv)

In Filter.java werden dann in public void clearFilter() alle is_filtered auf false gesetzt, außer Caches mit Status Black.

Ich hoffe ich konnte es halbwegs verständlich ausdrücken.

Gruß, maierkurt
 

MiK

Geoguru
Das wurde doch gerade erst so geändert, um ein anderes Problem zu lösen...

Edit: Der Fehler ist also, dass der Filter nicht auf aktiv gesetzt wird.
 

MiK

Geoguru
Mein erster Ansatz war, den Filterstatus auf aktiv zu setzen, wenn nur markierte ausgefiltert werden. Das führte aber nicht zum Ziel. Aber von diesem Versuch ist übrig geblieben, dass jetzt auch dieser Zustand in der Statusbar angezeigt wird und der Filter direkt deaktiviert werden kann.

Ich habe jetzt für den Refresh nach einer Blacklist-Änderung eine eigene Methode checkBlacklistStatus() geschrieben, die anstatt restoreFilter() aufgerufen wird. Diese blendet zusätzlich alle Wegpunkte aus, deren Blacklist-Status nicht stimmt. Was vorher schon ausgefiltert war, bleibt ausgefiltert. Bisher sieht es sehr gut aus. Schaut es Euch mal an:
 

Anhänge

  • BlacklistVsFilter.zip
    1,2 KB · Aufrufe: 3
Oben