<item
        android:id="@+id/action_alarm"
        android:icon="@drawable/selector_alarm"
        android:title="Alarm"
        app:showAsAction="always"
        android:checkable="true"
        android:checked="false"/> eğer alarm kurulmuşsa alarm ikonunu on ile değiştir tekrar tıklandığında off olsun ve veritabanına remindertime'ı 0 yazsın ->package com.example.newflashcard;

import com.example.newflashcard.R.menu;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.graphics.Color;
import android.icu.util.Calendar;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentResultListener;

import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.bottomappbar.BottomAppBar;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.Locale;

/**
 * Flashcard düzenleme fragment'ı.
 * Kullanıcıların flashcard bilgilerini güncelleyebileceği arayüzü yönetir.
 */
public class FragmentEdit extends Fragment {

    private ScrollView scrollViewLayout;

    private EditText editTextCategory, editTextTitle, editTextContent;
    private MaterialToolbar fragmentToolbar;
    private BottomAppBar fragmentBottomAppBar;
    private TextView textViewTimestamp;
    private TextView updateViewTimestamp;

    private String flashcardId;
    private String category, title, content;
    private String backgroundColor; // Arka plan rengini tutar
    private Long timeStamp, updatedAt;
    private boolean isFavorite, isPinned;

    // Verilerin değişip değişmediğini takip etmek için bayrak.
    private boolean isDataChanged = false;

    private List<String> hashtags;
    private EditText hashtagsEditText;


    // FragmentResultListener anahtarını tanımlayın
    //private static final String REQUEST_KEY_UPDATE_TAGS = "requestKey_updateTags";
    // Benzersiz requestKey
    private static final String REQUEST_KEY_UPDATE_TAGS_EDIT = "requestKey_updateTags_edit";


    private Calendar selectedDateTime;
    private EditText editTextReminderTextView;

    private boolean isReminderSet = false;
    public long reminderTime;

    /**
     * Boş yapıcı metod.
     */
    public FragmentEdit() {
        // Gerekli boş yapıcı metod.
    }

    /**
     * Yeni bir instance oluşturur.
     *
     * @param id             Flashcard ID'si.
     * @param category       Kategori adı.
     * @param title          Başlık.
     * @param content        İçerik.
     * @param favorite       Favori durumu.
     * @param pinned         Sabit durumu.
     * @param timestamp      Oluşturulma zamanı.
     * @param updatedAt      Güncellenme zamanı.
     * @param backgroundcolor Arka plan rengi.
     * @param hashtags       Hashtag listesi.
     * @return Yeni FragmentEdit instance'ı.
     */
    public static FragmentEdit newInstance(String id, String category, String title, String content, boolean favorite, boolean pinned, long timestamp, long updatedAt, String backgroundcolor, ArrayList<String> hashtags) {
        FragmentEdit fragment = new FragmentEdit();
        Bundle args = new Bundle();
        args.putString("id", id);
        args.putString("category", category);
        args.putString("title", title);
        args.putString("content", content);
        args.putBoolean("favorite", favorite);
        args.putBoolean("pinned", pinned);
        args.putString("backgroundColor", backgroundcolor);
        args.putLong("timestamp", timestamp);
        args.putLong("updatedAt", updatedAt);
        args.putStringArrayList("hashtags", hashtags);
        fragment.setArguments(args);
        return fragment;
    }

