Skip to content
Snippets Groups Projects
Commit 8bdca321 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Fixed bugs and issues, implemented first working version

parent df979c04
Branches
Tags
No related merge requests found
......@@ -163,7 +163,7 @@ public class BacklogManager extends ABacklogManager<BacklogManager> {
openBuffer = bufferId;
if (bufferId != -1)
client.bufferSyncer().requestMarkBufferAsRead(bufferId);
provider.sendEvent(new BufferChangeEvent());
provider.event.postSticky(new BufferChangeEvent());
}
@Override
......
......@@ -22,6 +22,7 @@
package de.kuschku.quasseldroid_ng.ui.chat;
import android.os.Bundle;
import android.support.annotation.IntRange;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
......@@ -33,18 +34,28 @@ import android.widget.FrameLayout;
import com.mikepenz.materialdrawer.AccountHeader;
import com.mikepenz.materialdrawer.AccountHeaderBuilder;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.model.ProfileDrawerItem;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import de.kuschku.libquassel.client.Client;
import de.kuschku.libquassel.events.ConnectionChangeEvent;
import de.kuschku.libquassel.events.GeneralErrorEvent;
import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
import de.kuschku.quasseldroid_ng.R;
import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread;
import de.kuschku.quasseldroid_ng.ui.chat.drawer.BufferItem;
import de.kuschku.quasseldroid_ng.ui.chat.drawer.BufferViewConfigItem;
import de.kuschku.quasseldroid_ng.ui.chat.drawer.NetworkItem;
import de.kuschku.quasseldroid_ng.ui.chat.fragment.ChatFragment;
import de.kuschku.quasseldroid_ng.ui.chat.fragment.LoadingFragment;
import de.kuschku.quasseldroid_ng.ui.chat.util.ActivityImplFactory;
import de.kuschku.quasseldroid_ng.ui.chat.util.ILayoutHelper;
import de.kuschku.quasseldroid_ng.ui.chat.util.Status;
import de.kuschku.quasseldroid_ng.ui.theme.AppTheme;
import de.kuschku.quasseldroid_ng.util.BoundActivity;
import de.kuschku.quasseldroid_ng.util.accounts.AccountManager;
......@@ -89,6 +100,8 @@ public class MainActivity extends BoundActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
new Settings(this).theme.set(AppTheme.QUASSEL_LIGHT.name());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
......@@ -96,6 +109,17 @@ public class MainActivity extends BoundActivity {
layoutHelper = ActivityImplFactory.of(getResources().getBoolean(R.bool.isTablet), this);
accountHeader = buildAccountHeader();
drawerLeft = layoutHelper.buildDrawer(savedInstanceState, accountHeader, toolbar);
drawerLeft.setOnDrawerItemClickListener((view, position, drawerItem) -> {
if (drawerItem instanceof NetworkItem) {
drawerLeft.getAdapter().toggleExpandable(position);
return true;
} else if (drawerItem instanceof BufferItem) {
int id = ((BufferItem) drawerItem).getBuffer().getInfo().id();
context.client().backlogManager().open(id);
return false;
}
return true;
});
replaceFragment(new LoadingFragment());
......@@ -150,18 +174,21 @@ public class MainActivity extends BoundActivity {
.withCompactStyle(true)
.withHeaderBackground(R.drawable.bg1)
.withProfileImagesVisible(false)
.withOnAccountHeaderListener((view, profile, current) -> {
selectBufferViewConfig((int) profile.getIdentifier());
return true;
})
.build();
}
public void onEventMainThread(ConnectionChangeEvent event) {
if (event.status == ConnectionChangeEvent.Status.CONNECTED) {
replaceFragment(new ChatFragment());
}
onConnectionChange(event.status);
}
public void onConnectionChange(ConnectionChangeEvent.Status status) {
if (status == ConnectionChangeEvent.Status.CONNECTED) {
replaceFragment(new ChatFragment());
updateBufferViewConfigs();
}
}
......@@ -169,6 +196,44 @@ public class MainActivity extends BoundActivity {
}
private void selectBufferViewConfig(@IntRange(from = -1) int bufferViewConfigId) {
assertNotNull(drawerLeft);
assertNotNull(accountHeader);
Client client = context.client();
assertNotNull(client);
status.bufferViewConfigId = bufferViewConfigId;
accountHeader.setActiveProfile(bufferViewConfigId, false);
if (bufferViewConfigId == -1) {
drawerLeft.removeAllItems();
} else {
drawerLeft.removeAllItems();
QBufferViewManager bufferViewManager = client.bufferViewManager();
assertNotNull(bufferViewManager);
QBufferViewConfig viewConfig = bufferViewManager.bufferViewConfig(bufferViewConfigId);
assertNotNull(viewConfig);
new BufferViewConfigItem(drawerLeft, viewConfig, context);
}
}
private void updateBufferViewConfigs() {
assertNotNull(context.client().bufferViewManager());
List<QBufferViewConfig> bufferViews = context.client().bufferViewManager().bufferViewConfigs();
accountHeader.clear();
for (QBufferViewConfig viewConfig : bufferViews) {
if (viewConfig != null) {
accountHeader.addProfiles(
new ProfileDrawerItem()
.withName(viewConfig.bufferViewName())
.withIdentifier(viewConfig.bufferViewId())
);
}
}
accountHeader.setActiveProfile(status.bufferViewConfigId, true);
}
@Override
protected void onConnectToThread(@Nullable ClientBackgroundThread thread) {
super.onConnectToThread(thread);
......
......@@ -41,36 +41,32 @@ import de.kuschku.libquassel.events.BufferChangeEvent;
import de.kuschku.libquassel.message.Message;
import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
import de.kuschku.quasseldroid_ng.R;
import de.kuschku.quasseldroid_ng.util.BoundFragment;
import de.kuschku.quasseldroid_ng.ui.chat.chatview.MessageAdapter;
import de.kuschku.quasseldroid_ng.ui.chat.util.SlidingPanelHandler;
import de.kuschku.quasseldroid_ng.util.BoundFragment;
import de.kuschku.util.observables.AutoScroller;
import de.kuschku.util.observables.lists.ObservableComparableSortedList;
import static de.kuschku.util.AndroidAssert.assertNotNull;
public class ChatFragment extends BoundFragment {
private SlidingPanelHandler panelHandler;
private MessageAdapter messageAdapter;
/**
* The list containing the messages to be displayed
*/
@Bind(R.id.messages)
RecyclerView messages;
@Bind(R.id.swipe_view)
SwipeRefreshLayout swipeView;
@Bind(R.id.sliding_layout)
SlidingUpPanelLayout sliderMain;
private MessageAdapter messageAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_chat, container, false);
panelHandler = new SlidingPanelHandler(getActivity(), (SlidingUpPanelLayout) view, context);
ButterKnife.bind(this, view);
new SlidingPanelHandler(getActivity(), sliderMain, context);
assertNotNull(messages);
......@@ -81,6 +77,13 @@ public class ChatFragment extends BoundFragment {
swipeView.setColorSchemeColors(context.themeUtil().res.colorPrimary);
swipeView.setEnabled(false);
swipeView.setOnRefreshListener(() -> {
Client client = context.client();
assertNotNull(client);
QBacklogManager<? extends QBacklogManager> backlogManager = client.backlogManager();
assertNotNull(backlogManager);
backlogManager.requestMoreBacklog(client.backlogManager().open(), 20);
});
return view;
}
......
......@@ -29,6 +29,7 @@ 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.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
......@@ -42,6 +43,7 @@ import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import butterknife.Bind;
import butterknife.ButterKnife;
import de.kuschku.libquassel.localtypes.buffers.Buffer;
import de.kuschku.quasseldroid_ng.R;
import de.kuschku.quasseldroid_ng.ui.editor.AdvancedEditor;
import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
......@@ -176,6 +178,31 @@ public class SlidingPanelHandler {
}
});
setChatlineExpanded(slidingLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED);
send.setOnClickListener(v -> sendInput());
chatline.setOnKeyListener((v, keyCode, event) -> {
if (event.getAction() == KeyEvent.ACTION_DOWN && (keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_NUMPAD_ENTER)) {
sendInput();
return true;
} else {
return false;
}
});
}
private void sendInput() {
if (context.client() == null) return;
int bufferId = context.client().backlogManager().open();
if (bufferId >= 0) {
Buffer buffer = context.client().bufferManager().buffer(bufferId);
assertNotNull(buffer);
String text = editor.toFormatString();
context.client().sendInput(buffer.getInfo(), text);
chatline.setText("");
}
}
private void setupHistoryFakeData() {
......
......@@ -26,5 +26,5 @@ import de.kuschku.util.instancestateutil.Store;
public class Status extends Storable {
@Store
int bufferViewConfigId = -1;
public int bufferViewConfigId = -1;
}
......@@ -268,7 +268,7 @@
<item name="colorBackground">#002B36</item>
<item name="colorBackgroundHighlight">#268bd2</item>
<item name="colorBackgroundSecondary">#073642</item>
<item name="colorBackgroundSecondary">#002B36</item>
<item name="colorBackgroundCard">#073642</item>
<item name="colorTintActivity">#88cc33</item>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment