Mercury-IM/app/src/main/java/org/olomono/messenger/ui/MainActivity.java

128 lines
4.2 KiB
Java
Raw Normal View History

2019-05-04 00:27:02 +02:00
package org.olomono.messenger.ui;
2019-04-14 18:12:04 +02:00
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import org.jxmpp.jid.impl.JidCreate;
2019-05-04 00:27:02 +02:00
import org.olomono.messenger.MessengerApplication;
2019-04-14 18:12:04 +02:00
import org.olomono.messenger.R;
import org.olomono.messenger.di.component.DaggerAppComponent;
import org.olomono.messenger.di.module.AppModule;
import org.olomono.messenger.di.module.RoomModule;
import org.olomono.messenger.persistence.database.AppDatabase;
import org.olomono.messenger.persistence.database.model.AccountModel;
import org.olomono.messenger.persistence.database.model.RosterEntryModel;
2019-04-22 04:54:02 +02:00
import org.olomono.messenger.persistence.repository.account.AccountRepository;
2019-05-04 00:27:02 +02:00
import org.olomono.messenger.persistence.repository.roster.RosterEntryRepository;
import org.olomono.messenger.ui.chat.ChatActivity;
import org.olomono.messenger.ui.login.LoginActivity;
import org.olomono.messenger.ui.settings.SettingsActivity;
2019-04-14 18:12:04 +02:00
import java.util.List;
import javax.inject.Inject;
public class MainActivity extends AppCompatActivity {
@Inject
public AccountRepository accountRepository;
@Inject
public RosterEntryRepository rosterEntryRepository;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
2019-05-04 00:27:02 +02:00
MessengerApplication.getApplication().getAppComponent().inject(this);
2019-04-14 18:12:04 +02:00
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AccountModel account = new AccountModel();
account.setJid(JidCreate.entityBareFromOrThrowUnchecked("alice@wonderland.lit"));
account.setPassword("swordfish");
2019-05-04 00:27:02 +02:00
2019-04-14 18:12:04 +02:00
accountRepository.insertAccount(account);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
2019-05-04 00:27:02 +02:00
switch (id) {
case R.id.action_settings:
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
return true;
case R.id.action_login:
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
return true;
case R.id.action_chat:
startActivity(new Intent(getApplicationContext(), ChatActivity.class));
return true;
2019-04-14 18:12:04 +02:00
}
return super.onOptionsItemSelected(item);
}
private void addRosterEntry(AppDatabase database, RosterEntryModel rosterEntry) {
new addRosterEntry(database).execute(rosterEntry);
}
private static class ifNoAccountsThen extends AsyncTask<Runnable, Void, Void> {
private final AppDatabase database;
public ifNoAccountsThen(AppDatabase database) {
this.database = database;
}
@Override
protected Void doInBackground(Runnable... runnables) {
2019-05-04 00:27:02 +02:00
List<AccountModel> accounts = database.accountDao().getAllAccounts().getValue();
2019-04-14 18:12:04 +02:00
if (accounts == null || accounts.size() == 0) {
runnables[0].run();
}
return null;
}
}
private static class addRosterEntry extends AsyncTask<RosterEntryModel, Void, Void> {
private AppDatabase database;
public addRosterEntry(AppDatabase database) {
this.database = database;
}
@Override
protected Void doInBackground(RosterEntryModel... rosterEntryModels) {
database.rosterEntryDao().addRosterEntry(rosterEntryModels[0]);
return null;
}
}
}