    /**
     * Yeni bir instance oluşturur (yeni not).
     *
     * @return Yeni FragmentEdit instance'ı.
     */
    public static FragmentEdit newInstance() {
        FragmentEdit fragment = new FragmentEdit();
        Bundle args = new Bundle();
        // Yeni not için varsayılan değerler
        args.putString("id", null);
        args.putString("category", "");
        args.putString("title", "");
        args.putString("content", "");
        args.putBoolean("favorite", false);
        args.putBoolean("pinned", false);
        args.putString("backgroundColor", ""); // Varsayılan arka plan rengi
        args.putLong("timestamp", System.currentTimeMillis());
        args.putLong("updatedAt", System.currentTimeMillis());
        args.putStringArrayList("hashtags", new ArrayList<>());
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Eğer fragment içinde kendi menünüzü kullanıyorsanız setHasOptionsMenu'a gerek olmayabilir.
        // setHasOptionsMenu(true); // Gerekirse aktif edin.
        if (getArguments() != null) {
            SharedPreferencesManager sharedPreferencesManager = new SharedPreferencesManager(getActivity());
            boolean isNightModeEnabled = sharedPreferencesManager.isNightModeEnabled();

            // Arka plan rengi - boş olup olmadığını kontrol edin
            backgroundColor = getArguments().getString("backgroundColor", ""); // Varsayılan boş string

            int color;
            if (backgroundColor == null || backgroundColor.isEmpty()) {
                // Eğer arka plan rengi boşsa varsayılan bir renk kullanın (örneğin beyaz)
                color = ContextCompat.getColor(getActivity(), R.color.backgroundColor); // Buradaki R.color.default olsun tercih ettiğiniz varsayılan
            } else {
                // Arka plan rengi tanımlıysa, rengi çözümleyin
                try {
                    color = Color.parseColor(backgroundColor);
                } catch (IllegalArgumentException e) {
                    // Geçersiz renk koduysa varsayılan rengi kullan
                    color = ContextCompat.getColor(getActivity(), R.color.backgroundColor);
                }
            }

            // Gece ve gündüz modu renk dönüşümünü uygulayın
            if (isNightModeEnabled) {
                color = MainActivity.reverseColorMap.getOrDefault(color, color);
            } else {
                color = MainActivity.colorMap.getOrDefault(color, color);
            }

            // Diğer değerleri al
            flashcardId = getArguments().getString("id");
            category = getArguments().getString("category");
            title = getArguments().getString("title");
            content = getArguments().getString("content");
            isFavorite = getArguments().getBoolean("favorite");
            isPinned = getArguments().getBoolean("pinned");
            timeStamp = getArguments().getLong("timestamp");
            updatedAt = getArguments().getLong("updatedAt");
            hashtags = getArguments().getStringArrayList("hashtags");
            reminderTime=getArguments().getLong("reminderTime");

        }
        else
        {
            // Yeni not modunda
            category = "";
            title = "";
            content = "";
            isFavorite = false;
            isPinned = false;
            timeStamp = System.currentTimeMillis();
            updatedAt = System.currentTimeMillis();
            reminderTime = 0;
            hashtags = new ArrayList<>();
            backgroundColor = ""; // Varsayılan arka plan rengi
        }
    }

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_edit, container, false);

        selectedDateTime = Calendar.getInstance();
        editTextReminderTextView = view.findViewById(R.id.editTextReminderTextview);

        // Görünümleri başlat.
        editTextCategory = view.findViewById(R.id.editTextCategory);
        editTextTitle = view.findViewById(R.id.editTextTitle);
        editTextContent = view.findViewById(R.id.editTextContent);
        fragmentToolbar = view.findViewById(R.id.fragmentToolbar);
        fragmentBottomAppBar = view.findViewById(R.id.fragmentBottomAppBar);
        editTextReminderTextView = view.findViewById(R.id.editTextReminderTextview);
        textViewTimestamp = view.findViewById(R.id.textViewTimestamp);
        updateViewTimestamp = view.findViewById(R.id.textViewUpdatedAt);
        hashtagsEditText = view.findViewById(R.id.hashtagsEditTextView);
        scrollViewLayout = view.findViewById(R.id.scrollViewContent);

        // Menü'yü enflate et.
        fragmentToolbar.inflateMenu(R.menu.fragment_options_menu);

        // EditText ve diğer alanları doldur.
        editTextCategory.setText(category);
        editTextTitle.setText(title);
        editTextContent.setText(content);
        if(reminderTime !=0) {
            editTextReminderTextView.setVisibility(View.VISIBLE);
            editTextReminderTextView.setText(DateFormat.getDateTimeInstance().format(reminderTime));
        }
        else
            editTextReminderTextView.setVisibility(View.GONE);

        // Hashtag'ları virgülle ayrılmış şekilde EditText'e set et
        if (hashtags != null && !hashtags.isEmpty()) {
            String hashtagsString = TextUtils.join(", ", hashtags);
            hashtagsEditText.setText(hashtagsString);
        } else {
            hashtagsEditText.setText("");
        }

        // Tarihleri formatla ve set et
        Date date = new Date(timeStamp);
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.getDefault());
        textViewTimestamp.setText(sdf.format(date));

        Date updatedDate = new Date(updatedAt);
        SimpleDateFormat updatedSdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.getDefault());
        updateViewTimestamp.setText(updatedSdf.format(updatedDate));

        // Menü öğelerinin başlangıç durumunu ayarla.
        initializeMenuItem(R.id.action_fav, isFavorite);
        initializeMenuItem(R.id.action_pin, isPinned);

        // Menü öğeleri için tıklama dinleyicisi ayarla.
        fragmentToolbar.setOnMenuItemClickListener(this::handleMenuItemClick);

        // Veri değişimini takip etmek için TextWatcher ekle.
        SimpleTextWatcher simpleTextWatcher = new SimpleTextWatcher(() -> isDataChanged = true);
        editTextCategory.addTextChangedListener(simpleTextWatcher);
        editTextTitle.addTextChangedListener(simpleTextWatcher);
        editTextContent.addTextChangedListener(simpleTextWatcher);
        hashtagsEditText.addTextChangedListener(simpleTextWatcher); // Hashtag EditText için ekledik.

        // Eğer Not Güncelleniyorsa gelen arkaplan rengine göre not ekranı, toolbar ve bottomappbar rengini ayarla.
        if(getArguments() !=null){
            setNoteScreenColors(backgroundColor,fragmentToolbar,fragmentBottomAppBar);
        }
        return view;

    }

    @Override
    public void onResume() {
        super.onResume();

    }

    @Override
    public void onPause() {
        super.onPause();
        // Veri değişikliği varsa kaydet.
        if (isDataChanged) {
            saveChanges();
        }

        // Ana aktivitenin toolbar ve FAB'ını göster.
        if (getActivity() instanceof MainActivity) {

            //Not Düzenleme durumu ise
            if(getArguments() !=null){
                setNoteScreenColors("",fragmentToolbar,fragmentBottomAppBar);
                resetDefaultScreenColors(fragmentToolbar,fragmentBottomAppBar);
            }
            setNoteScreenColors("",fragmentToolbar,fragmentBottomAppBar);
            resetDefaultScreenColors(fragmentToolbar,fragmentBottomAppBar);
        }
    }

    /**
     * Menü öğesini başlatır ve ikonunu günceller.
     *
     * @param menuItemId Menü öğesinin ID'si.
     * @param isChecked  Menü öğesinin başlangıçta seçili olup olmadığı.
     */
    private void initializeMenuItem(int menuItemId, boolean isChecked) {
        MenuItem menuItem = fragmentToolbar.getMenu().findItem(menuItemId);
        if (menuItem != null) {
            menuItem.setChecked(isChecked);
            updateMenuIcon(menuItem, isChecked);
        }
    }

    /**
     * Menü öğesi tıklandığında işlemleri yönetir.
     *
     * @param item Tıklanan Menü öğesi.
     * @return İşlemin başarılı olup olmadığı.
     */
    private boolean handleMenuItemClick(MenuItem item) {
        int itemId = item.getItemId();

        if (itemId == R.id.action_fav) { // Favori durumunu tersine çevir.
            isFavorite = !isFavorite;
            item.setChecked(isFavorite);
            updateMenuIcon(item, isFavorite);
            isDataChanged = true;
            return true;
        } else if (itemId == R.id.action_pin) { // Sabit durumu tersine çevir.
            isPinned = !isPinned;
            item.setChecked(isPinned);
            updateMenuIcon(item, isPinned);
            isDataChanged = true;
            return true;
        } else if (itemId == R.id.action_changecolor) { // Renk değiştirme işlemini burada gerçekleştirin.
            showColorPaletteDialog();
            // isDataChanged'ı burada ayarlamayın, çünkü renk seçimi sonrası kaydedilecek
            return true;
        } else if (itemId == R.id.action_delete) { // Flashcard'ı sil.
            deleteFlashcard();
            return true;
        } else if (itemId == R.id.action_label) { // Etiket ekleme işlemini burada gerçekleştirin.
            //Toast.makeText(getContext(), "Labels clicked", Toast.LENGTH_SHORT).show();
            // Yeni etiket yönetim kodunuz
            openLabelListFragment();
            return true;
        }
        else if (itemId == R.id.action_alarm) { // Alarm sembolü için kontrol
            showDateTimePicker();
            isDataChanged = true; // Bu işlemin gerçekleştiğini işaretle
            return true;
        }
        return false;
    }

    /**
     * Menü öğesinin ikonunu günceller.
     *
     * @param item      Güncellenecek Menü öğesi.
     * @param isChecked Menü öğesinin seçili olup olmadığı.
     */
    private void updateMenuIcon(MenuItem item, boolean isChecked) {
        int itemId = item.getItemId();
        if (itemId == R.id.action_fav) {
            item.setIcon(isChecked ? R.drawable.ic_favorite_filled : R.drawable.ic_favorite_outlined);
        } else if (itemId == R.id.action_pin) {
            item.setIcon(isChecked ? R.drawable.ic_pin_filled : R.drawable.ic_pin_outlined);
        }
        // Diğer ikonlar için eklemeler yapabilirsiniz.
    }

    /**
     * Flashcard üzerindeki değişiklikleri kaydeder.
     */
    private void saveChanges() {
        category = editTextCategory.getText().toString().trim();
        title = editTextTitle.getText().toString().trim();
        content = editTextContent.getText().toString().trim();
        String hashtagsString = hashtagsEditText.getText().toString().trim();


        List<String> hashtagsList;

        if (!hashtagsString.isEmpty()) {
            // Hashtag'ları parse et
            hashtagsList = parseHashtags(hashtagsString);
        } else {
            // Hashtag metin kutusu boş ise boş liste ata
            hashtagsList = new ArrayList<>();
            hashtagsList.add("");
        }

        // Kategori veya başlık yoksa varsayılan değer ata
        if (category.isEmpty()) {
            category = "uncategorized";
        }
        if (title.isEmpty()) {
            title = "";
        }
        if (!content.isEmpty()) {

            long alarmTime = isReminderSet ? selectedDateTime.getTimeInMillis() : 0;

            //Eğer Yeni Bir Not Oluşturuluyorsa
            if (getArguments() == null || flashcardId == null) {
                // Yeni flashcard oluştur
                String id = FirebaseManager.getInstance().getUniqueKey(); // Benzersiz bir anahtar oluşturur
                String bgColor = backgroundColor != null ? backgroundColor : ""; // Seçilen veya varsayılan arka plan rengi
                long timestamp = System.currentTimeMillis(); // Şu anki zaman
                createFlashcard(id, category, title, content, isFavorite, isPinned, bgColor, timestamp, timestamp,alarmTime,hashtagsList);
                Toast.makeText(getActivity(), "Flashcard created", Toast.LENGTH_SHORT).show();
            } else {
                // Geçerli reminderTime'ı tutun veya yeni seçilen zaman
                alarmTime = isReminderSet ? selectedDateTime.getTimeInMillis() : reminderTime;
                updateFlashcard(flashcardId, category, title, content, isFavorite, isPinned, backgroundColor, hashtagsList,alarmTime);
                Toast.makeText(getActivity(), "Flashcard updated", Toast.LENGTH_SHORT).show();
            }

            isDataChanged = false;

        } else {
            Toast.makeText(getActivity(), "Please fill in all fields", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * Yeni bir Flashcard oluşturur
     *
     * @param id        Flashcard ID'si.
     * @param category  Kategori adı.
     * @param title     Başlık.
     * @param content   İçerik.
     * @param favorite  Favori durumu.
     * @param pinned    Sabit durumu.
     * @param hashtags  Hashtag listesi.
     */
    // Yeni bir flashcard oluşturma yöntemi
    private void createFlashcard(String id, String category, String title, String content, boolean favorite, boolean pinned, String backgroundColor, long timestamp, long updatedAt,long reminderTime, List<String> hashtags) {
        Flashcard flashcard = new Flashcard(id, category, title, content, favorite, pinned, backgroundColor, timestamp, updatedAt,reminderTime, hashtags);
        FirebaseManager.getInstance().addFlashcard(flashcard);
    }

    /**
     * Flashcard verisini günceller.
     *
     * @param id            Flashcard ID'si.
     * @param category      Kategori adı.
     * @param title         Başlık.
     * @param content       İçerik.
     * @param favorite      Favori durumu.
     * @param pinned        Sabit durumu.
     * @param backgroundColor Arka plan rengi.
     * @param hashtags      Hashtag listesi.
     */
    private void updateFlashcard(String id, String category, String title, String content, boolean favorite, boolean pinned, String backgroundColor, List<String> hashtags, long reminderTime) {
        Map<String, Object> updates = new HashMap<>();
        updates.put("category", category);
        updates.put("title", title);
        updates.put("content", content);
        updates.put("favorite", favorite);
        updates.put("pinned", pinned);
        updates.put("backgroundColor", backgroundColor); // Arka plan rengini ekle
        updates.put("hashtags", hashtags); // Hashtag'ları ekliyoruz
        updates.put("reminderTime",reminderTime);
        long currentTimestamp = System.currentTimeMillis();
        updates.put("updatedAt", currentTimestamp);
        FirebaseManager.getInstance().updateFlashcard(id, updates);
    }

    /**
     * Flashcard'ı siler.
     */
    private void deleteFlashcard() {
        FirebaseManager.getInstance().deleteFlashcard(flashcardId);
        Toast.makeText(getActivity(), "Flashcard deleted", Toast.LENGTH_SHORT).show();
        // Önceki fragment'a geri dön.
        requireActivity().getSupportFragmentManager().popBackStack();
    }

    /**
     * Kullanıcının girdiği hashtag stringini parse eder ve doğrular.
     * Her hashtag'ın '#' ile başladığından emin olur.
     *
     * @param hashtagsString Kullanıcı tarafından girilen hashtag stringi.
     * @return Doğru formatlanmış hashtag listesi.
     */
    private List<String> parseHashtags(String hashtagsString) {
        List<String> hashtagsList = new ArrayList<>();
        if (!hashtagsString.isEmpty()) {
            String[] splitHashtags = hashtagsString.split(",\\s*");
            for (String tag : splitHashtags) {
                if (!tag.startsWith("#")) {
                    tag = "#" + tag;
                }
                hashtagsList.add(tag);
            }
        }
        return hashtagsList;
    }

    public void setNoteScreenColors(String backgroundColor, Toolbar toolbar, BottomAppBar bottomAppBar) {
        // Night mode durumunu kontrol et
        SharedPreferencesManager sharedPreferencesManager = new SharedPreferencesManager(getActivity());
        boolean isNightModeEnabled = sharedPreferencesManager.isNightModeEnabled();

        // Varsayılan renkleri tanımla
        int defaultStatusBarColor = ContextCompat.getColor(getActivity(), R.color.navbar_color);
        int defaultToolbarColor = ContextCompat.getColor(getActivity(), R.color.primaryColor);
        int defaultBottomAppBarColor = ContextCompat.getColor(getActivity(), R.color.primaryColor);
        int defaultScrollViewLayoutColor = ContextCompat.getColor(getActivity(), R.color.backgroundColor);
        int defaultTextColor = ContextCompat.getColor(getActivity(), R.color.textColorPrimary);

        // Arka plan rengi var mı kontrol et
        int displayColor = defaultScrollViewLayoutColor;
        if (backgroundColor != null && !backgroundColor.isEmpty()) {
            try {
                int parsedColor = Color.parseColor(backgroundColor);

                if (isNightModeEnabled) {
                    // Gece modu için renk dönüştür
                    displayColor = MainActivity.reverseColorMap.getOrDefault(parsedColor, parsedColor);
                } else {
                    // Gündüz modu için renk dönüştür
                    displayColor = MainActivity.colorMap.getOrDefault(parsedColor, parsedColor);
                }
            } catch (IllegalArgumentException e) {
                // Geçersiz renk koduysa varsayılan rengi kullan
                displayColor = defaultScrollViewLayoutColor;
            }
        }

        // Arka plan rengiyle UI elementlerini güncelle
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getActivity().getWindow().setStatusBarColor(displayColor);
        }
        if (toolbar != null) {
            toolbar.setBackgroundColor(displayColor);
        }
        if (scrollViewLayout != null) {
            scrollViewLayout.setBackgroundColor(displayColor);
        }
        if (bottomAppBar != null) {
            bottomAppBar.setBackgroundColor(displayColor);
        }

        // Eğer arka plan rengi beyaz ise ve gece modundaysak, özel renklendirme yap
        if (isNightModeEnabled && (backgroundColor.equalsIgnoreCase("#FFFFFF") || backgroundColor.equalsIgnoreCase("#FFFFFFFF"))) {
            int whiteTextColor = ContextCompat.getColor(getActivity(), R.color.textColorPrimaryForWhiteBackgroundIssue);
            setContentTextColor(whiteTextColor);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                getActivity().getWindow().setStatusBarColor(whiteTextColor);
            }
            if (toolbar != null) {
                toolbar.setBackgroundColor(whiteTextColor);
            }
            if (bottomAppBar != null) {
                bottomAppBar.setBackgroundColor(whiteTextColor);
            }
        } else {
            // Varsayılan metin rengini ayarla
            setContentTextColor(defaultTextColor);
        }
    }

    // Fragment'tan çıkarken varsayılan renkleri geri yükleyin
    public void resetDefaultScreenColors(Toolbar toolbar, BottomAppBar bottomAppBar) {
        int defaultStatusBarColor = ContextCompat.getColor(getActivity(), R.color.navbar_color);
        int defaultToolbarColor = ContextCompat.getColor(getActivity(), R.color.primaryColor);
        int defaultBottomAppBarColor = ContextCompat.getColor(getActivity(), R.color.primaryColor);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getActivity().getWindow().setStatusBarColor(defaultStatusBarColor);
        }
        if (toolbar != null) {
            toolbar.setBackgroundColor(defaultToolbarColor);
        }
        if (bottomAppBar != null) {
            bottomAppBar.setBackgroundColor(defaultBottomAppBarColor);
        }
    }

    private void setContentTextColor(int color) {
        if (editTextContent != null) {
            editTextCategory.setTextColor(color);
            editTextTitle.setTextColor(color);
            editTextContent.setTextColor(color);
            hashtagsEditText.setTextColor(color);
        }
    }

    /**
     * Renk paleti dialogunu gösterir ve kullanıcı seçimini işler.
     */
    public void showColorPaletteDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        View dialogView = LayoutInflater.from(getActivity()).inflate(R.layout.color_picker_dialog, null);
        builder.setView(dialogView);

        GridLayout colorGrid = dialogView.findViewById(R.id.colorGrid);

        SharedPreferencesManager sharedPreferencesManager = new SharedPreferencesManager(getActivity());
        boolean isNightMode = sharedPreferencesManager.isNightModeEnabled();
        final int[] colors;

        if (isNightMode) {
            // GoogleKeep DarkTema Not Renkleri
            colors = new int[]{
                    R.drawable.ic_clear_color, // Rengi temizleme ikonu
                    0xFF232531, // Koyu mavi
                    0xFF482E5B, // Koyu mor
                    0xFF264D3B, // Koyu yeşil
                    0xFF274255, // Orta mavi
                    0xFF256476, // Açık mavi
                    0xFF232530, // Koyu gri
                    0xFF692A18, // Koyu kahverengi
                    0xFF76172D, // Koyu kırmızı
                    0xFF232428, // Koyu siyah
                    0xFF4B443A  // Orta kahverengi
            };
        } else {
            // GoogleKeep DayTema Not Renkleri

            colors = new int[]{
                    R.drawable.ic_clear_color, // Rengi temizleme ikonu
                    0xFFD3D6E3, // Açık mavi
                    0xFFE6D9ED, // Açık mor
                    0xFFD9E6DD, // Açık yeşil
                    0xFFD9E1E6, // Orta mavi
                    0xFFD9E6E9, // Açık mavi
                    0xFFD3D6E3, // Açık gri
                    0xFFE6D9D3, // Açık kahverengi
                    0xFFE6D3D9, // Açık kırmızı
                    0xFFD3D6E3, // Açık siyah
                    0xFFE6E3D9  // Orta kahverengi
            };

        }

        AlertDialog dialog = builder.create();

        // İlk renk öğesi (renk kaldırma)
        View firstColorItem = LayoutInflater.from(getActivity()).inflate(R.layout.color_item, null);
        ImageView firstColorIconImgView = firstColorItem.findViewById(R.id.colorIcon);
        firstColorIconImgView.setImageResource(colors[0]);
        firstColorItem.setOnClickListener(v -> {
            // Renk temizleme işlemi (varsayılan rengi geri yükle)
            backgroundColor = ""; // Varsayılan rengi temizle
            setNoteScreenColors(backgroundColor, fragmentToolbar, fragmentBottomAppBar);
            dialog.dismiss();

            // Eğer oluşturma modundaysa, sadece UI'yi günceller ve kaydetme aşamasında kullanılacak
            isDataChanged = true;
        });
        colorGrid.addView(firstColorItem, 0);

        // Diğer renkler
        for (int i = 1; i < colors.length; i++) {
            final int color = colors[i];
            View itemView = LayoutInflater.from(getActivity()).inflate(R.layout.color_item, null);
            ImageView colorIcon = itemView.findViewById(R.id.colorIcon);
            colorIcon.setBackgroundColor(color);

            itemView.setOnClickListener(v -> {
                String chosencolor = String.format("#%06X", (0xFFFFFF & color));
                backgroundColor = chosencolor; // Seçilen rengi kaydet

                // UI'yi güncelle
                setNoteScreenColors(backgroundColor, fragmentToolbar, fragmentBottomAppBar);

                dialog.dismiss();

                // Oluşturma modundaysa, sadece backgroundColor değişkeni güncellenir ve saveChanges() sırasında kullanılacak
                isDataChanged = true;
            });
            colorGrid.addView(itemView);
        }

        dialog.show();
    }
