Før Oppgaver Steg 2

This commit is contained in:
ErolHaagenrud 2026-01-07 11:33:14 +01:00
parent 710a192951
commit c81310f982
9 changed files with 301 additions and 147 deletions

View file

@ -10,7 +10,6 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
@ -18,7 +17,6 @@ import java.util.List;
public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final int TYPE_HEADER = 0;
public static final int TYPE_CREATE_BUTTON = 1;
public static final int TYPE_SECTION_TITLE = 2;
public static final int TYPE_CALENDAR_ITEM = 3;
@ -44,7 +42,6 @@ public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@Override
public int getItemViewType(int position) {
Object item = items.get(position);
if (item instanceof HeaderItem) return TYPE_HEADER;
if (item instanceof CreateButtonItem) return TYPE_CREATE_BUTTON;
if (item instanceof SectionTitleItem) return TYPE_SECTION_TITLE;
if (item instanceof CalendarEvent) return TYPE_CALENDAR_ITEM;
@ -57,8 +54,6 @@ public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case TYPE_HEADER:
return new HeaderViewHolder(inflater.inflate(R.layout.item_home_header, parent, false));
case TYPE_CREATE_BUTTON:
return new CreateButtonViewHolder(inflater.inflate(R.layout.item_home_create_btn, parent, false));
case TYPE_SECTION_TITLE:
@ -76,10 +71,7 @@ public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
Object item = items.get(position);
if (holder instanceof HeaderViewHolder) {
((HeaderViewHolder) holder).btnProfile.setOnClickListener(v -> listener.onProfileClick());
}
else if (holder instanceof CreateButtonViewHolder) {
if (holder instanceof CreateButtonViewHolder) {
((CreateButtonViewHolder) holder).btnCreate.setOnClickListener(v -> listener.onCreateEventClick());
}
else if (holder instanceof SectionTitleViewHolder) {
@ -138,11 +130,6 @@ public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
// --- VIEW HOLDERS ---
static class HeaderViewHolder extends RecyclerView.ViewHolder {
ImageView btnProfile;
HeaderViewHolder(View v) { super(v); btnProfile = v.findViewById(R.id.btn_profile); }
}
static class CreateButtonViewHolder extends RecyclerView.ViewHolder {
Button btnCreate;
CreateButtonViewHolder(View v) { super(v); btnCreate = v.findViewById(R.id.btn_create_event); }
@ -179,8 +166,7 @@ public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
}
}
// --- WRAPPER KLASSER FOR FLATE LISTER ---
public static class HeaderItem {}
// --- WRAPPER KLASSER ---
public static class CreateButtonItem {}
public static class SectionTitleItem {
String title; boolean isCalendar;

View file

@ -173,15 +173,12 @@ public class HomeFragment extends Fragment implements HomeAdapter.OnHomeClickLis
private void buildAndDisplayList() {
List<Object> items = new ArrayList<>();
// 1. Header
items.add(new HomeAdapter.HeaderItem());
// 2. Create Event Knapp (hvis tilgang)
// 1. Create Event Knapp (hvis tilgang)
if (!UserManager.getInstance().getWriteableCalendars().isEmpty()) {
items.add(new HomeAdapter.CreateButtonItem());
}
// 3. Kalender Seksjon
// 2. Kalender Seksjon (Redusert til 3 hendelser som avtalt)
items.add(new HomeAdapter.SectionTitleItem("Kommende hendelser", true));
String today = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
int count = 0;
@ -193,7 +190,7 @@ public class HomeFragment extends Fragment implements HomeAdapter.OnHomeClickLis
if (count >= 3) break;
}
// 4. Nyheter Seksjon
// 3. Nyheter Seksjon
items.add(new HomeAdapter.SectionTitleItem("Siste nytt", false));
items.addAll(currentNews);
@ -201,12 +198,23 @@ public class HomeFragment extends Fragment implements HomeAdapter.OnHomeClickLis
recyclerView.setAdapter(adapter);
}
// --- KLIKKHÅNDTERING (Implementert fra HomeAdapter.OnHomeClickListener) ---
// --- KLIKKHÅNDTERING ---
@Override public void onProfileClick() { Navigation.findNavController(getView()).navigate(R.id.navigation_profile); }
@Override public void onCreateEventClick() { Navigation.findNavController(getView()).navigate(R.id.action_home_to_create_event); }
@Override public void onViewAllCalendarClick() { Navigation.findNavController(getView()).navigate(R.id.action_home_to_calendarFull); }
@Override public void onViewAllNewsClick() { Navigation.findNavController(getView()).navigate(R.id.action_home_to_newsFull); }
@Override public void onProfileClick() {
Navigation.findNavController(getView()).navigate(R.id.navigation_profile);
}
@Override public void onCreateEventClick() {
Navigation.findNavController(getView()).navigate(R.id.action_home_to_create_event);
}
@Override public void onViewAllCalendarClick() {
Navigation.findNavController(getView()).navigate(R.id.action_home_to_calendarFull);
}
@Override public void onViewAllNewsClick() {
Navigation.findNavController(getView()).navigate(R.id.action_home_to_newsFull);
}
@Override public void onCalendarItemClick(CalendarEvent event) {
CalendarDetailsBottomSheet sheet = new CalendarDetailsBottomSheet(event);

View file

@ -13,28 +13,34 @@ import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.navigation.NavController;
import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationView;
public class MainActivity extends AppCompatActivity {
public static final String GOOGLE_WEB_CLIENT_ID = BuildConfig.WEB_CLIENT_ID;
private static final String TAG = "MainActivity";
private NavController navController;
private BottomNavigationView bottomNav;
private DrawerLayout drawerLayout;
private AppBarConfiguration appBarConfiguration;
private ActivityResultLauncher<String> requestPermissionLauncher;
@ -43,112 +49,103 @@ public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// --- 1. SETUP UI & NAVIGASJON ---
bottomNav = findViewById(R.id.bottom_nav_view);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawerLayout = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
.findFragmentById(R.id.nav_host_fragment);
if (navHostFragment != null) {
navController = navHostFragment.getNavController();
if (bottomNav != null) {
NavigationUI.setupWithNavController(bottomNav, navController);
// Håndter "Reselection" (Klikk fanen man allerede er i)
bottomNav.setOnItemReselectedListener(item -> {
navController.popBackStack(item.getItemId(), false);
});
}
appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_calendar_full, R.id.navigation_tasks,
R.id.navigation_forms, R.id.navigation_news_full, R.id.navigation_handbook)
.setOpenableLayout(drawerLayout)
.build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
// Skjul meny login-skjerm
navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
if (bottomNav == null) return;
if (destination.getId() == R.id.navigation_login) {
bottomNav.setVisibility(View.GONE);
toolbar.setVisibility(View.GONE);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
} else {
bottomNav.setVisibility(View.VISIBLE);
toolbar.setVisibility(View.VISIBLE);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
});
}
// --- 2. VARSLINGSOPPSETT ---
updateNavHeader(navigationView);
createNotificationChannel();
requestPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
if (isGranted) {
Log.d(TAG, "Varslingstillatelse gitt!");
} else {
Log.e(TAG, "Varslingstillatelse avslått.");
}
});
requestPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {});
checkNotificationPermission();
checkExactAlarmPermission();
// GAMMEL METODE FJERNET HERFRA (NotificationWorker)
// --- 3. AUTENTISERING ---
checkLoginState();
}
private void updateNavHeader(NavigationView navigationView) {
View headerView = navigationView.getHeaderView(0);
TextView name = headerView.findViewById(R.id.nav_header_name);
TextView email = headerView.findViewById(R.id.nav_header_email);
new android.os.Handler().postDelayed(() -> {
UserManager user = UserManager.getInstance();
if (user.isLoggedIn()) {
name.setText(user.getUserDisplayName());
email.setText(user.getUserEmail());
}
}, 2000);
}
@Override
public boolean onSupportNavigateUp() {
return NavigationUI.navigateUp(navController, appBarConfiguration) || super.onSupportNavigateUp();
}
@Override
public void onBackPressed() {
if (drawerLayout != null && drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
private void checkLoginState() {
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
if (account == null) {
navigateToLogin();
} else {
refreshGoogleToken();
}
if (account == null) navigateToLogin();
else refreshGoogleToken();
}
private void refreshGoogleToken() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(GOOGLE_WEB_CLIENT_ID)
.requestEmail()
.build();
.requestIdToken(GOOGLE_WEB_CLIENT_ID).requestEmail().build();
GoogleSignInClient client = GoogleSignIn.getClient(this, gso);
client.silentSignIn()
.addOnSuccessListener(account -> {
String photoUrl = (account.getPhotoUrl() != null) ? account.getPhotoUrl().toString() : null;
AuthRepository.loginToWordPress(
account.getIdToken(),
account.getDisplayName(),
account.getEmail(),
photoUrl,
client.silentSignIn().addOnSuccessListener(account -> {
AuthRepository.loginToWordPress(account.getIdToken(), account.getDisplayName(), account.getEmail(),
(account.getPhotoUrl() != null ? account.getPhotoUrl().toString() : null),
new AuthRepository.AuthCallback() {
@Override
public void onSuccess(String role) {
Log.d(TAG, "Silent login fullført. Rolle: " + role);
if (navController != null && navController.getCurrentDestination() != null &&
navController.getCurrentDestination().getId() == R.id.navigation_login) {
@Override public void onSuccess(String role) {
if (navController.getCurrentDestination().getId() == R.id.navigation_login) {
navController.navigate(R.id.action_login_to_home);
}
}
@Override
public void onError(String message) {
Log.e(TAG, "Silent login feilet mot WP: " + message);
navigateToLogin();
}
}
);
})
.addOnFailureListener(e -> {
Log.e(TAG, "Silent Sign-In feilet mot Google", e);
navigateToLogin();
@Override public void onError(String message) { navigateToLogin(); }
});
}).addOnFailureListener(e -> navigateToLogin());
}
private void navigateToLogin() {
if (navController != null) {
if (navController.getCurrentDestination() != null &&
navController.getCurrentDestination().getId() != R.id.navigation_login) {
if (navController.getCurrentDestination().getId() != R.id.navigation_login) {
navController.navigate(R.id.navigation_login);
}
}
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@ -176,16 +173,9 @@ public class MainActivity extends AppCompatActivity {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if (alarmManager != null && !alarmManager.canScheduleExactAlarms()) {
new AlertDialog.Builder(this)
.setTitle("Varslingstillatelse kreves")
.setMessage("For at kalenderen skal kunne varsle deg nøyaktig når et møte starter, må du gi appen tilgang til å sette alarmer.")
.setPositiveButton("Gå til Innstillinger", (dialog, which) -> {
Intent intent = new Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
})
.setNegativeButton("Senere", null)
.show();
}
}
}

View file

@ -0,0 +1,33 @@
package com.kbs.kbsintranett;
import java.io.Serializable;
import java.util.UUID;
public class TaskItem implements Serializable {
private String id;
private String title;
private String description;
private long dueDate;
private boolean isCompleted;
private String assignedToEmail;
private String createdByEmail;
public TaskItem(String title, String description, long dueDate, String assignedToEmail) {
this.id = UUID.randomUUID().toString();
this.title = title;
this.description = description;
this.dueDate = dueDate;
this.assignedToEmail = assignedToEmail;
this.createdByEmail = UserManager.getInstance().getUserEmail();
this.isCompleted = false;
}
// Getters og Setters
public String getId() { return id; }
public String getTitle() { return title; }
public String getDescription() { return description; }
public long getDueDate() { return dueDate; }
public boolean isCompleted() { return isCompleted; }
public void setCompleted(boolean completed) { isCompleted = completed; }
public String getAssignedToEmail() { return assignedToEmail; }
}

View file

@ -0,0 +1,49 @@
package com.kbs.kbsintranett;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.ArrayList;
import java.util.List;
public class TasksFragment extends Fragment {
private RecyclerView recyclerView;
private List<TaskItem> taskList = new ArrayList<>();
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_tasks, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = view.findViewById(R.id.recycler_tasks);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
FloatingActionButton fab = view.findViewById(R.id.fab_add_task);
fab.setOnClickListener(v -> {
Toast.makeText(getContext(), "Ny oppgave-funksjon kommer her", Toast.LENGTH_SHORT).show();
});
loadTasks();
}
private void loadTasks() {
// Dummy data
taskList.clear();
taskList.add(new TaskItem("Husk å sjekke filter", "Serviceoppdrag hos kunde X", System.currentTimeMillis(), "meg@kbs.no"));
// Her vil vi senere koble en TaskAdapter
}
}

View file

@ -1,12 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
tools:openDrawer="start">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white"
android:elevation="4dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
@ -15,19 +30,20 @@
android:layout_height="0dp"
app:defaultNavHost="true"
app:navGraph="@navigation/mobile_navigation"
app:layout_constraintBottom_toTopOf="@id/bottom_nav_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
app:menu="@menu/bottom_nav_menu"
app:layout_constraintTop_toBottomOf="@id/toolbar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/drawer_menu" />
</androidx.drawerlayout.widget.DrawerLayout>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/kbs_very_light_blue">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_tasks"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
android:clipToPadding="false" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_add_task"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="24dp"
android:src="@android:drawable/ic_input_add"
app:backgroundTint="@color/kbs_logo_blue"
app:tint="@color/white"
android:contentDescription="Legg til oppgave" />
</FrameLayout>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="176dp"
android:background="@color/kbs_logo_blue"
android:gravity="bottom"
android:orientation="vertical"
android:padding="16dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/nav_header_image"
android:layout_width="64dp"
android:layout_height="64dp"
android:paddingTop="8dp"
android:src="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/nav_header_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:text="KBS Intranett"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textStyle="bold" />
<TextView
android:id="@+id/nav_header_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="intranett@kbs.no" />
</LinearLayout>

View file

@ -5,6 +5,7 @@
android:id="@+id/mobile_navigation"
app:startDestination="@+id/navigation_home">
<!-- LOGIN -->
<fragment
android:id="@+id/navigation_login"
android:name="com.kbs.kbsintranett.LoginFragment"
@ -17,10 +18,11 @@
app:popUpToInclusive="true" />
</fragment>
<!-- HJEM -->
<fragment
android:id="@+id/navigation_home"
android:name="com.kbs.kbsintranett.HomeFragment"
android:label="Hjem"
android:label="KBS Intranett"
tools:layout="@layout/fragment_home">
<action
android:id="@+id/action_home_to_calendarFull"
@ -31,25 +33,35 @@
<action
android:id="@+id/action_home_to_newsDetail"
app:destination="@id/navigation_news_detail" />
<!-- HER ER DEN MANGLENDE LINKEN: -->
<action
android:id="@+id/action_home_to_create_event"
app:destination="@id/navigation_create_event" />
<action
android:id="@+id/action_home_to_tasks"
app:destination="@id/navigation_tasks" />
</fragment>
<!-- NYTT FRAGMENT: Opprett hendelse -->
<!-- OPPGAVER (NYTT) -->
<fragment
android:id="@+id/navigation_create_event"
android:name="com.kbs.kbsintranett.CreateEventFragment"
android:label="Ny Hendelse"
tools:layout="@layout/fragment_create_event" />
android:id="@+id/navigation_tasks"
android:name="com.kbs.kbsintranett.TasksFragment"
android:label="Oppgaver"
tools:layout="@layout/fragment_tasks" />
<!-- KALENDER -->
<fragment
android:id="@+id/navigation_calendar_full"
android:name="com.kbs.kbsintranett.CalendarFullFragment"
android:label="Kalender"
tools:layout="@layout/fragment_calendar_full" />
<fragment
android:id="@+id/navigation_create_event"
android:name="com.kbs.kbsintranett.CreateEventFragment"
android:label="Ny Hendelse"
tools:layout="@layout/fragment_create_event" />
<!-- NYHETER -->
<fragment
android:id="@+id/navigation_news_full"
android:name="com.kbs.kbsintranett.NewsFullFragment"
@ -66,6 +78,7 @@
android:label="Nyhet"
tools:layout="@layout/fragment_news_detail" />
<!-- SKJEMAER -->
<fragment
android:id="@+id/navigation_forms"
android:name="com.kbs.kbsintranett.FormsListFragment"
@ -83,10 +96,11 @@
tools:layout="@layout/fragment_forms">
<argument
android:name="formId"
app:argType="integer"
android:defaultValue="0" />
android:defaultValue="0"
app:argType="integer" />
</fragment>
<!-- HÅNDBOK -->
<fragment
android:id="@+id/navigation_handbook"
android:name="com.kbs.kbsintranett.HandbookFragment"
@ -100,7 +114,7 @@
<fragment
android:id="@+id/navigation_handbook_detail"
android:name="com.kbs.kbsintranett.HandbookDetailFragment"
android:label="Håndbok Detaljer"
android:label="Detaljer"
tools:layout="@layout/fragment_handbook_detail">
<argument
android:name="page_id"
@ -108,16 +122,15 @@
<argument
android:name="page_title"
app:argType="string" />
<action
android:id="@+id/action_handbook_to_detail"
app:destination="@id/navigation_handbook_detail" />
<action
android:id="@+id/action_handbook_to_form"
app:destination="@id/navigation_forms_detail" />
</fragment>
<!-- PROFIL -->
<fragment
android:id="@+id/navigation_profile"
android:name="com.kbs.kbsintranett.ProfileFragment"