diff --git a/app/src/main/java/de/kuschku/libquassel/client/Client.java b/app/src/main/java/de/kuschku/libquassel/client/Client.java index 93f24399da41836cd195c5e119740333953337f2..fa1bb4613151a07e9372cd0269df9de959ca89ac 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/Client.java +++ b/app/src/main/java/de/kuschku/libquassel/client/Client.java @@ -34,6 +34,7 @@ import java.util.Map; import de.kuschku.libquassel.BusProvider; import de.kuschku.libquassel.events.ConnectionChangeEvent; import de.kuschku.libquassel.events.CriticalErrorEvent; +import de.kuschku.libquassel.events.InitEvent; import de.kuschku.libquassel.events.LagChangedEvent; import de.kuschku.libquassel.events.PasswordChangeEvent; import de.kuschku.libquassel.events.StatusMessageEvent; @@ -84,6 +85,7 @@ public class Client extends AClient { private final QBacklogManager<? extends QBacklogManager> backlogManager; private final Map<String, List<SyncFunction>> bufferedSyncs = new HashMap<>(); private final Map<Integer, Pair<QBufferViewConfig, Integer>> bufferedBuffers = new HashMap<>(); + private int initRequestMax = 0; private QBufferViewManager bufferViewManager; // local private QBufferSyncer bufferSyncer; @@ -336,8 +338,10 @@ public class Client extends AClient { public void requestInitObject(@NonNull String className, String objectName) { assertNotNull(provider); - if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) + if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) { initRequests.add(hashName(className, objectName)); + initRequestMax++; + } provider.dispatch(new InitRequestFunction(className, objectName)); } @@ -347,6 +351,7 @@ public class Client extends AClient { if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) { initRequests.remove(hashName(className, objectName)); + provider.sendEvent(new InitEvent(initRequestMax - initRequests.size(), initRequestMax)); if (initRequests.isEmpty()) { setConnectionStatus(ConnectionChangeEvent.Status.LOADING_BACKLOG); } diff --git a/app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java b/app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java index f0f17a9dc8b62f18b1d83f68a80e31b7ebef1f72..5696d9be4eeffd6be42ba81b90f4fb8869b1ab8d 100644 --- a/app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java +++ b/app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java @@ -25,15 +25,15 @@ import java.util.Locale; public class BacklogInitEvent { public final int loaded; - public final int waitingMax; + public final int max; - public BacklogInitEvent(int loaded, int waitingMax) { + public BacklogInitEvent(int loaded, int max) { this.loaded = loaded; - this.waitingMax = waitingMax; + this.max = max; } @Override public String toString() { - return String.format(Locale.US, "LOADING_BACKLOG: %d/%d", loaded, waitingMax); + return String.format(Locale.US, "LOADING_BACKLOG: %d/%d", loaded, max); } } diff --git a/app/src/main/java/de/kuschku/libquassel/events/InitEvent.java b/app/src/main/java/de/kuschku/libquassel/events/InitEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..8d23679716817d6d269f7b29f1a5ad3dd7b4f369 --- /dev/null +++ b/app/src/main/java/de/kuschku/libquassel/events/InitEvent.java @@ -0,0 +1,39 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package de.kuschku.libquassel.events; + +import java.util.Locale; + +public class InitEvent { + public final int loaded; + public final int max; + + public InitEvent(int loaded, int max) { + this.loaded = loaded; + this.max = max; + } + + @Override + public String toString() { + return String.format(Locale.US, "INITIALIZING_DATA: %d/%d", loaded, max); + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java index d2a9e28a37ce938b041cd1896c8c7c4faa338f3b..9a5a1e24e72912eaf685bf98c4b0da0c48d24e30 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java @@ -32,7 +32,6 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; import android.support.design.widget.Snackbar; -import android.support.v4.view.GravityCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.ActionMenuView; @@ -42,7 +41,6 @@ import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; -import android.text.SpannableString; import android.util.Log; import android.view.Gravity; import android.view.Menu; @@ -81,13 +79,13 @@ import de.kuschku.libquassel.events.BacklogInitEvent; import de.kuschku.libquassel.events.BacklogReceivedEvent; import de.kuschku.libquassel.events.ConnectionChangeEvent; import de.kuschku.libquassel.events.GeneralErrorEvent; +import de.kuschku.libquassel.events.InitEvent; import de.kuschku.libquassel.events.LagChangedEvent; import de.kuschku.libquassel.events.LoginRequireEvent; import de.kuschku.libquassel.events.UnknownCertificateEvent; import de.kuschku.libquassel.localtypes.BacklogFilter; import de.kuschku.libquassel.localtypes.buffers.Buffer; import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer; -import de.kuschku.libquassel.localtypes.buffers.QueryBuffer; import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig; import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager; @@ -111,7 +109,6 @@ import de.kuschku.util.instancestateutil.Storable; import de.kuschku.util.instancestateutil.Store; import de.kuschku.util.observables.AutoScroller; import de.kuschku.util.observables.lists.ObservableSortedList; -import de.kuschku.util.ui.MessageUtil; import static de.kuschku.util.AndroidAssert.assertNotNull; @@ -191,6 +188,24 @@ public class ChatActivity extends AppCompatActivity { } }; + private static void updateNoColor(Buffer buffer, @NonNull Menu menu) { + boolean isNoColor = isNoColor(buffer); + menu.findItem(R.id.format_bold).setEnabled(!isNoColor); + menu.findItem(R.id.format_italic).setEnabled(!isNoColor); + menu.findItem(R.id.format_underline).setEnabled(!isNoColor); + menu.findItem(R.id.format_paint).setEnabled(!isNoColor); + menu.findItem(R.id.format_fill).setEnabled(!isNoColor); + } + + public static boolean isNoColor(Buffer buffer) { + if (buffer == null) + return false; + if (!(buffer instanceof ChannelBuffer)) + return false; + QIrcChannel channel = ((ChannelBuffer) buffer).getChannel(); + return channel != null && channel.hasMode('c'); + } + private void updateSubTitle() { if (context.client() != null) { if (context.client().connectionStatus() == ConnectionChangeEvent.Status.CONNECTED) { @@ -212,24 +227,6 @@ public class ChatActivity extends AppCompatActivity { updateSubTitle(""); } - private static void updateNoColor(Buffer buffer, @NonNull Menu menu) { - boolean isNoColor = isNoColor(buffer); - menu.findItem(R.id.format_bold).setEnabled(!isNoColor); - menu.findItem(R.id.format_italic).setEnabled(!isNoColor); - menu.findItem(R.id.format_underline).setEnabled(!isNoColor); - menu.findItem(R.id.format_paint).setEnabled(!isNoColor); - menu.findItem(R.id.format_fill).setEnabled(!isNoColor); - } - - public static boolean isNoColor(Buffer buffer) { - if (buffer == null) - return false; - if (!(buffer instanceof ChannelBuffer)) - return false; - QIrcChannel channel = ((ChannelBuffer) buffer).getChannel(); - return channel != null && channel.hasMode('c'); - } - @Override protected void onCreate(@Nullable Bundle savedInstanceState) { setupContext(); @@ -690,6 +687,10 @@ public class ChatActivity extends AppCompatActivity { updateSubTitle(event.toString()); } + public void onEventMainThread(@NonNull InitEvent event) { + updateSubTitle(event.toString()); + } + private void updateBufferViewConfigs() { assertNotNull(context.client().bufferViewManager()); List<QBufferViewConfig> bufferViews = context.client().bufferViewManager().bufferViewConfigs();