// FragmentEdit.java içinde openLabelListFragment metodu

    private void openLabelListFragment(){
        FirebaseManager.getInstance().getAllLabels(new FirebaseManager.OnLabelsFetchedListener(){
            @Override
            public void onLabelsFetched(List<String> allLabels){
                // Mevcut notun etiketlerini alın
                ArrayList<String> currentLabels = new ArrayList<>();
                if(hashtags != null){
                    currentLabels.addAll(hashtags);
                }

                // LabelListFragment'ı oluşturun ve benzersiz requestKey ile iletin
                LabelListFragment labelListFragment = LabelListFragment.newInstance(
                        new ArrayList<>(allLabels),
                        new ArrayList<>(), // Bu senaryoda selectedFlashcardIds gerekli değilse boş bırakabilirsiniz
                        currentLabels,
                        REQUEST_KEY_UPDATE_TAGS_EDIT // Benzersiz requestKey
                );

                // FragmentResultListener'ı ayarlayın
                getParentFragmentManager().setFragmentResultListener(
                        REQUEST_KEY_UPDATE_TAGS_EDIT,
                        getActivity(),
                        new FragmentResultListener(){
                            @Override
                            public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result){
                                if (REQUEST_KEY_UPDATE_TAGS_EDIT.equals(requestKey)) {
                                    ArrayList<String> updatedTags = result.getStringArrayList("updatedTags");
                                    if(updatedTags != null){
                                        // Etiketleri virgülle ayrılmış şekilde güncelleyin
                                        String updatedTagsString = TextUtils.join(", ", updatedTags);
                                        hashtagsEditText.setText(updatedTagsString);
                                        hashtags = updatedTags; // Etiket listesini güncelleyin
                                        isDataChanged = true;
                                        Toast.makeText(getContext(), "Etiketler güncellendi.", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            }
                        }
                );

                // LabelListFragment'ı açın
                getParentFragmentManager().beginTransaction()
                        .replace(R.id.edit_fragment_container, labelListFragment) // 'edit_fragment_container' ID'sini kullanın
                        .addToBackStack(null)
                        .commit();
            }
        });
    }
    private void showDateTimePicker() {
        // Tarih seçimi için DatePickerDialog
        DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
                (view, year, month, dayOfMonth) -> {
                    selectedDateTime.set(Calendar.YEAR, year);
                    selectedDateTime.set(Calendar.MONTH, month);
                    selectedDateTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);

                    // Saat seçimi için TimePickerDialog
                    TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(),
                            (view1, hourOfDay, minute) -> {
                                selectedDateTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
                                selectedDateTime.set(Calendar.MINUTE, minute);
                                selectedDateTime.set(Calendar.SECOND, 0);
                                editTextReminderTextView.setText(DateFormat.getDateTimeInstance().format(selectedDateTime.getTime()));
                                isReminderSet = true; // Zaman seçilmişse bayrağı ayarlayın
                                editTextReminderTextView.setVisibility(View.VISIBLE);
                            },
                            selectedDateTime.get(Calendar.HOUR_OF_DAY),
                            selectedDateTime.get(Calendar.MINUTE),
                            false);
                    timePickerDialog.show();
                },
                selectedDateTime.get(Calendar.YEAR),
                selectedDateTime.get(Calendar.MONTH),
                selectedDateTime.get(Calendar.DAY_OF_MONTH));
        datePickerDialog.show();
    }
}