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

Fixed several issues regarding account login

parent bc52c5a8
Branches
Tags
No related merge requests found
......@@ -26,10 +26,13 @@ import android.support.annotation.IntRange;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.AppCompatEditText;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import com.mikepenz.materialdrawer.AccountHeader;
......@@ -46,6 +49,7 @@ 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.events.LoginRequireEvent;
import de.kuschku.libquassel.localtypes.BacklogFilter;
import de.kuschku.libquassel.message.Message;
import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
......@@ -61,6 +65,7 @@ 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.util.BoundActivity;
import de.kuschku.quasseldroid_ng.util.accounts.Account;
import de.kuschku.quasseldroid_ng.util.accounts.AccountManager;
import static de.kuschku.util.AndroidAssert.assertNotNull;
......@@ -205,11 +210,13 @@ public class MainActivity extends BoundActivity {
if (status == ConnectionChangeEvent.Status.CONNECTED) {
replaceFragment(new ChatFragment());
updateBufferViewConfigs();
} else if (status == ConnectionChangeEvent.Status.DISCONNECTED) {
finish();
}
}
public void onEventMainThread(GeneralErrorEvent event) {
Toast.makeText(this, event.exception.getClass().getSimpleName() + ": " + event.debugInfo, Toast.LENGTH_LONG).show();
}
private void selectBufferViewConfig(@IntRange(from = -1) int bufferViewConfigId) {
......@@ -316,4 +323,28 @@ public class MainActivity extends BoundActivity {
.show();
}
}
public void onEventMainThread(LoginRequireEvent event) {
if (event.failedLast) {
new MaterialDialog.Builder(this)
.title(R.string.labelLogin)
.customView(R.layout.dialog_login, false)
.onPositive((dialog1, which) -> {
View parent = dialog1.getCustomView();
assertNotNull(parent);
AppCompatEditText usernameField = (AppCompatEditText) parent.findViewById(R.id.username);
AppCompatEditText passwordField = (AppCompatEditText) parent.findViewById(R.id.password);
String username = usernameField.getText().toString();
String password = passwordField.getText().toString();
Account account = manager.account(context.settings().lastAccount.get());
manager.update(account.withLoginData(username, password));
})
.cancelListener(dialog1 -> finish())
.negativeColor(context.themeUtil().res.colorForeground)
.positiveText(R.string.labelLogin)
.negativeText(R.string.labelCancel)
.build().show();
}
}
}
......@@ -80,7 +80,7 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageViewHolder> {
@Override
public void onBindViewHolder(@NonNull MessageViewHolder holder, int position) {
Message msg = messageList.get(position);
Message msg = getItem(position);
assertNotNull(msg);
renderer.onBind(holder, msg);
......@@ -90,4 +90,8 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageViewHolder> {
public int getItemCount() {
return messageList.size();
}
public Message getItem(int position) {
return messageList.get(position);
}
}
......@@ -27,6 +27,7 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -59,7 +60,9 @@ public class ChatFragment extends BoundFragment {
SwipeRefreshLayout swipeView;
@Bind(R.id.sliding_layout)
SlidingUpPanelLayout sliderMain;
private MessageAdapter messageAdapter;
private LinearLayoutManager layoutManager;
@Nullable
@Override
......@@ -71,7 +74,8 @@ public class ChatFragment extends BoundFragment {
assertNotNull(messages);
messages.setItemAnimator(new DefaultItemAnimator());
messages.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true));
layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true);
messages.setLayoutManager(layoutManager);
messageAdapter = new MessageAdapter(getActivity(), context, new AutoScroller(messages));
messages.setAdapter(messageAdapter);
......@@ -89,6 +93,8 @@ public class ChatFragment extends BoundFragment {
}
public void onEventMainThread(BufferChangeEvent event) {
setMarkerline();
Client client = context.client();
if (client != null) {
QBacklogManager<? extends QBacklogManager> backlogManager = client.backlogManager();
......@@ -96,11 +102,43 @@ public class ChatFragment extends BoundFragment {
ObservableComparableSortedList<Message> messageList = backlogManager.filtered(id);
messageAdapter.setMessageList(messageList);
swipeView.setEnabled(id != -1);
int markerLine = client.bufferSyncer().markerLine(id);
for (int i = 0; i < messageList.size(); i++) {
if (messageList.get(i).messageId == markerLine) {
Log.d("DEBUG", "Load: " + markerLine + ":" + i);
messages.scrollToPosition(i);
break;
}
}
} else {
swipeView.setEnabled(false);
}
}
@Override
public void onPause() {
setMarkerline();
super.onPause();
}
private void setMarkerline() {
Client client = context.client();
if (client == null) return;
int buffer = client.backlogManager().open();
if (buffer == -1) return;
int messageposition = layoutManager.findFirstCompletelyVisibleItemPosition();
if (messageposition == -1) return;
Message message = messageAdapter.getItem(messageposition);
if (message == null) return;
client.bufferSyncer().requestSetMarkerLine(buffer, message.messageId);
Log.d("DEBUG", "Store: " + message.messageId + ":" + messageposition);
}
public void onEventMainThread(BacklogReceivedEvent event) {
Client client = context.client();
if (client != null && client.backlogManager().open() == event.bufferId) {
......
......@@ -48,4 +48,16 @@ public class Account {
public ServerAddress toAddress() {
return new ServerAddress(host, port);
}
public Account withLoginData(String user, String pass) {
return new Account(id, name, host, port, user, pass);
}
public Account withServerData(String host, int port) {
return new Account(id, name, host, port, user, pass);
}
public Account withName(String name) {
return new Account(id, name, host, port, user, pass);
}
}
......@@ -41,6 +41,10 @@ public class AccountManager {
helper.addAccount(account);
}
public void update(Account account) {
helper.updateAccount(account);
}
public void remove(String id) {
remove(UUID.fromString(id));
}
......
......@@ -29,9 +29,7 @@ import android.database.sqlite.SQLiteStatement;
import android.support.annotation.NonNull;
import android.util.Log;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
......@@ -104,6 +102,11 @@ public class AccountManagerHelper extends SQLiteOpenHelper {
return statement.executeInsert() != -1;
}
public boolean updateAccount(Account account) {
removeAccount(account.id);
return addAccount(account);
}
public boolean removeAccount(UUID id) {
return removeAccount(id.toString());
}
......
......@@ -41,10 +41,10 @@
android:paddingTop="@dimen/material_drawer_item_profile_icon_padding">
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/account_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/account_select" />
android:layout_gravity="center_vertical" />
</LinearLayout>
......@@ -83,4 +83,11 @@
android:textSize="@dimen/material_drawer_item_profile_description"
tools:text="kuschku on kuschku.de" />
</LinearLayout>
<!--
<ImageButton
android:layout_width="48dp"
android:layout_height="48dp"
android:src=""/>
-->
</LinearLayout>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment