use of de.geeksfactory.opacclient.objects.Account in project opacclient by opacapp.
the class MainActivity method onCreate.
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sp = PreferenceManager.getDefaultSharedPreferences(this);
String itemToSelect = null;
if (getIntent() != null && getIntent().getAction() != null) {
if (getIntent().getAction().equals("android.intent.action.VIEW")) {
urlintent();
} else if (getIntent().getAction().equals(ACTION_SEARCH) || getIntent().getAction().equals(ACTION_ACCOUNT)) {
String lib = getIntent().getStringExtra("library");
AccountDataSource adata = new AccountDataSource(this);
List<Account> accounts = adata.getAllAccounts(lib);
if (accounts.size() == 0) {
// Check if library exists (an IOException should be thrown otherwise, correct?)
try {
app.getLibrary(lib);
} catch (IOException | JSONException e) {
return;
}
Account account = new Account();
account.setLibrary(lib);
account.setLabel(getString(R.string.default_account_name));
account.setName("");
account.setPassword("");
long id = adata.addAccount(account);
selectaccount(id);
} else if (accounts.size() == 1) {
selectaccount(accounts.get(0).getId());
} else if (accounts.size() > 0) {
if (getIntent().getAction().equals(ACTION_ACCOUNT)) {
List<Account> accountsWithPassword = new ArrayList<>();
for (Account account : accounts) {
if (account.getName() != null && account.getPassword() != null && !account.getName().isEmpty() && !account.getPassword().isEmpty()) {
accountsWithPassword.add(account);
}
}
if (accountsWithPassword.size() == 1) {
selectaccount(accountsWithPassword.get(0).getId());
} else {
showAccountSelectDialog(accounts);
}
} else {
showAccountSelectDialog(accounts);
}
}
if (getIntent().getAction().equals(ACTION_SEARCH)) {
itemToSelect = "search";
} else {
itemToSelect = "account";
}
}
}
if (savedInstanceState == null) {
if (getIntent().hasExtra(EXTRA_FRAGMENT)) {
selectItem(getIntent().getStringExtra(EXTRA_FRAGMENT));
} else if (getIntent().hasExtra(ReminderBroadcastReceiver.EXTRA_ALARM_ID)) {
AccountDataSource adata = new AccountDataSource(this);
long alid = getIntent().getLongExtra(ReminderBroadcastReceiver.EXTRA_ALARM_ID, -1);
Alarm alarm = adata.getAlarm(alid);
if (alarm == null) {
throw new DataIntegrityException("Unknown alarm ID " + alid + " received.");
}
List<LentItem> items = adata.getLentItems(alarm.media);
if (items.size() > 0) {
long firstAccount = items.get(0).getAccount();
boolean multipleAccounts = false;
for (LentItem item : items) {
if (item.getAccount() != firstAccount) {
multipleAccounts = true;
break;
}
}
if (multipleAccounts) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
drawerLayout.openDrawer(drawer);
}
}, 500);
} else {
selectaccount(firstAccount);
selectItem("account");
}
}
} else if (itemToSelect != null) {
selectItem(itemToSelect);
} else if (sp.contains("startup_fragment")) {
selectItem(sp.getString("startup_fragment", "search"));
} else {
selectItem(0);
}
}
try {
if (nfc_capable) {
if (!getPackageManager().hasSystemFeature("android.hardware.nfc")) {
nfc_capable = false;
}
}
if (nfc_capable) {
mAdapter = android.nfc.NfcAdapter.getDefaultAdapter(this);
nfcIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter ndef = new IntentFilter(android.nfc.NfcAdapter.ACTION_TECH_DISCOVERED);
try {
ndef.addDataType("*/*");
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("fail", e);
}
intentFiltersArray = new IntentFilter[] { ndef };
techListsArray = new String[][] { new String[] { android.nfc.tech.NfcV.class.getName() } };
}
} catch (SecurityException e) {
e.printStackTrace();
}
if (app.getLibrary() != null) {
getSupportActionBar().setSubtitle(app.getLibrary().getDisplayName());
}
showUpdateInfoDialog();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setExitTransition(null);
}
}
use of de.geeksfactory.opacclient.objects.Account in project opacclient by opacapp.
the class MainActivity method urlintent.
public void urlintent() {
Uri d = getIntent().getData();
if (d.getHost().equals("opacapp.de")) {
String[] split = d.getPath().split(":");
String bib;
try {
bib = URLDecoder.decode(split[1], "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new AssertionError("UTF-8 is unknown");
}
if (app.getLibrary() == null || !app.getLibrary().getIdent().equals(bib)) {
AccountDataSource adata = new AccountDataSource(this);
List<Account> accounts = adata.getAllAccounts(bib);
if (accounts.size() > 0) {
app.setAccount(accounts.get(0).getId());
} else {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("https://de.opacapp.net/" + d.getPath()));
startActivity(i);
return;
}
}
String medianr = split[2];
if (medianr.length() > 1) {
Intent intent = new Intent(MainActivity.this, SearchResultDetailActivity.class);
intent.putExtra(SearchResultDetailFragment.ARG_ITEM_ID, medianr);
startActivity(intent);
} else {
String title;
try {
title = URLDecoder.decode(split[3], "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new AssertionError("UTF-8 is unknown");
}
Bundle query = new Bundle();
// TODO: This won't work with most modern APIs
query.putString("title", title);
Intent intent = new Intent(MainActivity.this, SearchResultListActivity.class);
intent.putExtra("query", query);
startActivity(intent);
}
finish();
}
}
use of de.geeksfactory.opacclient.objects.Account in project opacclient by opacapp.
the class OpacActivity method setupAccountSwitcher.
protected void setupAccountSwitcher() {
if (drawer == null || app.getAccount() == null)
return;
accounts = aData.getAllAccounts();
Account selectedAccount = app.getAccount();
final View header = drawer.getHeaderView(0);
accountExpand = (ImageView) header.findViewById(R.id.account_expand);
accountTitle = (TextView) header.findViewById(R.id.account_title);
accountSubtitle = (TextView) header.findViewById(R.id.account_subtitle);
accountWarning = (TextView) header.findViewById(R.id.account_warning);
accountData = (LinearLayout) header.findViewById(R.id.account_data);
View.OnClickListener l = new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleAccountSwitcher();
}
};
accountData.setOnClickListener(l);
// accountExpand.setOnClickListener(l);
final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(OpacActivity.this);
boolean show_toggle_notice = !sp.contains("seen_drawer_toggle_notice");
header.findViewById(R.id.toggle_notice).setVisibility(show_toggle_notice ? View.VISIBLE : View.GONE);
header.findViewById(R.id.btToggleNotice).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sp.edit().putBoolean("seen_drawer_toggle_notice", true).apply();
header.findViewById(R.id.toggle_notice).setVisibility(View.GONE);
}
});
accountsAdapter = new DrawerAccountsAdapter(this, accounts, app.getAccount());
drawer.setAccountsAdapter(accountsAdapter);
accountsAdapter.setListener(this);
updateAccountSwitcher(selectedAccount);
}
use of de.geeksfactory.opacclient.objects.Account in project opacclient by opacapp.
the class OpacActivity method selectaccount.
public void selectaccount() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Get the layout inflater
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_simple_list, null);
ListView lv = (ListView) view.findViewById(R.id.lvBibs);
AccountDataSource data = new AccountDataSource(this);
final List<Account> accounts = data.getAllAccounts();
AccountListAdapter adapter = new AccountListAdapter(this, accounts);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
app.setAccount(accounts.get(position).getId());
adialog.dismiss();
((AccountSelectedListener) fragment).accountSelected(accounts.get(position));
}
});
builder.setTitle(R.string.account_select).setView(view).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
adialog.cancel();
}
}).setNeutralButton(R.string.accounts_edit, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
Intent intent = new Intent(OpacActivity.this, AccountListActivity.class);
startActivity(intent);
}
});
adialog = builder.create();
adialog.show();
}
use of de.geeksfactory.opacclient.objects.Account in project opacclient by opacapp.
the class SearchResultListFragment method performGoogleSearch.
private void performGoogleSearch(final String query) {
AccountDataSource data = new AccountDataSource(getActivity());
final List<Account> accounts = data.getAllAccounts();
if (accounts.size() == 0) {
Toast.makeText(getActivity(), R.string.welcome_select, Toast.LENGTH_LONG).show();
} else if (accounts.size() == 1) {
startGoogleSearch(accounts.get(0), query);
} else {
new AlertDialog.Builder(getActivity()).setTitle(R.string.account_select).setAdapter(new AccountListAdapter(getActivity(), accounts).setHighlightActiveAccount(false), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startGoogleSearch(accounts.get(which), query);
}
}).create().show();
}
}
Aggregations